List playbooks
The knowledge.playbooks.list operation: GET /api/v1/tax/knowledge/playbooks in the REST API and the knowledge_playbooks_list tool in the MCP server.
/api/v1/tax/knowledge/playbooksLists the playbooks of the Jurisdiction Knowledge Base as loaded: step-by-step guides (for people and
agents) to register, file or deregister in a jurisdiction, with their title, kind, regime and record
meta. The text is in knowledge.playbooks.get.
Filter by jurisdictionId, regimeId or kind. Sorted by key; paginate with limit (1–100, default 50) and starting_after (the previous next_cursor).
At a glance
- REST:
GET /api/v1/tax/knowledge/playbooks - MCP tool:
knowledge_playbooks_list - Operation ID:
knowledge.playbooks.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 |
|---|---|---|---|
jurisdictionId | string | No | |
regimeId | string | No | |
kind | one of registration, filing, deregistration, other | 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 | "playbook" | |
data[].key | string | |
data[].jurisdictionId | string | |
data[].regimeId | string | |
data[].kind | one of registration, filing, deregistration, other | |
data[].title | 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 | |
has_more | boolean | |
next_cursor | string or null |
Examples
Croatia's registration playbooks
GET /api/v1/tax/knowledge/playbooks?jurisdictionId=HR&kind=registration
Authorization: Bearer or_test_…
Response (200):
{
"object": "list",
"data": [
{
"id": "kn_01m4ttwd3veh9apbewxheq5xhc",
"object": "playbook",
"key": "HR/playbooks/HR_DOMESTIC-registration.md",
"jurisdictionId": "HR",
"regimeId": "HR_DOMESTIC",
"kind": "registration",
"title": "Register for VAT in Croatia",
"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/playbooks/HR_DOMESTIC-registration.md",
"commit": "1c14b2ec912aca347dd518b2044096f3b5d8eef1"
}
}
}
],
"has_more": false,
"next_cursor": null
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
validation_failed | 400 | A filter 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.