{"openapi": "3.0.3", "info": {"title": "The capability diet: tool pruning for agents", "version": "1.0.0"}, "components": {"securitySchemes": {"bearer": {"type": "http", "scheme": "bearer"}}}, "paths": {"/": {"get": {"responses": {"200": {"description": "product descriptor", "content": {"application/json": {"schema": {"type": "object", "properties": {"name": {"type": "string"}, "prices": {"type": "object"}}}}}}}}}, "/health": {"get": {"responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}}}}}}}}}, "/register": {"post": {"requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"account_name": {"type": "string"}, "payer_wallet": {"type": "string"}}}}}}, "responses": {"200": {"description": "account + claim token", "content": {"application/json": {"schema": {"type": "object", "properties": {"account_id": {"type": "string"}, "claim_token": {"type": "string"}}}}}}}}}, "/trial": {"post": {"requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"claim_token": {"type": "string"}}}}}}, "responses": {"200": {"description": "trial token shown once", "content": {"application/json": {"schema": {"type": "object", "properties": {"token": {"type": "string"}, "trial": {"type": "boolean"}}}}}}}}}, "/subscribe": {"post": {"description": "x402-gated $9/mo subscription start/renewal", "responses": {"200": {"description": "token/expiry", "content": {"application/json": {"schema": {"type": "object", "properties": {"expires_at": {"type": "number"}}}}}}}}}, "/telemetry": {"post": {"security": [{"bearer": []}], "description": "Submit usage telemetry events (one per actual tool call). Each event MUST have exactly the fields agent, session, task_type, tool \u2014 see the item schema; tool must be one of the catalog tool names in the enum. At most 500 events per call.", "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"events": {"type": "array", "maxItems": 500, "items": {"type": "object", "required": ["agent", "session", "task_type", "tool"], "additionalProperties": false, "properties": {"agent": {"type": "string", "maxLength": 80, "description": "Stable id of the agent that used the tool."}, "session": {"type": "string", "maxLength": 80, "description": "Session id; one session = one run of one task type."}, "task_type": {"type": "string", "pattern": "^[a-z0-9_-]{1,40}$", "description": "Task type the tool use belongs to, e.g. research, coding."}, "tool": {"type": "string", "enum": ["add_observations", "calculate", "convert_time", "count_words", "create_directory", "create_entities", "create_relations", "decode_base64", "delete_entities", "edit_file", "encode_base64", "fetch_markdown", "fetch_url", "get_current_time", "get_file_info", "git_commit", "git_diff", "git_log", "git_status", "hash_text", "list_directory", "move_file", "open_nodes", "read_file", "search_files", "search_nodes", "sequential_think", "write_file"], "description": "Name of a tool in this product's catalog that was actually called."}}}}}}, "example": {"events": [{"agent": "agent-a", "session": "research-0", "task_type": "research", "tool": "search_nodes"}, {"agent": "agent-a", "session": "research-0", "task_type": "research", "tool": "fetch_url"}, {"agent": "agent-b", "session": "research-1", "task_type": "research", "tool": "search_nodes"}]}}}}, "responses": {"200": {"description": "ingested count", "content": {"application/json": {"schema": {"type": "object", "properties": {"ingested": {"type": "integer"}, "total": {"type": "integer"}}}}}}}}}, "/compile": {"post": {"security": [{"bearer": []}], "responses": {"200": {"description": "signed versioned manifest", "content": {"application/json": {"schema": {"type": "object", "properties": {"task_type": {"type": "string"}, "keep": {"type": "array"}, "demoted": {"type": "array"}, "sig": {"type": "string"}, "version": {"type": "integer"}}}}}}}}}, "/manifests/{task_type}": {"get": {"security": [{"bearer": []}], "responses": {"200": {"description": "manifest + exposure accounting", "content": {"application/json": {"schema": {"type": "object", "properties": {"manifest": {"type": "object"}, "exposure": {"type": "object"}}}}}}}}}, "/mcp": {"post": {"security": [{"bearer": []}], "description": "MCP JSON-RPC: initialize, ping, tools/list, tools/call", "responses": {"200": {"description": "JSON-RPC response", "content": {"application/json": {"schema": {"type": "object", "properties": {"jsonrpc": {"type": "string"}}}}}}}}}, "/usage": {"get": {"security": [{"bearer": []}], "responses": {"200": {"description": "usage", "content": {"application/json": {"schema": {"type": "object", "properties": {"telemetry_events": {"type": "integer"}}}}}}}}}, "/tokens/revoke": {"post": {"security": [{"bearer": []}], "responses": {"200": {"description": "revoked", "content": {"application/json": {"schema": {"type": "object", "properties": {"revoked": {"type": "boolean"}}}}}}}}}}}