---
name: iblai-connect-accela
description: "Read and write Accela Civic Platform data through the Accela Construct API (v4) and expose it to an ibl.ai agent as an MCP tool. Use when the user asks an agent to work with Accela Civic Platform data, or to set up an Accela Civic Platform MCP connection on ibl.ai."
metadata:
  kind: guide
---

# Accela Civic Platform connector for AI agents

> A starting point maintained on ibl.ai at https://ibl.ai/developer/connectors/accela — not part of the iblai/vibe repository. Checked against Accela's documentation on October 20, 2026; test it against your own Accela Civic Platform setup before you rely on it.

Accela Civic Platform runs permitting, licensing, inspections and code enforcement for state and local agencies. It holds records (permits, licenses, service requests), inspections, fees, payments, parcels, owners and documents.

## Auth & conventions

- **API:** Accela Construct API (v4) (REST). JSON REST API over Civic Platform: records and their fees, contacts, workflow tasks and documents; inspection scheduling and results; addresses, parcels and owners; search; settings; payments.
- **Base URL:** https://apis.accela.com/v4/
- **Access:** Public, self-serve. Any developer can sign in to the Accela Developer Portal and register an agency or citizen app to get an app ID and secret. Data access needs the agency name and environment from Accela support (hosted) or the agency's admin (on-premise).
- **Auth:** OAuth 2.0 authorization code; OAuth 2.0 implicit; OAuth 2.0 password credential; App credentials (x-accela-appid / x-accela-appsecret). Tokens come from https://auth.accela.com/oauth2/token with scopes such as records or inspections. Requests send the token in Authorization plus x-accela-appid, x-accela-agency and x-accela-environment headers. Some endpoints need no token.
- **Limits:** List endpoints page with limit and offset query parameters; fields= limits returned fields. Rate limits are not documented on the pages loaded.
- Keep Accela Civic Platform credentials in environment variables or the ibl.ai credential store. Never print a token in chat and never commit one to a file.
- Destructive or outward-facing calls are marked **Confirm with the user first** — do.

## Reads

- **Records** — GET /v4/records filters by type, status and module; GET /v4/records/{ids} returns specific records.
- **Inspections** — GET /v4/inspections, plus available dates and a record's inspections via /v4/records/{id}/inspections.
- **Fees and payments** — GET /v4/records/{id}/fees, /invoices and /payments for a record.
- **Parcels, addresses, owners** — GET /v4/parcels, /v4/addresses and /v4/owners, with links to related records.
- **Search** — POST /v4/search/records, /inspections, /parcels and other search resources.

## Writes

- **Create record** — POST /v4/records creates a record such as a permit application or service request.
- **Schedule or result inspection** — POST /v4/inspections/schedule; PUT /v4/inspections/{id}/result records an outcome.
- **Update workflow task** — PUT /v4/records/{recordId}/workflowTasks/{id} advances a record's workflow.
- **Add fees** — POST /v4/records/{recordId}/fees adds fees to a record. **Confirm with the user first.**
- **Delete records** — DELETE /v4/records/{ids} removes records. **Confirm with the user first.**

## Expose it to an ibl.ai agent (MCP)

Accela did not publish an MCP server of its own when this skill was checked. Host a small MCP server that wraps the calls above, then register it below.

First install the ibl.ai platform skills and connect your organization (writes `IBLAI_ORG`, `IBLAI_USERNAME` and `IBLAI_API_KEY` to `.env`):

```bash
npx skills add iblai/vibe --all
# then, in your coding agent:
/iblai-api-login
```

Every call below sends `Authorization: Api-Token $IBLAI_API_KEY`.

1. **Register the server** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-servers/` with `name`, `url`, `transport` (`sse` | `websocket` | `streamable_http`) and `auth_type` (`none` | `token` | `oauth2`). Capture the returned `id`.
   - Accela Civic Platform supports per-user OAuth: `auth_type=oauth2` with `auth_scope=user` and a linked `oauth_service` makes each person connect their own account in the chat. It needs an `auth_{provider}` credential in the organization's credential store first.
2. **Create the connection** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-server-connections/` with `server`, `scope` (`platform` | `mentor` | `user`), `auth_type`, and either `credentials` + `authorization_scheme` or a `connected_service` id for OAuth. Credentials are masked on read; never send a masked value back.
3. **Enable it on the agent** — `GET https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mentors/{agent_id}/settings/`, add `mcp-tool` to `tool_slugs` and the server id to `mcp_servers`, then `PATCH` the full lists back. They are replaced, not merged.

Full reference: https://ibl.ai/developer/platform/mcp/mcp-connections and the `/iblai-api-agent-mcp` skill.

## Example prompts

- "List building permits submitted this week that are still in intake review"
- "Schedule a final electrical inspection for record 24-BLD-00731 next Tuesday"
- "What fees are unpaid on permit 25-ROW-00112?"
- "Find all open code enforcement cases on parcel 0123-456-789"

## Guardrails

- Records carry applicant and property-owner PII and can include payment data subject to PCI rules. Many permit records are also public records under state law.
- Request the narrowest Accela Civic Platform scopes or role the task needs, and prefer a read-only credential for agents that only answer questions.
- Return the fields the user asked for, not whole records; do not paste personal data into chat that the user did not request.
- Before any write, show the user exactly what will change and wait for a yes.
- Respect the documented limits above: page through results and back off on rate-limit responses instead of retrying in a loop.

## References

- Accela API Reference (v4): https://developer.accela.com/docs/api_reference/api-index.html
- Accela API Authentication: https://developer.accela.com/docs/construct-apiAuth.html
- Your First Accela API Call: https://developer.accela.com/docs/construct-firstApiCall.html
- This connector on ibl.ai: https://ibl.ai/developer/connectors/accela
- ibl.ai MCP server connections: https://ibl.ai/developer/platform/mcp/mcp-connections
