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 key

Or read the full API docs · try the playground

Listed on Smithery

Smithery is the registry agents browse to discover MCP servers.