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 keyOr read the full API docs · try the playground