A2A REGISTRY·AGENT RECORD·900d4d12-f8e3-4512-ab85-aac98fde7da8

Provider

Claix

Claix

Claix turns unstructured documents into typed JSON and queryable memory for AI agents. Extract PDF, Excel, Word, images, and text; ask persisted documents by document_id; reason across a knowledge space with space_id.

Observed evidence

Reachable

Last sweep

Launch endpoint ↗

Agent datasheet

Agent ID
900d4d12-f8e3-4512-ab85-aac98fde7da8
Canonical card
https://claix.dev/.well-known/agent.json
Endpoint
https://www.claix.dev/a2a
Protocol version
0.3
Agent version
1.0.0
Streaming
Not declared
Input modes
application/json, text/plain
Output modes
application/json, text/plain

Reachability record

Last 100 checks shown · 99.3% across 30 days

2026-09-12T20:44:08.470575Z: passed2026-09-12T21:14:47.146064Z: passed2026-09-12T21:45:29.473948Z: passed2026-09-12T22:16:13.796331Z: passed2026-09-12T22:46:50.691408Z: passed2026-09-12T23:17:49.865038Z: passed2026-09-12T23:50:40.094685Z: passed2026-09-13T00:21:20.562222Z: passed2026-09-13T00:52:02.871491Z: passed2026-09-13T01:22:41.688698Z: passed2026-09-13T01:53:21.178559Z: passed2026-09-13T02:24:03.671457Z: passed2026-09-13T02:54:39.976865Z: passed2026-09-13T03:25:22.389415Z: passed2026-09-13T03:55:59.567020Z: passed2026-09-13T04:26:42.909735Z: passed2026-09-13T04:57:25.069154Z: passed2026-09-13T05:28:03.087748Z: passed2026-09-13T05:58:49.067440Z: passed2026-09-13T06:29:26.384024Z: passed2026-09-13T07:00:03.065395Z: passed2026-09-13T07:30:44.073138Z: passed2026-09-13T08:01:23.977768Z: passed2026-09-13T08:32:01.357049Z: passed2026-09-13T09:02:49.586604Z: passed2026-09-13T09:33:27.283294Z: passed2026-09-13T10:04:04.071249Z: passed2026-09-13T10:35:37.083494Z: passed2026-09-13T11:06:22.970508Z: passed2026-09-13T11:37:07.524387Z: passed2026-09-13T12:07:43.267039Z: passed2026-09-13T12:38:21.353814Z: passed2026-09-13T13:09:00.967677Z: passed2026-09-13T13:39:40.505083Z: passed2026-09-13T14:10:32.567254Z: passed2026-09-13T14:41:11.035052Z: passed2026-09-13T15:11:50.566660Z: passed2026-09-13T15:42:38.882157Z: passed2026-09-13T16:13:25.101936Z: passed2026-09-13T16:44:04.873077Z: passed2026-09-13T17:14:49.844384Z: passed2026-09-13T17:45:28.176793Z: passed2026-09-13T18:16:06.381640Z: passed2026-09-13T18:46:43.997607Z: passed2026-09-13T19:17:34.168794Z: passed2026-09-13T19:48:12.066912Z: passed2026-09-13T20:18:52.188282Z: passed2026-09-13T20:49:32.177276Z: passed2026-09-13T21:20:25.667525Z: passed2026-09-13T21:51:05.475868Z: passed2026-09-13T22:21:52.278917Z: passed2026-09-13T22:52:30.471204Z: passed2026-09-13T23:23:33.270502Z: passed2026-09-13T23:56:28.783839Z: passed2026-09-14T00:27:26.669940Z: passed2026-09-14T00:58:06.418055Z: passed2026-09-14T01:29:00.870076Z: passed2026-09-14T01:59:48.373884Z: passed2026-09-14T02:30:30.796534Z: passed2026-09-14T03:01:10.333976Z: passed2026-09-14T03:32:04.871618Z: passed2026-09-14T04:02:43.798688Z: passed2026-09-14T04:33:25.468594Z: passed2026-09-14T05:04:04.571473Z: passed2026-09-14T05:34:42.378077Z: passed2026-09-14T06:05:25.243019Z: passed2026-09-14T06:36:12.581400Z: passed2026-09-14T07:06:52.577644Z: passed2026-09-14T07:37:31.576632Z: passed2026-09-14T08:08:11.266673Z: passed2026-09-14T08:38:51.372833Z: passed2026-09-14T09:09:32.069655Z: passed2026-09-14T09:40:21.671427Z: passed2026-09-14T10:11:01.194532Z: passed2026-09-14T10:42:38.468559Z: passed2026-09-14T11:13:19.563132Z: passed2026-09-14T11:41:50.954460Z: failed2026-09-14T12:12:39.840441Z: passed2026-09-14T12:38:52.385686Z: passed2026-09-14T13:09:52.888729Z: passed2026-09-14T13:40:38.400873Z: passed2026-09-14T14:11:28.174307Z: passed2026-09-14T14:42:13.276250Z: passed2026-09-14T15:13:13.384714Z: passed2026-09-14T15:43:58.103896Z: passed2026-09-14T16:14:48.086569Z: passed2026-09-14T16:45:48.375736Z: passed2026-09-14T17:16:33.980666Z: passed2026-09-14T17:47:25.613769Z: passed2026-09-14T18:18:12.181441Z: passed2026-09-14T18:49:03.678865Z: passed2026-09-14T19:20:01.677981Z: passed2026-09-14T19:50:56.451919Z: passed2026-09-14T20:21:47.111951Z: passed2026-09-14T20:52:40.366147Z: passed2026-09-14T21:23:29.582834Z: passed2026-09-14T21:54:17.315602Z: passed2026-09-14T22:25:03.485677Z: passed2026-09-14T22:55:47.784331Z: passed2026-09-14T23:26:59.675538Z: passed
PassFailureAverage 5413 ms

