Register a developer app in the Accela Developer Portal to obtain a client_id and client_secret for the target agency environment
Authenticate using the OAuth 2.0 client credentials flow: POST https://auth.accela.com/oauth2/token with grant_type=client_credentials, scope=records, client_id, and client_secret to receive an access_token
Search for permit records by address or parcel: GET https://apis.accela.com/v4/records with params: type=Building/Permits, address, customId, or parcelNumber in the query string, and the Authorization: Bearer header
Retrieve detailed record information including status, conditions of approval, and assigned inspector: GET https://apis.accela.com/v4/records/{recordId}
Fetch inspection history for a record: GET https://apis.accela.com/v4/records/{recordId}/inspections to see all scheduled and completed inspections with results
Download permit documents and attachments: GET https://apis.accela.com/v4/records/{recordId}/documents and follow the file download URLs in the response
Known gotchas
Each municipality configures its own Accela instance with a unique agency name; the API base URL and available record types vary per agency — always confirm the target agency identifier before constructing requests
The Accela OAuth token encodes the agency name and environment; tokens issued for one agency's sandbox will not work against another agency's production instance
Record type hierarchies (e.g., Building/Permits/Commercial/New) are agency-configurable and not standardized across municipalities — query the GET /v4/settings/records/types endpoint first to discover valid types for the specific agency
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp