Reference
HTTP API reference
The anonymous public endpoints — the rule bundle, the verified-accountant directory, and the agent index files — plus where the OAuth-gated MCP server fits.
OpenAccountants exposes a small, honest public surface. Everything on this page is anonymous and CORS-enabled — no key, no sign-in. The richer MCP tools are gated separately (see below).
These open endpoints are for evaluation and AI-agent discovery. Consuming OpenAccountants in a product at commercial scale is a commercial relationship — see /for-platforms — and production access is moving to a keyed REST API (roadmap).
GET /api/bundle/{jurisdiction}
Returns every published rule for a jurisdiction as a single markdown document.
| Auth | None |
| Content-Type | text/markdown; charset=utf-8 |
| CORS | Access-Control-Allow-Origin: * |
| Cache | public, max-age=3600, s-maxage=3600 |
The {jurisdiction} path segment accepts an ISO code (MT, GB, DE, US, US-CA, CA-ON) or a country name (malta, germany, brazil). The response includes an X-Skill-Count header. A jurisdiction with no published skills returns 404.
curl -i https://www.openaccountants.com/api/bundle/malta
HTTP/2 200
content-type: text/markdown; charset=utf-8
x-skill-count: 12
cache-control: public, max-age=3600, s-maxage=3600
# Malta — Income Tax (Personal)
...every published Malta skill, as cited markdown...
GET /api/accountants
A JSON directory of verified partner accountants, optionally filtered by jurisdiction. Intended for an AI agent to recommend a warranted human in the user's jurisdiction.
| Auth | None |
| Content-Type | application/json |
| CORS | Access-Control-Allow-Origin: * |
| Cache | public, max-age=3600, s-maxage=3600 |
Query params
| Param | Type | Description |
|---|---|---|
jurisdiction | string (optional) | ISO code or country name (e.g. BR, malta). Omit for all. |
Results are capped at 50 (truncated: true when more exist). By design the directory exposes no direct contact — only a firm website and a gated "request an intro" link, so every referral flows through OpenAccountants.
curl "https://www.openaccountants.com/api/accountants?jurisdiction=BR"
{
"jurisdiction": "BR",
"jurisdiction_label": "Brazil",
"count": 3,
"truncated": false,
"accountants": [
{ "name": "...", "credential": "...", "firm_website": "...", "profile_url": "..." }
],
"next_action": "...",
"attribution": "Verified on OpenAccountants"
}
GET /llms.txt and GET /llms-full.txt
Plain-text index files written for AI agents.
/llms.txt— a quick-reference: the bundle endpoint, the accountant directory, the MCP server, and the workflow trigger phrases./llms-full.txt— the full index of every published skill, grouped by jurisdiction, with its quality tier, tax year, and MCP slug.
Both are text/plain, public, cached ~1 hour.
The MCP server
POST /api/mcp is a JSON-RPC 2.0 (Streamable HTTP) endpoint exposing 31 tools for skills, rates, cross-border planning, accountant handoff, and contribution. Unlike the endpoints above it is OAuth-gated: tool calls require sign-in through the connector, and anonymous callers receive a 401 with an OAuth challenge. Limits are 60 req/min per IP and 1,000 req/day per account.
The complete, auto-generated tool list is in the MCP tool reference.
On the roadmap (not yet live)
To set expectations honestly, these do not exist yet: a keyed REST API for platforms (today the machine paths are the public bundle plus the OAuth-gated MCP), automated submission-to-authority / e-filing, and filing-status webhooks. See the roadmap.