Declared skills

Convert an Excel or CSV file to JSON using a schema

extract-excel

Convert an Excel or CSV file to JSON using a schema. Accepts an .xlsx or .csv file and a schema_id, and returns transformed JSON whose keys match the schema properties exactly. If the workbook has multiple sheets, only the first sheet is processed. Max file size follows the REST /excel-json limits. A2A skill id: extract-excel. REST: POST /excel-json. JSON DataPart must include "skill": "extract-excel". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. multipart/form-data equivalent: schema_id + file_base64 or file_path in the DataPart JSON. Optional space_id groups the persisted document. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

extract · excel · csv · json

Convert JSON documents to an Excel file

convert-json-to-excel

Convert JSON documents to an Excel file. Accepts JSON data and a schema_id, and returns a binary .xlsx whose columns follow the schema order and names. In A2A send schema_id plus data (array or object). Aliases records and json_data are normalized to data. A2A skill id: convert-json-to-excel. REST: POST /json-excel. JSON DataPart must include "skill": "convert-json-to-excel". Required A2A parameters: skill. Body JSON fields: schema_id, data. JSON body: schema_id (required) and data (array or object). Aliases records/json_data also map to data. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

convert · excel · json

Extract structured data from a PDF using a schema

extract-pdf

Extract structured data from a PDF using a schema. Accepts a .pdf (selectable text or scanned) and a schema_id, and returns a single JSON object for the whole document. Response data always contains exactly one record. Max file size: 15 MB. A2A skill id: extract-pdf. REST: POST /pdf-json. JSON DataPart must include "skill": "extract-pdf". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. schema_id + file_base64 or file_path in the DataPart JSON. Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

extract · pdf · json

Extract structured data from a text document using a schema

extract-doc

Extract structured data from a text document using a schema. Accepts .docx, .txt, .md, or .rtf plus a schema_id, and returns a single JSON object for the whole document. Legacy .doc (Word 97-2003) is not supported. Max file size: 10 MB; extracted text max 300,000 characters. A2A skill id: extract-doc. REST: POST /doc-json. JSON DataPart must include "skill": "extract-doc". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. schema_id + file_base64 or file_path (.docx, .txt, .md, .rtf). Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

extract · docx · json

Extract structured data from an image using a schema

extract-img

Extract structured data from an image using a schema. Accepts .jpeg, .jpg, .png, .webp, .heic, or .heif plus a schema_id, and returns a single JSON object from the visible content. Unreadable images return HTTP 422. Max file size: 15 MB. A2A skill id: extract-img. REST: POST /img-json. JSON DataPart must include "skill": "extract-img". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. schema_id + file_base64 or file_path (.jpeg, .png, .webp, .heic). Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

extract · image · json

Extract structured data from plain text, HTML, or XML using a schema

extract-txt

Extract structured data from plain text, HTML, or XML using a schema. Accepts a content string (plain text, HTML, or XML) and a txt-json schema_id. No file upload. Max 300,000 characters. A2A skill id: extract-txt. REST: POST /txt-json. JSON DataPart must include "skill": "extract-txt". Required A2A parameters: skill, content, schema_id. Form/DataPart fields: schema_id, content, space_id. schema_id + content (plain text/HTML/XML string, not a file). Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

extract · text · html · xml

Return the raw content of a persisted document

get-document

Return the raw content of a persisted document. Read-only. document_id is a path parameter only (no body). Returns markdown/text and metadata for a document created by an extraction with window_context enabled. Free call. A2A skill id: get-document. REST: GET /get-document/{document_id}. JSON DataPart must include "skill": "get-document". Required A2A parameters: skill, document_id. Path params: document_id. document_id is a path parameter only. No body and no questions. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

context · document

Answer questions about a persisted document

query-document

