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 discover permits, resolve ambiguous numbers, inspect lifecycle details, and monitor changes using live data from official city portals — no client code, no SDK.
https://signedoff.io/mcp
Read tools work without a key against the demo dataset. Add a free API key for live data and watches — get one in 30 seconds.
Twelve permit 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.
search_permits
Discover permits by geography, parcel portfolio, location, type, date, value, or status.
resolve_permit
Resolve a permit number to a stable canonical ID without scraping.
get_canonical_permit
Read a tenant-neutral permit resource with field and collection provenance.
get_permit_inspections
Completed and pending inspections published by the source portal.
get_permit_conditions
Source-published conditions, holds, notices, and observation metadata.
get_permit_history
Status changes, correction classification, and workflow activities.
watch_permit
Idempotently start monitoring a permit for future events.
unwatch_permit
Stop monitoring one permit when the watch is no longer needed.
list_watches
List active watches and the API plan's remaining watch capacity.
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
Smithery is the registry agents browse to discover MCP servers.