mcp_guardrail_violation
The call breaks a declared tax rule and was rejected LOCALLY, before anything ran: no document was created, modified or deleted. It is the only code in the catalogue that no API v1 route can emit — whoever receives it is talking over MCP. The `subcode` says which of the nine guardrails was broken, and the error data carries `guardrail_uri` (the resource that explains the rule) and `rule_id` (the specific rule, shaped `BR-XXX-NNN`).
| Code | Type | HTTP | Category |
|---|---|---|---|
mcp_guardrail_violation | invalid_request_error | 422 | MCP |
Cause
The call breaks a declared tax rule and was rejected LOCALLY, before anything ran: no document was created, modified or deleted. It is the only code in the catalogue that no API v1 route can emit — whoever receives it is talking over MCP. The subcode says which of the nine guardrails was broken, and the error data carries guardrail_uri (the resource that explains the rule) and rule_id (the specific rule, shaped BR-XXX-NNN).
What to do
Do not retry and do not wait: the same call will be rejected again. Read the resource named by guardrail_uri and perform the operation that does apply — annul an issued invoice instead of deleting it, rectify it instead of editing it, issue in the series that belongs. The error message already names the broken rule and that reading, so following it is enough.