Answer questions about a persisted document. document_id goes in the URL path. questions (1–5 strings, max 400 chars each) go in the JSON body only — never embed document_id inside a question. Returns { user_ask, ia_response } aligned 1:1; ia_response items are null when the answer is not in the document. A2A skill id: query-document. REST: POST /document-context/{document_id}. JSON DataPart must include "skill": "query-document". Required A2A parameters: skill, document_id, questions. Path params: document_id. Body JSON fields: questions. document_id goes in the URL path. questions[] (1–5 strings, max 400 chars each) goes in the JSON body only — never inside the question text. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

context · qa · document

Answer questions across every document in a knowledge space

query-space

Answer questions across every document in a knowledge space. space_id goes in the URL path. questions (1–5 strings, max 400 chars each) go in the JSON body only — never embed space_id inside a question. Cross-references up to 50 active documents in the space. Returns { user_ask, ia_response }; null means no evidence in any document. A2A skill id: query-space. REST: POST /space-context/{space_id}. JSON DataPart must include "skill": "query-space". Required A2A parameters: skill, space_id, questions. Path params: space_id. Body JSON fields: questions. space_id goes in the URL path. questions[] (1–5 strings, max 400 chars each) goes in the JSON body only — never inside the question text. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

context · qa · space

Create a knowledge space for the API key account

create-space

Create a knowledge space for the API key account. Creates an empty knowledge space. Required JSON body field: name (max 200 chars). Returns space_id for use as optional space_id on extractions and for query-space. Free call. A2A skill id: create-space. REST: POST /create-space. JSON DataPart must include "skill": "create-space". Required A2A parameters: skill, name. Body JSON fields: name. JSON body with name (string, max 200 chars). Returns space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

spaces

Delete a knowledge space

delete-space

Delete a knowledge space. space_id is a path parameter only (no body). Deletes the space owned by the API key account. Free call. A2A skill id: delete-space. REST: DELETE /delete-space/{space_id}. JSON DataPart must include "skill": "delete-space". Required A2A parameters: skill, space_id. Path params: space_id. space_id is a path parameter only. No body. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

spaces

Delete a persisted document

delete-document

Delete a persisted document. document_id is a path parameter only (no body). Deletes the document owned by the API key account. Free call. A2A skill id: delete-document. REST: DELETE /delete-document/{document_id}. JSON DataPart must include "skill": "delete-document". Required A2A parameters: skill, document_id. Path params: document_id. document_id is a path parameter only. No body. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

context · document

Excel/CSV to JSON with Agent Mode reasoning

agent-extract-excel

Excel/CSV to JSON with Agent Mode reasoning. Same inputs as extract-excel, but the schema must have is_agent_mode enabled. Returns extraction data plus agent_data from agent_definition. A2A skill id: agent-extract-excel. REST: POST /agent/excel-json. JSON DataPart must include "skill": "agent-extract-excel". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-excel but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

agent · excel

PDF to JSON with Agent Mode reasoning

agent-extract-pdf

PDF to JSON with Agent Mode reasoning. Same inputs as extract-pdf, but the schema must have is_agent_mode enabled. Returns data[] plus typed agent_data. Max PDF size: 15 MB. A2A skill id: agent-extract-pdf. REST: POST /agent/pdf-json. JSON DataPart must include "skill": "agent-extract-pdf". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-pdf but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

agent · pdf

Document to JSON with Agent Mode reasoning

agent-extract-doc

Document to JSON with Agent Mode reasoning. Same inputs as extract-doc, but the schema must have is_agent_mode enabled. Formats: .docx, .txt, .md, .rtf. A2A skill id: agent-extract-doc. REST: POST /agent/doc-json. JSON DataPart must include "skill": "agent-extract-doc". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-doc but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

agent · docx

Image to JSON with Agent Mode reasoning

agent-extract-img

Image to JSON with Agent Mode reasoning. Same inputs as extract-img, but the schema must have is_agent_mode enabled. Formats: JPEG, PNG, WebP, HEIC/HEIF. A2A skill id: agent-extract-img. REST: POST /agent/img-json. JSON DataPart must include "skill": "agent-extract-img". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-img but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

agent · image

Text/HTML/XML to JSON with Agent Mode reasoning

agent-extract-txt

Text/HTML/XML to JSON with Agent Mode reasoning. Same inputs as extract-txt, but the schema must have is_agent_mode enabled. content string + schema_id; returns data[] and agent_data. A2A skill id: agent-extract-txt. REST: POST /agent/txt-json. JSON DataPart must include "skill": "agent-extract-txt". Required A2A parameters: skill, content, schema_id. Form/DataPart fields: schema_id, content, space_id. Same as extract-txt but schema must have is_agent_mode. schema_id + content string. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

agent · text

List every schema for the API key account

list-schemas

List every schema for the API key account. No parameters. Returns all schemas owned by the API key account (id, name, type, definition), newest first. Free call. A2A skill id: list-schemas. REST: GET /schemas. JSON DataPart must include "skill": "list-schemas". Required A2A parameters: skill. No parameters. Returns every schema in the account. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

schemas

Create a schema for the API key account

