Skip to main content
REST errors use one JSON envelope:
MCP tools return the same envelope as structured content with isError: true. Clients should branch on error.code; messages are intended for people and may be refined over time.

HTTP status behavior

A tenant-scoped 404 deliberately does not reveal whether an ID exists in another organization. On 401, inspect the WWW-Authenticate header. It includes the protected- resource metadata URL clients can use to restart OAuth discovery.

Idempotency keys

Send Idempotency-Key on REST creates, updates, and deletes. MCP write tools accept the equivalent idempotencyKey input.
Keys must be non-empty and no longer than 200 characters. Scope a key to one logical user action, and reuse it only when all of these are unchanged:
  • organization
  • OAuth client
  • interface source
  • operation and route identifiers
  • normalized request input
When the first call succeeds, a retry with the same key and request replays the stored response. A create replay returns the original resource rather than creating another one. When the same key is reused with different input, Silo returns TENANT_IDEMPOTENCY_KEY_CONFLICT. When the original operation is still being processed, Silo returns TENANT_IDEMPOTENCY_KEY_IN_PROGRESS. Back off and retry the exact same request with the same key.

Retry rules

Do not automatically retry permission failures or tenant-scoped not-found responses. Reauthorize or correct the selected organization and resource IDs.