Get a tax regime
The knowledge.regimes.get operation: GET /api/v1/tax/knowledge/regimes/{id} in the REST API and the knowledge_regimes_get tool in the MCP server.
GET
/api/v1/tax/knowledge/regimes/{id}Returns one regime of the Jurisdiction Knowledge Base as loaded, by ID (HR_DOMESTIC, EU_OSS_UNION,
US_SALES_TAX:TX), with the sources its evidence map cites and the playbooks for registering and filing
under it (without their text; read one with knowledge.playbooks.get).
At a glance
- REST:
GET /api/v1/tax/knowledge/regimes/{id} - MCP tool:
knowledge_regimes_get - Operation ID:
knowledge.regimes.get - Scope: Platform
- Permission:
tax_knowledge:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Authentication: API key with the
tax_knowledge:readscope - Since: M3
Request
Path parameters
| Field | Type | Description |
|---|---|---|
id | string |
Query parameters
This operation takes no query parameters.
Response
200 OK with a JSON object:
| Field | Type | Description |
|---|---|---|
id | string | |
object | "regime" | |
version | string | |
name | string | |
jurisdictionIds | array of string | |
appliesTo | object | |
appliesTo.sellerEstablishment | one of in, outside, any, in_eu_other_ms, outside_eu | |
appliesTo.customerType | one of b2c, b2b, both | |
appliesTo.taxCategories | array of string | |
threshold | object | |
threshold.amount | object | |
threshold.amount.amount | integer string | |
threshold.amount.currency | string | |
threshold.measure | one of sales_in_jurisdiction, eu_cross_border_b2c, worldwide_turnover, transactions_in_jurisdiction, sales_or_transactions | |
threshold.window | one of calendar_year_current_or_previous, rolling_12_months, calendar_year_previous, base_period_two_years_prior, current_or_previous_12_months | |
threshold.transactionCount | integer | |
threshold.whatCounts | string | |
threshold.amountInclusive | boolean | |
zeroThreshold | boolean | |
grace | object | |
grace.rule | one of none, days_after_trigger, nth_day_of_following_month, before_first_sale, end_of_following_month | |
grace.days | integer | |
grace.nthDay | integer | |
grace.effectiveFrom | string | |
collectBeforeRegistration | boolean | |
b2bReverseChargeNoRegistration | boolean | |
b2bChargeWhenRegistered | boolean | |
rounding | one of half_up, half_even, half_down, up, down | |
requiresFiscalRepresentative | boolean | |
requiresLocalAgent | boolean | |
securityDeposit | string | |
evidence | object | |
evidence.requiredNonConflicting | integer | |
evidence.acceptedTypes | array of one of billing_address, ip_country, card_bin_country, bank_country, phone_country, self_declared | |
evidence.conflictPolicy | one of majority, billing_address_wins, hold_for_review | |
supplyRules | array of object | |
supplyRules[].taxCategoryId | string | |
supplyRules[].customerType | one of b2c, b2b, both | |
supplyRules[].placeOfSupply | one of customer_location, supplier_establishment, not_supported | |
registration | object | |
registration.method | string | |
registration.portalUrl | string | |
registration.identityRequirements | string | |
registration.typicalProcessingDays | integer | |
registration.prerequisites | array of object | |
registration.prerequisites[].code | string | |
registration.prerequisites[].description | string | |
registration.prerequisites[].leadTimeDays | integer | |
registration.packetFields | array of object | |
registration.packetFields[].label | string | |
registration.packetFields[].ownrecordField | string | |
registration.packetFields[].required | boolean | |
registration.packetFields[].notes | string | |
registration.playbookId | string | |
filingSpecId | string | |
validFrom | string | |
validTo | string | |
meta | object | |
meta.status | one of researched, cross_checked, reviewed, verified, retired | |
meta.fixture | boolean | |
meta.confidence | one of high, medium, low | |
meta.sourceIds | array of string | |
meta.openQuestions | integer (at least 0) | |
meta.unsupportedRules | integer (at least 0) | |
meta.blockingUnsupportedRules | integer (at least 0) | |
meta.reviewedBy | string | |
meta.reviewedAt | string | |
meta.verifiedBy | string | |
meta.verifiedAt | string | |
meta.nextReviewBy | string | |
meta.knowledgeRef | object | |
meta.knowledgeRef.path | string | |
meta.knowledgeRef.commit | string | |
sources | array of object | |
sources[].id | string | |
sources[].url | string | |
sources[].title | string | |
sources[].publisher | string | |
sources[].type | string | |
sources[].retrievedAt | string | |
sources[].monitor | boolean | |
playbooks | array of object | |
playbooks[].id | string | |
playbooks[].object | "playbook" | |
playbooks[].key | string | |
playbooks[].jurisdictionId | string | |
playbooks[].regimeId | string | |
playbooks[].kind | one of registration, filing, deregistration, other | |
playbooks[].title | string | |
playbooks[].meta | object | |
playbooks[].meta.status | one of researched, cross_checked, reviewed, verified, retired | |
playbooks[].meta.fixture | boolean | |
playbooks[].meta.confidence | one of high, medium, low | |
playbooks[].meta.sourceIds | array of string | |
playbooks[].meta.openQuestions | integer (at least 0) | |
playbooks[].meta.unsupportedRules | integer (at least 0) | |
playbooks[].meta.blockingUnsupportedRules | integer (at least 0) | |
playbooks[].meta.reviewedBy | string | |
playbooks[].meta.reviewedAt | string | |
playbooks[].meta.verifiedBy | string | |
playbooks[].meta.verifiedAt | string | |
playbooks[].meta.nextReviewBy | string | |
playbooks[].meta.knowledgeRef | object | |
playbooks[].meta.knowledgeRef.path | string | |
playbooks[].meta.knowledgeRef.commit | string |
Examples
Croatian domestic VAT
HTTP
GET /api/v1/tax/knowledge/regimes/HR_DOMESTIC
Authorization: Bearer or_test_…
Response (200):
JSON
{
"id": "HR_DOMESTIC",
"object": "regime",
"version": "6f1d2a9c0b3e4d58",
"name": "Croatian VAT (domestic)",
"jurisdictionIds": ["HR"],
"appliesTo": {
"sellerEstablishment": "in",
"customerType": "both"
},
"threshold": {
"amount": {
"amount": "60000000000",
"currency": "EUR"
},
"measure": "sales_in_jurisdiction",
"window": "calendar_year_current_or_previous"
},
"zeroThreshold": false,
"grace": {
"rule": "days_after_trigger",
"days": 8
},
"collectBeforeRegistration": false,
"b2bReverseChargeNoRegistration": false,
"b2bChargeWhenRegistered": false,
"rounding": "half_up",
"requiresFiscalRepresentative": false,
"requiresLocalAgent": false,
"evidence": {
"requiredNonConflicting": 1,
"conflictPolicy": "billing_address_wins"
},
"supplyRules": [
{
"taxCategoryId": "saas",
"customerType": "both",
"placeOfSupply": "supplier_establishment"
}
],
"registration": {
"method": "online",
"portalUrl": "https://e-porezna.porezna-uprava.hr",
"prerequisites": [
{
"code": "oib",
"description": "A Croatian personal identification number (OIB)"
}
],
"packetFields": [
{
"label": "Legal name",
"ownrecordField": "entity.legalName",
"required": true
}
],
"playbookId": "HR/playbooks/HR_DOMESTIC-registration.md"
},
"validFrom": "2013-07-01",
"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/regimes/HR_DOMESTIC.yaml",
"commit": "1c14b2ec912aca347dd518b2044096f3b5d8eef1"
}
},
"sources": [
{
"id": "HR:S1",
"url": "https://narodne-novine.nn.hr/clanci/sluzbeni/2013_06_73_1451.html",
"title": "Value Added Tax Act (Zakon o porezu na dodanu vrijednost)",
"publisher": "Narodne novine",
"type": "law",
"retrievedAt": "2026-10-13",
"monitor": true
}
],
"playbooks": [
{
"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"
}
}
}
]
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
resource_not_found | 404 | No regime with this ID is loaded. | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode. |
validation_failed | 400 | The ID isn't a regime ID. | 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, dry_run_not_supported, rate_limited, internal_error.