Build a read-only connection for a building department or connect a private provider firm's software to its own registration.
Transport
HTTPS
Protocol
2026-07-28
Session
Stateless
Overview
FLPPR exposes a Model Context Protocol (MCP) service over HTTPS. Building departments read registration data; private provider firms read and submit updates for their own registration. FLPPR does not expose a separate public REST API.
Development MCP URL
https://mcp.dev.flppr.app/mcp
Production MCP URL at launch
https://mcp.flppr.app/mcp
Development health check
GET https://mcp.dev.flppr.app/health
Get an API Key
Firm administrators create keys under Firm → Settings → API Keys. Building department administrators create keys under Department → Setup → API Keys. Each key is shown once as prefix/secret.
registry:read
Available to building departments and private provider firms. Department keys are read-only by design.
sync:write
Available only to private provider firms. Selecting it in the portal also grants registry:read.
Choose 90 days, 1 year, or no expiry. Rotate or revoke a key from the same page. Rotation revokes the old key and shows the new secret once.
Authenticate
Send your key in Authorization: Bearer <prefix>/<secret>. Every call to /mcp also needs the protocol, method, and content-type headers below. Add Mcp-Name for a tool call.
Required MCP request headers
Header
Value
When
MCP-Protocol-Version
2026-07-28
Every call
Mcp-Method
Must match the JSON-RPC body method
Every call
Mcp-Name
Must match params.name
tools/call only
Content-Type
application/json
Every call
The service is stateless. Never send Mcp-Session-Id. You may send an optional x-request-id; otherwise FLPPR creates one.
Supported Mcp-Method values are tools/list, tools/call, prompts/list, prompts/get, resources/list, resources/read, resources/templates/list, and server/discover.
Any MCP-capable client can use these tools; the key decides what the client is allowed to do. Use the first block with clients that accept Claude Desktop or Cursor-style mcpServers configuration.
A firm's read key uses registry:read. The six read tools use the inputs and outputs documented above, with access narrowed as follows.
Firm access rules for read tools
Tool
Firm access
search_firms
Returns only the key owner's firm.
get_firm_registration
The firmId must be the key owner's firm.
get_professional_qualifications
Available with a firm read key.
get_jurisdiction_participation
A firm key may request any building department.
verify_license
Registry-wide, limited to licenses in a published firm registration.
get_registration_ledger
Returns only the key owner's firm rows.
Firm-only writes
Submit Firm Changes
Write tools use sync:writeand can affect only the key owner's firm. They submit proposed changes; a firm administrator completes them in the portal. Signatures are always human.
Reuse an idempotency key with the same payload to receive the original result with replayed: true. Reusing it with different content returns an idempotency-key payload mismatch.
sync_roster
Submit roster intent and request license matching.
Completion: The person signs in the portal. An inspection role requires dar, employee, and an attested employee-benefits relationship. A provisional-only professional needs a BCA supervisor.
sync_insurance
Submit policy facts against a certificate object that FLPPR has already scanned.
Completion: This tool requires a scanned certificate token issued by FLPPR support today. It is not self-serve.
Profile changes, certificate upload, signing, roster-entry termination, and key management stay in the portal.
Keeping in Sync
Poll get_registration_ledger. It returns newest changes first and provides a cursor for the next page. Refresh get_firm_registration for each changed firm.
Webhooks: Coming
Subscription Events
Today these events reach users by email and in the portal's notification feed. Webhook delivery is not available yet.
Live Events
firm_registered
firm_lapsed
firm_reactivated
roster_changed
coi_expiring
coi_expired
registration_ended
jurisdiction_withdrawal_pending
jurisdiction_withdrawn
jurisdiction_terminated
firm_closed
Reserved Events
license_status_changed
new_participating_firm
coi_expiring includes policy_id and expires_on.
Limits and Errors
Rate Limit
120 requests per minute, per key, per tool, measured by fixed calendar minute.
Request Size
Request bodies may be up to 256 KiB. Larger requests return HTTP 413.
HTTP 429 returns Retry-After seconds and a response body with error and auditId.
Every response includes x-request-idand an auditId. Include both when you contact [email protected]. Authentication failures return HTTP 401 with only { "error": "Unauthorized" }.
Data We Hold and Where It Comes From
The MCP service returns the same registration and state licensing data available in the FLPPR portal—nothing more. See About the Data for the official sources and sync details.
Support
Email [email protected] or choose Need help? in the app. Include the x-request-id and auditId for the failed request.