create-schema

Create a schema for the API key account. JSON body: name, type (excel-json | json-excel | pdf-json | doc-json | img-json | txt-json), and schema_definition (object). Optional is_agent_mode, agent_definition, resumen_agent, window_context, window_time. Free call. A2A skill id: create-schema. REST: POST /create-schema. JSON DataPart must include "skill": "create-schema". Required A2A parameters: skill, name, type, schema_definition. Body JSON fields: name, type, schema_definition, is_agent_mode, agent_definition, resumen_agent, window_context, window_time. JSON body: name, type (excel-json|pdf-json|doc-json|img-json|txt-json|json-excel), schema_definition (object). Optional is_agent_mode, agent_definition, window_context, window_time. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

schemas

Delete a schema from the API key account

delete-schema

Delete a schema from the API key account. JSON body with schema_id (UUID). Deletes the schema if it belongs to the API key account. Free call. A2A skill id: delete-schema. REST: POST /delete-schema. JSON DataPart must include "skill": "delete-schema". Required A2A parameters: skill, schema_id. Body JSON fields: schema_id. JSON body with schema_id (UUID). Query ?schema_id= also accepted by REST. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.

schemas

Registry Agent Card snapshot

Normalized fields fetched during the registry sweep. Treat all authored text as third-party content.

