Service Storm
Model Context Protocol

The Field Service MCP Server

Connect Claude or ChatGPT to your Service Storm company once, and the assistant you already use can look up a customer, check a schedule, price a job, or draft the quote — against live records, inside your existing permissions.

Service Storm connected over the Model Context Protocol to Claude and ChatGPT at https://mcp.servicestorm.io/mcp, with OAuth 2.1 PKCE, per-user permissions and per-call auditing

Model Context Protocol is the emerging open standard for letting an AI assistant use another system's real tools and data. Instead of pasting your job list into a chat window, you connect the system itself, and the assistant can call actual functions against actual records. Service Storm runs a hosted MCP server for exactly that, and it supports both Claude and ChatGPT.

The short version

Service Storm's MCP server lives at https://mcp.servicestorm.io/mcp. You connect it from inside Service Storm using OAuth — no API key to paste — and choose one of three access levels. At the highest level it exposes everything Otto's own specialists can call, close to a hundred tools, all filtered by your individual permissions. Every call is audited, and you can revoke a connection at any time.

What is MCP, in plain language?

Large language models are good at reasoning and bad at knowing anything specific about your business. For years the workaround was copy-and-paste: dump a spreadsheet into the chat and hope. MCP replaces that with a proper connection. The AI application — Claude, ChatGPT, or something you build yourself — talks to an MCP server, which advertises a list of tools it can call and the arguments each one takes. When you ask a question, the assistant picks the right tool and calls it.

The important consequence is that the answers are live. Ask what's on Thursday and the assistant queries Thursday, rather than recalling whatever you pasted in last week. And because tools can write as well as read, the assistant can do things — not merely describe them.

Why this matters for a service business

It means you don't have to choose between the software that runs your company and the assistant you actually enjoy using. Your estimator can price a job in the tool they already have open, and the quote lands in Service Storm where your crew, your invoices, and your accountant expect to find it.

What you can do through it

The tool surface follows Service Storm's own structure, so anything you can meaningfully ask about the business is reachable at the read level:

  • Look up customers, their properties, history, and open balances
  • Search jobs, visits, quotes, invoices, leads, and tasks
  • Read schedules, employee shifts, and job pipelines
  • Inspect your service catalog, materials, and pricing context
  • Pull quote and invoice detail, including billing summaries and payment state
  • Read contract templates, quote templates, and project notes

Grant the drafts level and it adds a small, carefully chosen set of reviewed write tools: creating a draft quote from one of your templates, editing a draft quote, creating and updating tasks, and creating and updating project notes. These are the writes that are cheap to undo and hard to embarrass you with.

Grant the top level — labelled "Run your business" on the consent screen — and the server exposes full parity with Otto: every tool Otto's specialists can call, gated by the same per-tool permission rules Otto uses, including write permission per tool, field-technician narrowing, and the job-relationship and field-note rules.

LevelScopeWhat it adds
Readmcp:readEvery read tool. Nothing in your business changes.
Draftsmcp:draftsDraft quote creation from a template, draft quote editing, task create and update, project-note create and update.
Run your businessmcp:writeFull Otto parity — every tool Otto's specialists can call, under the same per-tool permission gates.

You pick the level when you approve the connection, and it is shown plainly on the approval page before you confirm. Start at read. Move up when you trust it.

What is deliberately not exposed

Some things are missing from the MCP server on purpose, and some are missing for architectural reasons. Both lists are worth knowing.

By policy, no connected assistant at any level can send a message to your customer, collect a payment, or accept a quote or contract on someone's behalf. Those actions reach outside your company or move money, so they stay in the app and in human hands.

By architecture, a handful of Otto's abilities aren't hosted at all. The MCP gateway has no credential for the AI service's own database, so the catalog, configuration, field-execution, and service-plan handlers stay out of it. In practice that means starting, pausing, completing, and cancelling a visit remains something you do in the Service Storm app. New tools added to the internal registry stay denied until they've been reviewed into a group — the default is closed, not open.

Security: how the connection actually works

This is the part worth reading carefully, because "connect your business data to an AI assistant" deserves scrutiny.

You approve it, from inside Service Storm

Setup uses OAuth 2.1 with PKCE and dynamic client registration. There is no API key to generate, paste, store in a chat window, or leak. You start from Integrations → AI connections in Service Storm, sign in normally, and confirm which company the connection is bound to. Your normal company selector determines what gets approved, so a multi-company operator gets a separate, clearly-named connection per company rather than one key to everything.

The gateway can't impersonate you

The MCP service does not hold a login-signing secret and cannot mint Service Storm login tokens. The approved session credential is encrypted at rest inside its grant and sent only to the configured backend — it never appears in an MCP response, a UI response, a URL parameter, or an audit event. Your assistant receives opaque tokens that are stored only as hashes.

Short leashes on every token

CredentialLifetime
Access token15 minutes maximum
Refresh tokenRotates on use, 30 days maximum
Authorization codeTwo minutes
Pending consentTen minutes
The grant itselfNever outlives your approved Service Storm login session, and never exceeds 90 days

Reusing an authorization code or a refresh token revokes the whole token family — that's replay detection, and it means a stolen token is a dead token the moment the real one is used.

Permissions are checked every single time

Every HTTP request and every tool execution rechecks the grant, whether the user is locked, whether their membership is still active, and what their current permissions are. Remove someone from the company or change their role and their assistant's reach changes on the next call — you are not waiting for a token to expire. Each request also owns its own executor; no company API key or user token is held globally.

Everything is on the record

Each tool call writes audit rows — started, then success or error — and refusals from the permission policy write a denied row. Rows carry the grant, user, company, tool name, which assistant it came from, and how long it took. On errors they carry the class of error only. Arguments and record contents are never stored. Platform staff monitor these for connections probing past their scope, and a user's AI access can be suspended centrally, which takes effect on their next call.

One thing to check during setup

Your existing Service Storm automations still react to record changes the same way they always have. If you have an automation that fires when a quote is created, it will fire for a quote created through MCP too. Review your automations as part of connecting — that is a feature, but it should not be a surprise.

Getting connected

  1. In Service Storm, select the company you want to connect.
  2. Open Integrations → AI connections.
  3. Choose Connect to Claude or Connect to ChatGPT and follow the setup dialog.
  4. Sign in, confirm the company shown on the approval page, and choose your access level.
  5. Select the connection in a new conversation and ask it something real.

Connecting a second company means repeating the setup with that company selected; you'll end up with two clearly-named connections. Switching companies inside Service Storm never moves an existing connection to a different company.

Step-by-step setup guides

The exact clicks for each assistant, including the developer-mode step ChatGPT currently requires.

Set up Claude

Who this is for

If nobody at your company uses an AI assistant day to day, use Otto inside Service Storm and ignore this page — you get the same capability without the setup. The MCP server is for the growing group of owners, estimators, and operations managers who already live in Claude or ChatGPT and would rather bring their business into that window than tab away from it. It's also for technically-minded teams who want to build their own tooling against a real, permission-aware API surface.

A field service team using Service Storm

Your assistant. Your data. Your rules.

OAuth-approved, company-bound, permission-filtered, and audited on every call — with instant revocation when you want it back.

Frequently Asked Questions

Run jobs. Get paid.

Service Storm runs your whole field service business from one platform — lead to ledger.

Book a Demo