Craft.io · Schema
ApiKeyIntrospection
Introspection endpoints for "what is the current API key allowed to do". Used by clients (notably the MCP server) to self-filter the tools they expose.
Product ManagementRoadmapsOKRsBacklogFeedbackPortfolioSpecifications
Properties
| Name | Type | Description |
|---|---|---|
| userId | string | The user this key authenticates as. |
| accountId | string | The account this key belongs to. |
| scopes | array | Granted granular scope strings (already normalized). |
| resourceScope | object | Optional resource-scope narrowing. When a dimension is null/missing the key has access to every instance the bound user can see; when present it is the exclusive allowlist of ids on that dimension. |
| mcpAccess | boolean |
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/api-evangelist/craft-io/main/json-schema/craft-io-apikeyintrospection-schema.json",
"title": "ApiKeyIntrospection",
"description": "Introspection endpoints for \"what is the current API key allowed to do\".\nUsed by clients (notably the MCP server) to self-filter the tools they expose.",
"properties": {
"userId": {
"type": "string",
"description": "The user this key authenticates as."
},
"accountId": {
"type": "string",
"description": "The account this key belongs to."
},
"scopes": {
"items": {
"type": "string"
},
"type": "array",
"description": "Granted granular scope strings (already normalized)."
},
"resourceScope": {
"properties": {
"feedback_portals": {
"items": {
"type": "string"
},
"type": "array",
"nullable": true
},
"portfolios": {
"items": {
"type": "string"
},
"type": "array",
"nullable": true
},
"workspaces": {
"items": {
"type": "string"
},
"type": "array",
"nullable": true
}
},
"type": "object",
"description": "Optional resource-scope narrowing. When a dimension is null/missing the key\nhas access to every instance the bound user can see; when present it is the\nexclusive allowlist of ids on that dimension."
},
"mcpAccess": {
"type": "boolean"
}
},
"required": [
"userId",
"accountId",
"scopes",
"resourceScope",
"mcpAccess"
],
"type": "object",
"additionalProperties": false
}