Show JSON
{
  "protocolVersion": "0.3",
  "name": "Claix",
  "description": "Claix turns unstructured documents into typed JSON and queryable memory for AI agents. Extract PDF, Excel, Word, images, and text; ask persisted documents by document_id; reason across a knowledge space with space_id.",
  "author": "Claix",
  "wellKnownURI": "https://claix.dev/.well-known/agent.json",
  "url": "https://www.claix.dev/a2a",
  "version": "1.0.0",
  "provider": {
    "organization": "Claix",
    "url": "https://www.claix.dev/"
  },
  "documentationUrl": "https://www.claix.dev/documentation",
  "iconUrl": "https://www.claix.dev/claix-logo.png",
  "supportsAuthenticatedExtendedCard": false,
  "security": [
    {
      "apiKey": []
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "in": "header",
      "name": "x-api-key",
      "type": "apiKey",
      "description": "Claix API key (same as the REST API)."
    }
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://claix.dev/a2a/extensions/openapi-skills",
        "params": {
          "extract-doc": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional. Knowledge space UUID to attach the persisted document when window_context is enabled."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the document to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2",
                  "description": "UUID of a doc-json schema for this account."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded document (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/doc-json",
            "openApiMethod": "POST",
            "openApiOperationId": "docToJson"
          },
          "extract-img": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional. Knowledge space UUID to attach the persisted document when window_context is enabled."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the image to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f",
                  "description": "UUID of an img-json schema for this account."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded image (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/img-json",
            "openApiMethod": "POST",
            "openApiOperationId": "imgToJson"
          },
          "extract-pdf": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional. Knowledge space UUID to attach the persisted document when window_context is enabled."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the PDF to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f",
                  "description": "UUID of a pdf-json schema for this account."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded PDF (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/pdf-json",
            "openApiMethod": "POST",
            "openApiOperationId": "pdfToJson"
          },
          "extract-txt": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "content",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "content": {
                  "type": "string",
                  "example": "<html><body><h1>Factura F-2026-00456</h1></body></html>",
                  "description": "Plain text, HTML, or XML string to extract from."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional. Knowledge space UUID to attach the persisted document when window_context is enabled."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2",
                  "description": "UUID of a txt-json schema for this account."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/txt-json",
            "openApiMethod": "POST",
            "openApiOperationId": "txtToJson"
          },
          "query-space": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "space_id",
                "questions"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID of the knowledge space (path parameter)."
                },
                "questions": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 400,
                    "minLength": 1
                  },
                  "example": [
                    "¿Qué proveedor factura más en total sumando todas las facturas?",
                    "¿Hay algún contrato cuyo importe no coincida con su factura?"
                  ],
                  "maxItems": 5,
                  "minItems": 1,
                  "description": "Array of 1–5 question strings (max 400 characters each). Do not include space_id in the question text."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/space-context/{space_id}",
            "openApiMethod": "POST",
            "openApiOperationId": "spaceContextAsk"
          },
          "create-space": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "name"
              ],
              "properties": {
                "name": {
                  "type": "string",
                  "example": "Proveedores 2026",
                  "maxLength": 200,
                  "minLength": 1,
                  "description": "Display name of the knowledge space (max 200 characters)."
                },
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/create-space",
            "openApiMethod": "POST",
            "openApiOperationId": "createSpace"
          },
          "delete-space": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "space_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID of the knowledge space to delete (path parameter)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/delete-space/{space_id}",
            "openApiMethod": "DELETE",
            "openApiOperationId": "deleteSpace"
          },
          "get-document": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "document_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "document_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID of the persisted document (path parameter)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/get-document/{document_id}",
            "openApiMethod": "GET",
            "openApiOperationId": "getDocument"
          },
          "list-schemas": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/schemas",
            "openApiMethod": "GET",
            "openApiOperationId": "listSchemas"
          },
          "create-schema": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "name",
                "type",
                "schema_definition"
              ],
              "properties": {
                "name": {
                  "type": "string",
                  "example": "DNI cliente",
                  "maxLength": 200,
                  "description": "Visible schema name (max 200 characters)."
                },
                "type": {
                  "enum": [
                    "excel-json",
                    "json-excel",
                    "pdf-json",
                    "doc-json",
                    "img-json",
                    "txt-json"
                  ],
                  "type": "string",
                  "example": "img-json",
                  "description": "Conversion type: excel-json, json-excel, pdf-json, doc-json, img-json, or txt-json."
                },
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "window_time": {
                  "oneOf": [
                    {
                      "enum": [
                        5,
                        10,
                        15,
                        30,
                        45,
                        60,
                        90,
                        120,
                        180,
                        240,
                        360,
                        480,
                        720,
                        1440,
                        0
                      ],
                      "type": "number"
                    },
                    {
                      "enum": [
                        "infinity"
                      ],
                      "type": "string"
                    }
                  ],
                  "example": null,
                  "nullable": true,
                  "description": "Required when window_context is true. Minutes: 5–1440, or 0 / \"infinity\" for no expiry."
                },
                "is_agent_mode": {
                  "type": "boolean",
                  "example": true,
                  "description": "When true, Agent Mode is enabled and agent_definition is required."
                },
                "resumen_agent": {
                  "type": "string",
                  "nullable": true,
                  "maxLength": 500,
                  "description": "Optional instruction for the Agent Mode reasoning phase (max 500 chars)."
                },
                "window_context": {
                  "type": "boolean",
                  "example": false,
                  "description": "When true, extractions persist a queryable document context window."
                },
                "agent_definition": {
                  "type": "object",
                  "description": "Agent Mode field definitions (boolean, string, closed, integer). Required when is_agent_mode is true.",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/AgentFieldDefinition"
                  }
                },
                "schema_definition": {
                  "type": "object",
                  "description": "Object whose keys are output property names; each value has type and description.",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/SchemaFieldDefinition"
                  }
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/create-schema",
            "openApiMethod": "POST",
            "openApiOperationId": "createSchema"
          },
          "delete-schema": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2",
                  "description": "UUID of the schema to delete."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/delete-schema",
            "openApiMethod": "POST",
            "openApiOperationId": "deleteSchema"
          },
          "extract-excel": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional. Knowledge space UUID to attach the persisted document when window_context is enabled on the schema."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the .xlsx or .csv file to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "8f14e45f-ceea-4e6f-8b23-1e2d3c4b5a6f",
                  "description": "UUID of an excel-json schema previously created for this account."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded .xlsx or .csv (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/excel-json",
            "openApiMethod": "POST",
            "openApiOperationId": "excelToJson"
          },
          "query-document": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "document_id",
                "questions"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "questions": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 400,
                    "minLength": 1
                  },
                  "example": [
                    "¿Cuál es la penalización exacta por cancelación anticipada?",
                    "¿Qué empresa figura como arrendataria y cuál es su CIF?"
                  ],
                  "maxItems": 5,
                  "minItems": 1,
                  "description": "Array of 1–5 question strings (max 400 characters each). Do not include document_id in the question text."
                },
                "document_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID of the persisted document (path parameter)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/document-context/{document_id}",
            "openApiMethod": "POST",
            "openApiOperationId": "documentContextAsk"
          },
          "delete-document": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "document_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "document_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID of the document to delete (path parameter)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/delete-document/{document_id}",
            "openApiMethod": "DELETE",
            "openApiOperationId": "deleteDocument"
          },
          "agent-extract-doc": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional knowledge space UUID when window_context is enabled."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the document to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2",
                  "description": "UUID of an agent-mode doc-json schema."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded document (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/agent/doc-json",
            "openApiMethod": "POST",
            "openApiOperationId": "agentDocToJson"
          },
          "agent-extract-img": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional knowledge space UUID when window_context is enabled."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the image to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f",
                  "description": "UUID of an agent-mode img-json schema."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded image (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/agent/img-json",
            "openApiMethod": "POST",
            "openApiOperationId": "agentImgToJson"
          },
          "agent-extract-pdf": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional knowledge space UUID when window_context is enabled."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the PDF to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f",
                  "description": "UUID of an agent-mode pdf-json schema."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded PDF (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/agent/pdf-json",
            "openApiMethod": "POST",
            "openApiOperationId": "agentPdfToJson"
          },
          "agent-extract-txt": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "content",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "content": {
                  "type": "string",
                  "example": "<html><body><h1>Factura F-2026-00456</h1></body></html>",
                  "description": "Plain text, HTML, or XML string to extract from."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional knowledge space UUID when window_context is enabled."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2",
                  "description": "UUID of an agent-mode txt-json schema."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/agent/txt-json",
            "openApiMethod": "POST",
            "openApiOperationId": "agentTxtToJson"
          },
          "agent-extract-excel": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c",
                  "description": "Optional knowledge space UUID when window_context is enabled."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "8f14e45f-ceea-4e6f-8b23-1e2d3c4b5a6f",
                  "description": "UUID of an agent-mode excel-json schema."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded .xlsx or .csv (or data URL)."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/agent/excel-json",
            "openApiMethod": "POST",
            "openApiOperationId": "agentExcelToJson"
          },
          "convert-json-to-excel": {
            "inputSchema": {
              "type": "object",
              "required": [
                "skill"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "1f9e6103-9221-4c22-8a3a-8592d8b0eb38",
                  "description": "UUID of a json-excel schema for this account."
                }
              },
              "additionalProperties": true
            },
            "openApiPath": "/json-excel",
            "openApiMethod": "POST",
            "openApiOperationId": "jsonToExcel"
          }
        },
        "required": false,
        "description": "JSON Schema of each skill's input, generated from public/openapi.yaml. Binary file fields are exposed as file_base64/file_path for A2A DataParts."
      }
    ]
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "extract-excel",
      "name": "Convert an Excel or CSV file to JSON using a schema",
      "description": "Convert an Excel or CSV file to JSON using a schema. Accepts an .xlsx or .csv file and a schema_id, and returns transformed JSON whose keys match the schema properties exactly. If the workbook has multiple sheets, only the first sheet is processed. Max file size follows the REST /excel-json limits. A2A skill id: extract-excel. REST: POST /excel-json. JSON DataPart must include \"skill\": \"extract-excel\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. multipart/form-data equivalent: schema_id + file_base64 or file_path in the DataPart JSON. Optional space_id groups the persisted document. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "excel",
        "csv",
        "json"
      ],
      "examples": [
        "{\"skill\":\"extract-excel\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "convert-json-to-excel",
      "name": "Convert JSON documents to an Excel file",
      "description": "Convert JSON documents to an Excel file. Accepts JSON data and a schema_id, and returns a binary .xlsx whose columns follow the schema order and names. In A2A send schema_id plus data (array or object). Aliases records and json_data are normalized to data. A2A skill id: convert-json-to-excel. REST: POST /json-excel. JSON DataPart must include \"skill\": \"convert-json-to-excel\". Required A2A parameters: skill. Body JSON fields: schema_id, data. JSON body: schema_id (required) and data (array or object). Aliases records/json_data also map to data. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "convert",
        "excel",
        "json"
      ],
      "examples": [
        "{\"skill\":\"convert-json-to-excel\",\"schema_id\":\"<uuid>\",\"data\":[{}]}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "extract-pdf",
      "name": "Extract structured data from a PDF using a schema",
      "description": "Extract structured data from a PDF using a schema. Accepts a .pdf (selectable text or scanned) and a schema_id, and returns a single JSON object for the whole document. Response data always contains exactly one record. Max file size: 15 MB. A2A skill id: extract-pdf. REST: POST /pdf-json. JSON DataPart must include \"skill\": \"extract-pdf\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. schema_id + file_base64 or file_path in the DataPart JSON. Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "pdf",
        "json"
      ],
      "examples": [
        "{\"skill\":\"extract-pdf\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "extract-doc",
      "name": "Extract structured data from a text document using a schema",
      "description": "Extract structured data from a text document using a schema. Accepts .docx, .txt, .md, or .rtf plus a schema_id, and returns a single JSON object for the whole document. Legacy .doc (Word 97-2003) is not supported. Max file size: 10 MB; extracted text max 300,000 characters. A2A skill id: extract-doc. REST: POST /doc-json. JSON DataPart must include \"skill\": \"extract-doc\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. schema_id + file_base64 or file_path (.docx, .txt, .md, .rtf). Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "docx",
        "json"
      ],
      "examples": [
        "{\"skill\":\"extract-doc\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "extract-img",
      "name": "Extract structured data from an image using a schema",
      "description": "Extract structured data from an image using a schema. Accepts .jpeg, .jpg, .png, .webp, .heic, or .heif plus a schema_id, and returns a single JSON object from the visible content. Unreadable images return HTTP 422. Max file size: 15 MB. A2A skill id: extract-img. REST: POST /img-json. JSON DataPart must include \"skill\": \"extract-img\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. schema_id + file_base64 or file_path (.jpeg, .png, .webp, .heic). Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "image",
        "json"
      ],
      "examples": [
        "{\"skill\":\"extract-img\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "extract-txt",
      "name": "Extract structured data from plain text, HTML, or XML using a schema",
      "description": "Extract structured data from plain text, HTML, or XML using a schema. Accepts a content string (plain text, HTML, or XML) and a txt-json schema_id. No file upload. Max 300,000 characters. A2A skill id: extract-txt. REST: POST /txt-json. JSON DataPart must include \"skill\": \"extract-txt\". Required A2A parameters: skill, content, schema_id. Form/DataPart fields: schema_id, content, space_id. schema_id + content (plain text/HTML/XML string, not a file). Optional space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "text",
        "html",
        "xml"
      ],
      "examples": [
        "{\"skill\":\"extract-txt\",\"schema_id\":\"<uuid>\",\"content\":\"<text>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "get-document",
      "name": "Return the raw content of a persisted document",
      "description": "Return the raw content of a persisted document. Read-only. document_id is a path parameter only (no body). Returns markdown/text and metadata for a document created by an extraction with window_context enabled. Free call. A2A skill id: get-document. REST: GET /get-document/{document_id}. JSON DataPart must include \"skill\": \"get-document\". Required A2A parameters: skill, document_id. Path params: document_id. document_id is a path parameter only. No body and no questions. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "document"
      ],
      "examples": [
        "{\"skill\":\"get-document\",\"document_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "query-document",
      "name": "Answer questions about a persisted document",
      "description": "Answer questions about a persisted document. document_id goes in the URL path. questions (1–5 strings, max 400 chars each) go in the JSON body only — never embed document_id inside a question. Returns { user_ask, ia_response } aligned 1:1; ia_response items are null when the answer is not in the document. A2A skill id: query-document. REST: POST /document-context/{document_id}. JSON DataPart must include \"skill\": \"query-document\". Required A2A parameters: skill, document_id, questions. Path params: document_id. Body JSON fields: questions. document_id goes in the URL path. questions[] (1–5 strings, max 400 chars each) goes in the JSON body only — never inside the question text. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "qa",
        "document"
      ],
      "examples": [
        "{\"skill\":\"query-document\",\"document_id\":\"<uuid>\",\"questions\":[\"What is the total?\"]}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "query-space",
      "name": "Answer questions across every document in a knowledge space",
      "description": "Answer questions across every document in a knowledge space. space_id goes in the URL path. questions (1–5 strings, max 400 chars each) go in the JSON body only — never embed space_id inside a question. Cross-references up to 50 active documents in the space. Returns { user_ask, ia_response }; null means no evidence in any document. A2A skill id: query-space. REST: POST /space-context/{space_id}. JSON DataPart must include \"skill\": \"query-space\". Required A2A parameters: skill, space_id, questions. Path params: space_id. Body JSON fields: questions. space_id goes in the URL path. questions[] (1–5 strings, max 400 chars each) goes in the JSON body only — never inside the question text. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "qa",
        "space"
      ],
      "examples": [
        "{\"skill\":\"query-space\",\"space_id\":\"<uuid>\",\"questions\":[\"Compare notice periods\"]}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "create-space",
      "name": "Create a knowledge space for the API key account",
      "description": "Create a knowledge space for the API key account. Creates an empty knowledge space. Required JSON body field: name (max 200 chars). Returns space_id for use as optional space_id on extractions and for query-space. Free call. A2A skill id: create-space. REST: POST /create-space. JSON DataPart must include \"skill\": \"create-space\". Required A2A parameters: skill, name. Body JSON fields: name. JSON body with name (string, max 200 chars). Returns space_id. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "spaces"
      ],
      "examples": [
        "{\"skill\":\"create-space\",\"name\":\"Acme invoices\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "delete-space",
      "name": "Delete a knowledge space",
      "description": "Delete a knowledge space. space_id is a path parameter only (no body). Deletes the space owned by the API key account. Free call. A2A skill id: delete-space. REST: DELETE /delete-space/{space_id}. JSON DataPart must include \"skill\": \"delete-space\". Required A2A parameters: skill, space_id. Path params: space_id. space_id is a path parameter only. No body. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "spaces"
      ],
      "examples": [
        "{\"skill\":\"delete-space\",\"space_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "delete-document",
      "name": "Delete a persisted document",
      "description": "Delete a persisted document. document_id is a path parameter only (no body). Deletes the document owned by the API key account. Free call. A2A skill id: delete-document. REST: DELETE /delete-document/{document_id}. JSON DataPart must include \"skill\": \"delete-document\". Required A2A parameters: skill, document_id. Path params: document_id. document_id is a path parameter only. No body. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "document"
      ],
      "examples": [
        "{\"skill\":\"delete-document\",\"document_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "agent-extract-excel",
      "name": "Excel/CSV to JSON with Agent Mode reasoning",
      "description": "Excel/CSV to JSON with Agent Mode reasoning. Same inputs as extract-excel, but the schema must have is_agent_mode enabled. Returns extraction data plus agent_data from agent_definition. A2A skill id: agent-extract-excel. REST: POST /agent/excel-json. JSON DataPart must include \"skill\": \"agent-extract-excel\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-excel but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "excel"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-excel\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "agent-extract-pdf",
      "name": "PDF to JSON with Agent Mode reasoning",
      "description": "PDF to JSON with Agent Mode reasoning. Same inputs as extract-pdf, but the schema must have is_agent_mode enabled. Returns data[] plus typed agent_data. Max PDF size: 15 MB. A2A skill id: agent-extract-pdf. REST: POST /agent/pdf-json. JSON DataPart must include \"skill\": \"agent-extract-pdf\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-pdf but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "pdf"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-pdf\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "agent-extract-doc",
      "name": "Document to JSON with Agent Mode reasoning",
      "description": "Document to JSON with Agent Mode reasoning. Same inputs as extract-doc, but the schema must have is_agent_mode enabled. Formats: .docx, .txt, .md, .rtf. A2A skill id: agent-extract-doc. REST: POST /agent/doc-json. JSON DataPart must include \"skill\": \"agent-extract-doc\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-doc but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "docx"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-doc\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "agent-extract-img",
      "name": "Image to JSON with Agent Mode reasoning",
      "description": "Image to JSON with Agent Mode reasoning. Same inputs as extract-img, but the schema must have is_agent_mode enabled. Formats: JPEG, PNG, WebP, HEIC/HEIF. A2A skill id: agent-extract-img. REST: POST /agent/img-json. JSON DataPart must include \"skill\": \"agent-extract-img\". Required A2A parameters: skill, schema_id. Form/DataPart fields: schema_id, file_base64, file_path, filename, space_id. Same as extract-img but schema must have is_agent_mode. schema_id + file_base64 or file_path. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "image"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-img\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "agent-extract-txt",
      "name": "Text/HTML/XML to JSON with Agent Mode reasoning",
      "description": "Text/HTML/XML to JSON with Agent Mode reasoning. Same inputs as extract-txt, but the schema must have is_agent_mode enabled. content string + schema_id; returns data[] and agent_data. A2A skill id: agent-extract-txt. REST: POST /agent/txt-json. JSON DataPart must include \"skill\": \"agent-extract-txt\". Required A2A parameters: skill, content, schema_id. Form/DataPart fields: schema_id, content, space_id. Same as extract-txt but schema must have is_agent_mode. schema_id + content string. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "text"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-txt\",\"schema_id\":\"<uuid>\",\"content\":\"<text>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list-schemas",
      "name": "List every schema for the API key account",
      "description": "List every schema for the API key account. No parameters. Returns all schemas owned by the API key account (id, name, type, definition), newest first. Free call. A2A skill id: list-schemas. REST: GET /schemas. JSON DataPart must include \"skill\": \"list-schemas\". Required A2A parameters: skill. No parameters. Returns every schema in the account. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "schemas"
      ],
      "examples": [
        "{\"skill\":\"list-schemas\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "create-schema",
      "name": "Create a schema for the API key account",
      "description": "Create a schema for the API key account. JSON body: name, type (excel-json | json-excel | pdf-json | doc-json | img-json | txt-json), and schema_definition (object). Optional is_agent_mode, agent_definition, resumen_agent, window_context, window_time. Free call. A2A skill id: create-schema. REST: POST /create-schema. JSON DataPart must include \"skill\": \"create-schema\". Required A2A parameters: skill, name, type, schema_definition. Body JSON fields: name, type, schema_definition, is_agent_mode, agent_definition, resumen_agent, window_context, window_time. JSON body: name, type (excel-json|pdf-json|doc-json|img-json|txt-json|json-excel), schema_definition (object). Optional is_agent_mode, agent_definition, window_context, window_time. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "schemas"
      ],
      "examples": [
        "{\"skill\":\"create-schema\",\"name\":\"Invoice\",\"type\":\"pdf-json\",\"schema_definition\":{}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "delete-schema",
      "name": "Delete a schema from the API key account",
      "description": "Delete a schema from the API key account. JSON body with schema_id (UUID). Deletes the schema if it belongs to the API key account. Free call. A2A skill id: delete-schema. REST: POST /delete-schema. JSON DataPart must include \"skill\": \"delete-schema\". Required A2A parameters: skill, schema_id. Body JSON fields: schema_id. JSON body with schema_id (UUID). Query ?schema_id= also accepted by REST. Use snake_case names exactly. OpenAPI multipart `file` → file_base64 or file_path in A2A JSON.",
      "tags": [
        "schemas"
      ],
      "examples": [
        "{\"skill\":\"delete-schema\",\"schema_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    }
  ],
  "conformance": true,
  "conformance_errors": null,
  "homepage": null,
  "repository": null,
  "license": null,
  "pricing": null,
  "contact": null,
  "id": "900d4d12-f8e3-4512-ab85-aac98fde7da8"
}

Integrate this agent

curl -s https://a2aregistry.org/api/agents/900d4d12-f8e3-4512-ab85-aac98fde7da8

Test message

Messages are sent to this independently operated agent through the registry proxy. Do not include secrets or personal data.

Message exchangeConnecting
>