Model Context Protocol

Give your AI assistant live permit data

SignedOff is a remote MCP server. Connect it once and Claude, Cursor, Continue, or any MCP-capable agent can answer “what’s the status of my permit?” with live data from official city portals — no client code, no SDK.

https://signedoff.io/mcp

Works without a key against the demo dataset. Add a free API key for live data — get one in 30 seconds.

Three tools, zero glue code

get_permit_status

Live status of one permit. Jurisdiction auto-detected from the number format.

batch_permit_status

Up to 25 permits in one call. Individual misses don't fail the batch.

list_jurisdictions

Every supported city and county, with platform and state.

Setup

Claude Code

One command in your terminal:

claude mcp add --transport http signedoff "https://signedoff.io/mcp" \ --header "Authorization: Bearer YOUR_API_KEY"

Drop the --header flag to run in demo mode without a key.

Claude Desktop & claude.ai

Settings → Connectors → Add custom connector, then paste the server URL:

https://signedoff.io/mcp

Custom connectors added through the UI connect anonymously (demo dataset). For keyed access to live data, use Claude Code or the Claude API below.

Claude API (MCP connector)

Add to the mcp_servers block of a Messages API request:

{ "mcp_servers": [{ "type": "url", "url": "https://signedoff.io/mcp", "name": "signedoff", "authorization_token": "YOUR_API_KEY" }] }

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{ "mcpServers": { "signedoff": { "url": "https://signedoff.io/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }

Continue

Add to your Continue config.yaml:

mcpServers: - name: SignedOff type: streamable-http url: https://signedoff.io/mcp requestOptions: headers: Authorization: Bearer YOUR_API_KEY

Any other client (or just curl)

Streamable-HTTP transport, stateless, JSON responses. Auth via Authorization: Bearer or X-API-Key. Verify the endpoint from your shell:

curl -s -X POST "https://signedoff.io/mcp" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Try it

Once connected, ask your assistant:

What's the status of permit 25044-30000-03525?

That permit is in the demo dataset, so it works with or without an API key. Authenticated calls are metered exactly like REST — they appear in your dashboard call log.

Ready for live data?

Free tier, no credit card. Your key works for REST, webhooks, and MCP.

Get a free API key

Or read the full API docs · try the playground