List tax jurisdictions and their coverage
The knowledge.jurisdictions.list operation: GET /api/v1/tax/knowledge/jurisdictions in the REST API and the knowledge_jurisdictions_list tool in the MCP server.
/api/v1/tax/knowledge/jurisdictionsLists the jurisdictions of the Jurisdiction Knowledge Base: the coverage map. Each one has its coverage
level (L0 known, L1 tax, L2 registration, L3 filing, L4 connector) and target, its priority tier
(1 = launch), the status of its own record (meta), and counts of its records by status (records), with
their open questions and the earliest nextReviewBy.
Filter by tier, coverage level or the jurisdiction record's status. Sorted by ID; paginate with
limit (1–100, default 100) and starting_after (the previous next_cursor). Records at researched or
cross_checked aren't reviewed yet: live mode uses only reviewed or verified records (spec §7.2).
At a glance
- REST:
GET /api/v1/tax/knowledge/jurisdictions - MCP tool:
knowledge_jurisdictions_list - Operation ID:
knowledge.jurisdictions.list - Scope: Platform
- Permission:
tax_knowledge:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Pagination:
limit(at most 100) andstarting_after - Authentication: API key with the
tax_knowledge:readscope - Since: M3
Request
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
tier | integer | No | |
level | one of L0, L1, L2, L3, L4 | No | |
status | one of researched, cross_checked, reviewed, verified, retired | No | |
limit | integer (1 to 100) | No | |
starting_after | string | No |
Response
200 OK with a JSON object, a page of the list (newest first):
| Field | Type | Description |
|---|---|---|
object | "list" | |
data | array of object | |
data[].id | string | |
data[].object | "tax_jurisdiction" | |
data[].name | string | |
data[].type | one of country, subdivision, union | |
data[].parent | string | |
data[].euMember | boolean | |
data[].currency | string | |
data[].timezone | string | |
data[].coverage | object | |
data[].coverage.level | one of L0, L1, L2, L3, L4 | |
data[].coverage.target | one of L0, L1, L2, L3, L4 | |
data[].coverage.tier | 1 or 2 or 3 | |
data[].authority | object | |
data[].authority.name | string | |
data[].authority.url | string | |
data[].authority.portalUrl | string | |
data[].taxId | object | |
data[].taxId.type | string | |
data[].taxId.format | string | |
data[].taxId.example | string | |
data[].taxId.validation | object | |
data[].taxId.validation.service | one of VIES, HMRC, CH_UID, ABN_LOOKUP, none, other | |
data[].taxId.validation.url | string | |
data[].meta | object | |
data[].meta.status | one of researched, cross_checked, reviewed, verified, retired | |
data[].meta.fixture | boolean | |
data[].meta.confidence | one of high, medium, low | |
data[].meta.sourceIds | array of string | |
data[].meta.openQuestions | integer (at least 0) | |
data[].meta.unsupportedRules | integer (at least 0) | |
data[].meta.blockingUnsupportedRules | integer (at least 0) | |
data[].meta.reviewedBy | string | |
data[].meta.reviewedAt | string | |
data[].meta.verifiedBy | string | |
data[].meta.verifiedAt | string | |
data[].meta.nextReviewBy | string | |
data[].meta.knowledgeRef | object | |
data[].meta.knowledgeRef.path | string | |
data[].meta.knowledgeRef.commit | string | |
data[].records | object | |
data[].records.total | integer (at least 0) | |
data[].records.researched | integer (at least 0) | |
data[].records.cross_checked | integer (at least 0) | |
data[].records.reviewed | integer (at least 0) | |
data[].records.verified | integer (at least 0) | |
data[].records.retired | integer (at least 0) | |
data[].openQuestions | integer (at least 0) | |
data[].unsupportedRules | integer (at least 0) | |
data[].nextReviewBy | string | |
has_more | boolean | |
next_cursor | string or null |
Examples
Tier 1 jurisdictions
GET /api/v1/tax/knowledge/jurisdictions?tier=1
Authorization: Bearer or_test_…
Response (200):
{
"object": "list",
"data": [
{
"id": "HR",
"object": "tax_jurisdiction",
"name": "Croatia",
"type": "country",
"euMember": true,
"currency": "EUR",
"timezone": "Europe/Zagreb",
"coverage": {
"level": "L3",
"target": "L3",
"tier": 1
},
"authority": {
"name": "Porezna uprava",
"url": "https://www.porezna-uprava.hr"
},
"taxId": {
"type": "eu_vat",
"format": "^HR\\d{11}$",
"validation": {
"service": "VIES"
}
},
"meta": {
"status": "reviewed",
"fixture": false,
"confidence": "high",
"sourceIds": ["HR:S1", "HR:S4"],
"openQuestions": 0,
"unsupportedRules": 0,
"blockingUnsupportedRules": 0,
"reviewedBy": "Ana Horvat",
"reviewedAt": "2026-10-10",
"nextReviewBy": "2027-04-13",
"knowledgeRef": {
"path": "data/tax/knowledge/jurisdictions/HR/jurisdiction.yaml",
"commit": "1c14b2ec912aca347dd518b2044096f3b5d8eef1"
}
},
"records": {
"total": 14,
"researched": 2,
"cross_checked": 4,
"reviewed": 8,
"verified": 0,
"retired": 0
},
"openQuestions": 3,
"unsupportedRules": 1,
"nextReviewBy": "2027-04-13"
}
],
"has_more": false,
"next_cursor": null
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
validation_failed | 400 | A filter isn't a tier (1–3), a coverage level or a record status, or the page size is invalid. | Fix the fields listed in details.issues and send the request again. |
permission_denied | 403 | Your credentials can't read tax knowledge. | Ask an organization owner or admin for a role or scope that allows this action. |
It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.