AI Assistants
Connect Servelo to the AI assistant you already use and run your business from a chat: close tickets, create tickets and clients, build and send quotes and invoices, record payments, log expenses, and ask questions about your work. Servelo connects through MCP, the open standard for linking AI assistants to apps, so it isn't tied to one assistant.
Which assistants work
Any AI app that supports remote MCP connectors with sign-in (OAuth) can connect. Apps that also support MCP Apps show Servelo's forms right in the chat; others ask you for the details in the chat instead.
| Assistant | Forms in the chat | Status |
|---|---|---|
| Claude (web, desktop, mobile) | Yes | Tested |
| Claude Code | No, asks in the chat | Tested |
| ChatGPT | Expected (supports MCP Apps) | Setup steps below; we're still testing it |
| Gemini (app and CLI) | Not yet known | Setup steps below; we're still testing it |
| Other MCP apps | Depends on the app | Should work with the connector URL |
Connect your assistant
Every assistant uses the same connector URL:
https://serveloapp.com/mcp
When you add it, the assistant opens a Servelo sign-in page. Sign in to your workspace and click Approve. Each person connects with their own login, and the assistant gets only that person's permissions. Admins can copy the URL from Settings > Integrations > AI assistants.
Claude
- In Claude (claude.ai or the desktop app), open Settings > Connectors and choose Add custom connector.
- Name it Servelo and enter
https://serveloapp.com/mcp. - Click Connect, sign in to Servelo, and click Approve.
The connector then also works in the Claude mobile apps. Servelo's commands appear in Claude's + menu under Servelo. You need a Claude plan that supports custom connectors. On a Claude Team or Enterprise plan, an owner of your Claude organization may need to add the connector first.
Claude Code
Run this in a terminal, then start Claude Code and use /mcp to sign in:
claude mcp add --transport http servelo https://serveloapp.com/mcp
Claude Code doesn't show forms, so it asks for the details in the chat and confirms before saving.
ChatGPT
- In ChatGPT, open Settings > Apps & Connectors, then Advanced settings, and turn on Developer mode. This needs a paid plan (Plus, Pro, Business, Enterprise, or Edu).
- Choose Create (or Add custom connector), name it Servelo, enter
https://serveloapp.com/mcp, and choose OAuth for authentication. - Sign in to Servelo and click Approve.
- In a new chat, click +, choose Developer mode, and pick Servelo.
Gemini
Gemini app: open Settings & help > Connected Apps, choose Add a custom app, enter https://serveloapp.com/mcp, and follow the prompts to sign in to Servelo and approve.
Gemini CLI: add Servelo to ~/.gemini/settings.json, then start Gemini CLI. It opens your browser to sign in the first time.
{
"mcpServers": {
"servelo": {
"httpUrl": "https://serveloapp.com/mcp",
"oauth": { "enabled": true }
}
}
}
Other assistants
Add a remote MCP server (sometimes called a custom connector or custom app) with the URL https://serveloapp.com/mcp and OAuth sign-in. Servelo supports dynamic client registration, so the app registers itself; there's no API key to copy.
How it works
Once connected, you can work three ways, and mix them in one conversation:
- Start an action. Say it ("new ticket", "close ticket", "who owes me") or pick it from your assistant's command menu. A form appears in the chat.
- Ask a question. "What's open for Riverside Dental?" or "How did September go?"
- Describe a change. "Set ticket 1042 to 2 hours." For anything that closes a ticket or goes to a customer, the assistant uses the matching form so you can check it first.
Forms follow the same pattern everywhere:
- If the action works on something that already exists (a ticket, client, quote, or invoice), you pick it from a list. Tickets scheduled today come first, and a filter box narrows the list, so you never need to know a ticket number.
- The form opens filled in from your data, plus anything you already said ("new ticket for Dana Lee, printer offline").
- Nothing is saved until you click the form's button. It saves exactly the way the Servelo app does: same emails, revenue, fees, calendar events, and audit log.
- Afterward the form offers next steps, like Schedule it after a new ticket or Send a receipt after marking an invoice paid.
In assistants that can't show forms, the assistant asks for the same details in the chat and confirms before saving.
Commands
Each command starts the same way whether you say its name or pick it from your assistant's menu (in Claude, the + menu under Servelo).
| Command | Starts with | What it does |
|---|---|---|
| Close a ticket | Your open tickets | Closes a ticket with the closing comment, hours, charge, payment, and fee |
| New ticket | The form | Creates a ticket for an existing client or a new one |
| Update a ticket | Your open tickets | Changes any detail of a ticket |
| Add a note | Your open tickets | Adds an internal note, or messages the customer |
| Schedule a visit | Your open tickets | Sets the visit date, time, and tech |
| Create a follow-up | All tickets | Creates a linked follow-up ticket for the same client |
| Pin or unpin a ticket | Your open tickets | Pins a ticket to the dashboard, or unpins it |
| New client | The form | Adds a client |
| Update a client | Your clients | Changes a client's contact details |
| Look up a client | Your clients | Shows their details, recent tickets, and balance |
| New quote | The form | Builds a quote from your price book |
| Send a quote | Draft and sent quotes | Emails a quote to the customer |
| New invoice | Your tickets (or start without one) | Builds an invoice from a ticket or from scratch |
| Send an invoice | Unpaid invoices | Emails an invoice, or resends it as a reminder |
| Mark an invoice paid | Unpaid invoices | Records the payment and processing fee |
| Send a receipt | Paid invoices | Emails a receipt |
| Log an expense | The form | Records an expense |
| Log revenue | The form | Records income that didn't come through a ticket or invoice |
| My schedule | A view | Your visits for the next 7 days |
| Who owes me | A view | Unpaid invoices and unpaid jobs, oldest first |
Ticket actions
Close a ticket
The same as the Close button in Servelo. Prefilled with the charge (from the ticket, or its invoice or accepted quote), round-trip miles from your start location in My Account when the ticket has none, the payment method with its fee estimated from the method's rate, lead fee, hours, work type, and assigned tech.
- Required: closing comment, hours worked, work type, assigned tech
- Closing comment: internal by default; choose Public to email it to the customer
- Mark as paid: records the revenue entry, once per job
- Payment fee: type the real fee from your processor's receipt and it's kept as the real fee; otherwise it's estimated
- Unpin from the dashboard: offered when the ticket is pinned
New ticket
- Client: pick an existing client (with a filter box), or choose + New client and fill in their name or company, phone, email, and address right in the form. The client is created along with the ticket.
- Title (required), description, priority, work type, assigned tech (defaults to you), and visit time
- Setting a visit time marks the ticket Scheduled and adds it to your synced calendar
Update a ticket
Title, description, status, priority, work type, assigned tech, visit time, charge, hours, miles, lead fee, payment method, and internal notes. Only what you change is saved. Status can't be set to Closed here; closing always goes through Close a ticket.
Add a note
An internal note only staff can see, or a customer message that emails them (the form tells you if the client has no email on file).
Schedule a visit
Date and time (required) and assigned tech. An open or in-progress ticket becomes Scheduled.
Create a follow-up
A new, numbered ticket for the same client, linked to the original. Title (prefilled "Follow-up: ..."), description, priority, tech, and visit time.
Pin or unpin a ticket
Pinned tickets show on the dashboard regardless of date.
Client actions
New client
First and last name, company, phone, email, address, how they found you, and notes. A name or company is required. Afterward you can start a ticket or quote for them in one click.
Update a client
Name, company, phone, email, address, how they found you, and notes. Anything you don't change stays as it was.
Look up a client
Their address, lifetime revenue, what they owe, and notes, plus their recent tickets (with Update and Close buttons) and unpaid invoices (with Mark paid and Resend). Buttons start a new ticket or quote for them.
Quote and invoice actions
New quote
- Client (or + New client) and, optionally, the ticket it's for
- Line items: description, quantity, and price, or add them from your price book. The total updates as you go.
- Tax (in dollars), valid-until date (30 days out by default), and notes for the customer
- Saved as a draft; Send it is offered right after
Send a quote
The email address (prefilled from the client), an optional message, and a copy to you.
New invoice
Pick a ticket, or start without one. From a ticket, the line items are copied from its accepted quote, or from its charge if there's no quote. The due date follows your payment terms. Saved as a draft with Send it and Mark it paid offered next.
Send an invoice
Emails an unpaid invoice, or resends it as a reminder. Paid invoices use Send a receipt instead.
Mark an invoice paid
Choose the payment method and the fee is estimated from its rate (see Processing Fees), or type the real fee. Marking an invoice paid also marks its ticket paid and closes it, and records the revenue once (it won't duplicate revenue already recorded when the ticket was closed).
Send a receipt
Emails a receipt for a paid invoice.
Money actions
Log an expense
What it was and the amount (required), date (today by default), category, the account it was paid from, an optional ticket, and notes.
Log revenue
Description and amount (required), date, category, and an optional client. Paid tickets and invoices already record their own revenue, so use this only for income that didn't come through one.
Views
My schedule
Every visit in the next 7 days, grouped by day with time, client, address, and tech. Each visit has Close, Note, and Reschedule buttons.
Who owes me
The total outstanding, then unpaid invoices oldest first (marked Overdue 14 days past due) with Mark paid and Send reminder, and closed jobs that were never paid or invoiced, with Create invoice.
Questions your assistant can answer
| Area | Examples |
|---|---|
| Tickets | "What's open for Maple Street Clinic?", "Show me ticket 1042", "What's in progress?" |
| Clients | "What's on file for Dana Lee?", "Find the client with phone 727-555-0100" |
| Quotes and invoices | "Which invoices are unpaid?", "What did we quote Harbor Auto?" |
| Assets | "What equipment does Coastal Realty have?" |
| Money | "How's this month looking?", "What did I spend on parts in September?", "What revenue came in last week?" |
| Team | "Who are my technicians?" |
| Anything | "Search for anything about the Synology NAS" |
What the connector can't do
- Delete anything (tickets, clients, quotes, invoices, expenses, or revenue)
- Change users, roles, billing, or your plan
- Change settings or security (passwords, two-factor, SSO, connected apps)
- Close a ticket any way other than the Close flow, so the required closing details are always collected
- Upload photos or files, or collect signatures. Use the Servelo app for those
Permissions and privacy
- Your permissions only. Every request runs as the person who connected. A technician's assistant can do what that technician can do in Servelo, nothing more.
- One workspace. A connection is tied to the workspace you signed in to and can't reach any other.
- You confirm before it saves. Forms save only when you click their button. Without a form, the assistant confirms first, especially before anything emails a customer.
- Logged. Every action appears in the Audit Log under your name.
- Stops automatically. If a user is deactivated or the workspace is suspended, their connections stop working immediately.
- Only what you ask for. The assistant reads Servelo data only when a conversation needs it. Servelo doesn't use your data to train AI models. How your assistant handles conversation data is covered by your agreement with its provider.
Workspace controls (admins)
Admins decide who can connect from Settings > Integrations > AI assistants. Under Who can connect, pick one:
| Setting | What happens |
|---|---|
| Everyone (default) | Any user in the workspace can connect an assistant with their own permissions. |
| Admins only | Only admins can connect. Existing connections from other users stop working right away. |
| Off | No one can connect, and every existing connection stops working right away. |
Changing the setting doesn't delete anyone's connection. If you switch back to Everyone, paused connections start working again without anyone reconnecting. To remove a connection for good, use Disconnect. The same card lists every active connection in the workspace (whose it is, which app, and when it was last used). Changes to the setting and admin disconnects are recorded in the Audit Log.
Manage your connections
Admins manage their own connections, along with everyone else's, in Settings > Integrations. Everyone else sees and removes their own under My Account > Connected Apps. Each app appears once with when it was connected and last used; for example, Claude on the web and Claude Code count as separate apps. Disconnect revokes access immediately. You can also remove the connector in your assistant's own settings, but disconnecting in Servelo is what guarantees access is cut off.
Troubleshooting
| What you see | What to do |
|---|---|
| The assistant doesn't know a command, or says a Servelo tool isn't available | Disconnect and reconnect the connector in your assistant. It remembers the command list from when you connected. |
| "Your workspace admin has turned off connected apps" | An admin has set Who can connect to Off. Ask them to turn it back on. |
| "Your workspace admin has limited connected apps to admins" | Only admins can connect right now. Ask an admin to switch the setting to Everyone. |
| The assistant says the Servelo connector needs to be reconnected | The connection was disconnected, went unused for 90 days, or your account was deactivated. Reconnect from your assistant's settings. |
| No form appears, just questions | Your assistant doesn't show MCP Apps forms (or that part isn't supported there yet). Answer in the chat; it saves the same way. |
| It can't find a record you can see | Make sure you signed in to the right workspace when connecting. Check My Account > Connected Apps in that workspace. |
| An action fails with a permission error | The assistant has your role's permissions. If you can't do it in Servelo, it can't either. |
Technical details
| Item | Value |
|---|---|
| Connector URL | https://serveloapp.com/mcp |
| Transport | MCP Streamable HTTP |
| Sign-in | OAuth 2.1 with PKCE (S256) and dynamic client registration; discovery at /.well-known/oauth-authorization-server |
| Forms | MCP Apps (2026-01-26): ui://servelo/action-form and ui://servelo/close-ticket |
| Form tools | open_form (19 actions), submit_form, prepare_close_ticket, close_ticket |
| Read tools | list_tickets, get_ticket, list_customers, get_customer, list_quotes, get_quote, list_invoices, get_invoice, list_assets, get_asset, list_technicians, list_revenue, list_expenses, get_dashboard_summary, search |
| Direct write tools | create_ticket, update_ticket (can't close), add_ticket_comment, pin_ticket, create_customer, update_customer, create_quote, create_invoice |
| Commands menu | MCP prompts, one per action plus Close a ticket |
See the API Reference for developer details.