Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
80
A2A A2A 0.3 v1.0.0

Claix

claix.dev · 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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain claix.dev via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
51/100
grade D · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~1813 ms response
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

D
Conformance score: 51/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
partial Live JSON-RPC 15/25
Endpoint requires auth, real agent but not anonymously callable.
How to earn +10 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 20 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Claix (https://www.claix.dev). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 1 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Captured Hash
2026-09-09 00:38:28 current 56ce5c67380a… view →
Uptime
accumulating
1 direct probes · 30d
Response
1242ms
last direct probe
Skills
20
declared
Streaming
SSE-capable

Skills · 20 declared · mapped to canonical taxonomy

Convierte un archivo Excel o CSV a JSON según un schema

Convierte un archivo Excel o CSV a JSON según un schema Recibe un archivo .xlsx o .csv y un schema_id, y devuelve los datos transformados en JSON con las claves…

canonical Api Schema Understanding match 76%
extractexcelcsvjsonExcel a JSON
Convierte uno o varios documentos JSON a un archivo Excel

Convierte uno o varios documentos JSON a un archivo Excel Recibe datos JSON (como archivo, texto plano o cuerpo JSON puro) y un schema_id, y devuelve un archivo…

canonical Data Engineering match 76%
convertexceljsonJSON a Excel
Extrae datos estructurados de un archivo PDF según un schema

Extrae datos estructurados de un archivo PDF según un schema Recibe un archivo .pdf (de texto seleccionable o escaneado) y un schema_id, y devuelve un único obj…

canonical Data Engineering match 78%
extractpdfjsonPDF a JSON
Extrae datos estructurados de un documento de texto según un schema

Extrae datos estructurados de un documento de texto según un schema Recibe un archivo de documento (.docx, .txt, .md o .rtf) y un schema_id, y devuelve un único…

canonical Tabular Text match 78%
extractdocxjsonDocumento a JSON
Extrae datos estructurados de una imagen según un schema

Extrae datos estructurados de una imagen según un schema Recibe una imagen (.jpeg, .jpg, .png, .webp, .heic o .heif) y un schema_id, y devuelve un único objeto …

canonical Images Computer Vision match 80%
extractimagejsonImagen a JSON
Extrae datos estructurados de Txt / HTML / XML según un schema

Extrae datos estructurados de Txt / HTML / XML según un schema Recibe el campo `content` (texto plano, HTML o XML ya procesado) y un schema_id de tipo txt-json,…

canonical Web Scraping and Extraction match 80%
extracttexthtmlxmlTexto a JSON
Devuelve el contenido bruto de un documento procesado

Devuelve el contenido bruto de un documento procesado Equivale a GET https://claix.dev/get-document/{document_id}. Endpoint de solo lectura, sin body ni query p…

canonical Get Article match 80%
contextdocumentVentana de Contexto
Responde preguntas sobre un documento persistido

Responde preguntas sobre un documento persistido Equivale a POST https://claix.dev/document-context/{document_id}. Recibe un document_id en la URL (el que devol…

canonical Document Question Answering match 81%
contextqadocumentVentana de Contexto
Responde preguntas cruzando todos los documentos de un espacio

Responde preguntas cruzando todos los documentos de un espacio Equivale a POST https://claix.dev/space-context/{space_id}. Mismo formato de entrada y de salida …

canonical Document Question Answering match 80%
contextqaspaceEspacios de Conocimiento
Crea un espacio de conocimiento en la cuenta del API key

Crea un espacio de conocimiento en la cuenta del API key Equivale a POST https://claix.dev/create-space. Crea un espacio de conocimiento vacío en la cuenta de l…

canonical Name match 78%
spacesEspacios de Conocimiento
Elimina un espacio de conocimiento

Elimina un espacio de conocimiento Equivale a DELETE https://claix.dev/delete-space/{space_id}. Borra el espacio indicado en la ruta, filtrando a la vez por esp…

canonical Id match 77%
spacesEspacios de Conocimiento
Elimina un documento persistido

Elimina un documento persistido Equivale a DELETE https://claix.dev/delete-document/{document_id}. Borra de la tabla documents el documento indicado por documen…

canonical DeleteAction match 77%
contextdocumentVentana de Contexto
Excel/CSV a JSON con extracción y razonamiento Modo Agente

Excel/CSV a JSON con extracción y razonamiento Modo Agente Equivalente a POST /api/excel-json seguido de una fase agente con Gemini. Devuelve la respuesta de ex…

canonical Agent Orchestration match 79%
agentexcelModo Agente
PDF a JSON con extracción y razonamiento Modo Agente

PDF a JSON con extracción y razonamiento Modo Agente Equivalente a POST /api/pdf-json más fase agente. Devuelve data[] con la extracción del schema principal y …

canonical Agent Orchestration match 78%
agentpdfModo Agente
Documento a JSON con extracción y razonamiento Modo Agente

Documento a JSON con extracción y razonamiento Modo Agente Equivalente a POST /api/doc-json más fase agente. Devuelve data[] y agent_data. Requiere is_agent_mod…

canonical Agent Orchestration match 80%
agentdocxModo Agente
Imagen a JSON con extracción y razonamiento Modo Agente

Imagen a JSON con extracción y razonamiento Modo Agente Equivalente a POST /api/img-json más fase agente. Devuelve data[] y agent_data. Requiere is_agent_mode. …

canonical Agent Orchestration match 79%
agentimageModo Agente
Txt / HTML / XML a JSON con extracción y razonamiento Modo Agente

Txt / HTML / XML a JSON con extracción y razonamiento Modo Agente Equivalente a POST /api/txt-json más fase agente. Recibe content + schema_id (multipart). Devu…

canonical Agent Orchestration match 80%
agenttextModo Agente
Devuelve todos los schemas de la cuenta asociada al API key

Devuelve todos los schemas de la cuenta asociada al API key Endpoint de solo lectura, sin body ni parámetros. Llama `GET https://claix.dev/api/schemas`. Dado un…

canonical Api Schema Understanding match 80%
schemasSchemas
Crea un schema en la cuenta asociada al API key

Crea un schema en la cuenta asociada al API key Llama `POST https://claix.dev/api/create-schema`. Crea un schema listo para usar en los endpoints de extracción …

canonical Api Schema Understanding match 79%
schemasSchemas
Elimina un schema de la cuenta asociada al API key

Elimina un schema de la cuenta asociada al API key Llama `POST https://claix.dev/api/delete-schema`. Borra el schema identificado por `schema_id` si pertenece a…

canonical Api Schema Understanding match 79%
schemasSchemas

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-09-09 00:38:28 200 1242ms

Cheaper or better alternatives per-skill

↑ 10 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

Claix
Claix turns unstructured documents into typed JSON and queryable memory for AI agents. Extract PDF, Excel, Word, images, and text; ask persi
Claix · q 80%
schemasure.com
Extract strict, JSON-Schema-valid typed JSON from a PNG, JPEG, or WebP document image. Failed extraction calls are not settled. Always-paid
schemasure.com · q 65%
Document Conversion API
Converts between PDF/Office documents and structured JSON, both directions. Pure OSS libraries, zero external network calls at runtime.
nexus-mcp-infra · q 0%
Tools for Agents
HTTP tool platform for AI agents: web extract, search, documents, GPU embeddings/OCR, RAG pipelines, tool chains, and Agent Advisor. 13 A2A
Tools for Agents · q 90%
doc-extract-api.thestarboy9696-4ef.workers.dev
SchemaLock — extract structured JSON from any PDF or image into a JSON Schema you supply, not limited to invoice/receipt/contract/resume. Un
doc-extract-api.thestarboy9696-4ef.workers.dev · q 65%
Sandbox Contractor Agent live
Autonomous contractor agent selling keyless, no-model services over x402 pay-per-call (from $0.001). THREE catalogs: (1) developer utilities
Artem / A2A Sandbox · q 100%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/claix.dev.svg)](https://agenstry.com/agents/claix.dev)
[![Verified Business](https://agenstry.com/badge/claix.dev/identity.svg)](https://agenstry.com/agents/claix.dev)
[![Uptime](https://agenstry.com/badge/claix.dev/uptime.svg)](https://agenstry.com/agents/claix.dev)
[![A2A version](https://agenstry.com/badge/claix.dev/protocol.svg)](https://agenstry.com/agents/claix.dev)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "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.",
  "version": "1.0.0",
  "url": "https://www.claix.dev/a2a",
  "preferredTransport": "JSONRPC",
  "protocolVersion": "0.3",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extensions": [
      {
        "uri": "https://claix.dev/a2a/extensions/openapi-skills",
        "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.",
        "required": false,
        "params": {
          "extract-excel": {
            "openApiOperationId": "excelToJson",
            "openApiPath": "/excel-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"Excel/CSV a JSON\".\n",
                  "example": "8f14e45f-ceea-4e6f-8b23-1e2d3c4b5a6f"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "convert-json-to-excel": {
            "openApiOperationId": "jsonToExcel",
            "openApiPath": "/json-excel",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "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 del schema a utilizar. Alternativa a incluirlo en el cuerpo JSON (solo aplica cuando se usa application/json puro sin sobre).\n"
                }
              }
            }
          },
          "extract-pdf": {
            "openApiOperationId": "pdfToJson",
            "openApiPath": "/pdf-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"PDF a JSON\".\n",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "extract-doc": {
            "openApiOperationId": "docToJson",
            "openApiPath": "/doc-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"Documento a JSON\".\n",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "extract-img": {
            "openApiOperationId": "imgToJson",
            "openApiPath": "/img-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"Imagen a JSON\".\n",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "extract-txt": {
            "openApiOperationId": "txtToJson",
            "openApiPath": "/txt-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "content",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "content": {
                  "type": "string",
                  "description": "Texto plano, HTML o XML ya procesado. No es un archivo. M\u00e1ximo 300.000 caracteres.\n",
                  "example": "<html><body><h1>Factura F-2026-00456</h1></body></html>"
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo txt-json.\n",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "get-document": {
            "openApiOperationId": "getDocument",
            "openApiPath": "/get-document/{document_id}",
            "openApiMethod": "GET",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "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 del documento persistido en documents."
                }
              }
            }
          },
          "query-document": {
            "openApiOperationId": "documentContextAsk",
            "openApiPath": "/document-context/{document_id}",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "document_id",
                "questions"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "document_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID del documento persistido en documents."
                },
                "questions": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 5,
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400
                  },
                  "description": "Preguntas a responder usando solo el markdown persistido. M\u00e1ximo 5 por turno, 400 caracteres cada una.\n",
                  "example": [
                    "\u00bfCu\u00e1l es la penalizaci\u00f3n exacta por cancelaci\u00f3n anticipada?",
                    "\u00bfQu\u00e9 empresa figura como arrendataria y cu\u00e1l es su CIF?"
                  ]
                }
              }
            }
          },
          "query-space": {
            "openApiOperationId": "spaceContextAsk",
            "openApiPath": "/space-context/{space_id}",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "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 del espacio de conocimiento en espacios_conocimiento. Es el mismo valor que se env\u00eda como `space_id` opcional en los endpoints de extracci\u00f3n para agrupar el documento en ese espacio.\n"
                },
                "questions": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 5,
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400
                  },
                  "description": "Preguntas a responder usando solo el markdown persistido de los documentos del espacio. Mismo formato y mismos l\u00edmites que document-context: m\u00e1ximo 5 por turno, 400 caracteres cada una.\n",
                  "example": [
                    "\u00bfQu\u00e9 proveedor factura m\u00e1s en total sumando todas las facturas?",
                    "\u00bfHay alg\u00fan contrato cuyo importe no coincida con su factura?"
                  ]
                }
              }
            }
          },
          "create-space": {
            "openApiOperationId": "createSpace",
            "openApiPath": "/create-space",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "name"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200,
                  "description": "Nombre del espacio de conocimiento. Es el \u00fanico campo de entrada. M\u00e1ximo 200 caracteres.\n",
                  "example": "Proveedores 2026"
                }
              }
            }
          },
          "delete-space": {
            "openApiOperationId": "deleteSpace",
            "openApiPath": "/delete-space/{space_id}",
            "openApiMethod": "DELETE",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "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 del espacio de conocimiento a eliminar, el que devolvi\u00f3 POST /create-space.\n"
                }
              }
            }
          },
          "delete-document": {
            "openApiOperationId": "deleteDocument",
            "openApiPath": "/delete-document/{document_id}",
            "openApiMethod": "DELETE",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "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 del documento persistido en documents."
                }
              }
            }
          },
          "agent-extract-excel": {
            "openApiOperationId": "agentExcelToJson",
            "openApiPath": "/agent/excel-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"Excel/CSV a JSON\".\n",
                  "example": "8f14e45f-ceea-4e6f-8b23-1e2d3c4b5a6f"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "agent-extract-pdf": {
            "openApiOperationId": "agentPdfToJson",
            "openApiPath": "/agent/pdf-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"PDF a JSON\".\n",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "agent-extract-doc": {
            "openApiOperationId": "agentDocToJson",
            "openApiPath": "/agent/doc-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"Documento a JSON\".\n",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "agent-extract-img": {
            "openApiOperationId": "agentImgToJson",
            "openApiPath": "/agent/img-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "file_base64": {
                  "type": "string",
                  "description": "Base64-encoded file (or data URL). A2A JSON equivalent of OpenAPI multipart `file`."
                },
                "file_path": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public https URL of the file to download."
                },
                "filename": {
                  "type": "string",
                  "description": "Original filename with extension."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo \"Imagen a JSON\".\n",
                  "example": "3c7a9f21-4b8e-4d1a-9c6f-2e0d8a5b7c4f"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "agent-extract-txt": {
            "openApiOperationId": "agentTxtToJson",
            "openApiPath": "/agent/txt-json",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "content",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "content": {
                  "type": "string",
                  "description": "Texto plano, HTML o XML ya procesado. No es un archivo. M\u00e1ximo 300.000 caracteres.\n",
                  "example": "<html><body><h1>Factura F-2026-00456</h1></body></html>"
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Identificador del schema (previamente creado) de tipo txt-json.\n",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2"
                },
                "space_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Opcional. Espacio de conocimiento al que se asocia el documento guardado. Debe pertenecer al mismo usuario due\u00f1o de la API key. Solo tiene efecto cuando el schema tiene la ventana de contexto activada, que es cuando el documento se guarda.\n",
                  "example": "5b9e2c14-7d3a-4f8b-9e1c-6a0d4b8f2e7c"
                }
              }
            }
          },
          "list-schemas": {
            "openApiOperationId": "listSchemas",
            "openApiPath": "/schemas",
            "openApiMethod": "GET",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                }
              }
            }
          },
          "create-schema": {
            "openApiOperationId": "createSchema",
            "openApiPath": "/create-schema",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "name",
                "type",
                "schema_definition"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "name": {
                  "type": "string",
                  "maxLength": 200,
                  "description": "Nombre visible del schema.",
                  "example": "DNI cliente"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "excel-json",
                    "json-excel",
                    "pdf-json",
                    "doc-json",
                    "img-json",
                    "txt-json"
                  ],
                  "description": "Tipo de conversi\u00f3n para el que se usar\u00e1 este schema.",
                  "example": "img-json"
                },
                "schema_definition": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/SchemaFieldDefinition"
                  },
                  "description": "Campos a extraer. Cada clave es el nombre de la propiedad JSON resultante; cada valor tiene type (string, integer, number o boolean) y description.\n"
                },
                "is_agent_mode": {
                  "type": "boolean",
                  "description": "Activa el Modo Agente. Si omites este campo pero env\u00edas agent_definition, se asume true.\n",
                  "example": true
                },
                "agent_definition": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/AgentFieldDefinition"
                  },
                  "description": "Obligatorio si is_agent_mode es true. Cada clave es el nombre del campo en agent_data. Types: boolean, string, closed, integer. Si type es closed, options es obligatorio.\n"
                },
                "resumen_agent": {
                  "type": "string",
                  "maxLength": 500,
                  "nullable": true,
                  "description": "Instrucci\u00f3n opcional para la fase de razonamiento."
                },
                "window_context": {
                  "type": "boolean",
                  "description": "Activa la ventana temporal de contexto. Por defecto false.\n",
                  "example": false
                },
                "window_time": {
                  "oneOf": [
                    {
                      "type": "number",
                      "enum": [
                        5,
                        10,
                        15,
                        30,
                        45,
                        60,
                        90,
                        120,
                        180,
                        240,
                        360,
                        480,
                        720,
                        1440,
                        0
                      ]
                    },
                    {
                      "type": "string",
                      "enum": [
                        "infinity"
                      ]
                    }
                  ],
                  "nullable": true,
                  "description": "Obligatorio si window_context es true. Duraci\u00f3n en minutos. Valores admitidos: 5, 10, 15, 30, 45, 60, 90, 120, 180, 240, 360, 480, 720, 1440. Tambi\u00e9n puedes enviar 0 o la cadena `infinity` para ventana sin caducidad; requiere modo persistente activo en la cuenta. Se persiste como window_time 0.\n",
                  "example": null
                }
              }
            }
          },
          "delete-schema": {
            "openApiOperationId": "deleteSchema",
            "openApiPath": "/delete-schema",
            "openApiMethod": "POST",
            "inputSchema": {
              "type": "object",
              "additionalProperties": true,
              "required": [
                "skill",
                "schema_id"
              ],
              "properties": {
                "skill": {
                  "type": "string",
                  "description": "Skill identifier matching the Agent Card skill id."
                },
                "schema_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID del schema a eliminar.",
                  "example": "b980cfe7-61ef-4a5a-9724-881c8a5541e2"
                }
              }
            }
          }
        }
      }
    ]
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "extract-excel",
      "name": "Convierte un archivo Excel o CSV a JSON seg\u00fan un schema",
      "description": "Convierte un archivo Excel o CSV a JSON seg\u00fan un schema Recibe un archivo .xlsx o .csv y un schema_id, y devuelve los datos transformados en JSON con las claves exactamente iguales a las propiedades definidas en el schema. Si el archivo tiene varias hojas, solo se procesa la primera. A2A skill id: extract-excel. JSON DataPart must include \"skill\": \"extract-excel\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "excel",
        "csv",
        "json",
        "Excel a JSON"
      ],
      "examples": [
        "{\"skill\":\"extract-excel\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "convert-json-to-excel",
      "name": "Convierte uno o varios documentos JSON a un archivo Excel",
      "description": "Convierte uno o varios documentos JSON a un archivo Excel Recibe datos JSON (como archivo, texto plano o cuerpo JSON puro) y un schema_id, y devuelve un archivo .xlsx binario con las columnas en el orden y nombres definidos por el schema. Admite multipart/form-data (uno o varios campos con JSON) o application/json puro (array, objeto \u00fanico, o sobre con schema_id + data/records). A2A skill id: convert-json-to-excel. JSON DataPart must include \"skill\": \"convert-json-to-excel\". Required parameters: skill. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "convert",
        "excel",
        "json",
        "JSON a Excel"
      ],
      "examples": [
        "{\"skill\":\"convert-json-to-excel\",\"schema_id\":\"<uuid>\",\"data\":[{}]}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "extract-pdf",
      "name": "Extrae datos estructurados de un archivo PDF seg\u00fan un schema",
      "description": "Extrae datos estructurados de un archivo PDF seg\u00fan un schema Recibe un archivo .pdf (de texto seleccionable o escaneado) y un schema_id, y devuelve un \u00fanico objeto JSON con los datos extra\u00eddos del documento completo, con las claves exactamente iguales a las propiedades definidas en el schema. A diferencia de excel-json, el documento se trata como una \u00fanica fuente de datos: la respuesta siempre contiene exactamente un registro en \"data\", nunca una fila por cada elemento del documento. El tama\u00f1o m\u00e1ximo de archivo admitido es 15 MB. A2A skill id: extract-pdf. JSON DataPart must include \"skill\": \"extract-pdf\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "pdf",
        "json",
        "PDF a JSON"
      ],
      "examples": [
        "{\"skill\":\"extract-pdf\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "extract-doc",
      "name": "Extrae datos estructurados de un documento de texto seg\u00fan un schema",
      "description": "Extrae datos estructurados de un documento de texto seg\u00fan un schema Recibe un archivo de documento (.docx, .txt, .md o .rtf) y un schema_id, y devuelve un \u00fanico objeto JSON con los datos extra\u00eddos del documento completo, con las claves exactamente iguales a las propiedades definidas en el schema. El texto se extrae de forma determinista en el servidor ANTES de llamar a la IA (desempaquetado del .docx, decodificaci\u00f3n UTF-8 para .txt/.md, stripping de c\u00f3digos de control para .rtf); solo el texto plano resultante se env\u00eda al modelo. El formato legacy .doc (Word 97-2003) no est\u00e1 soportado. Igual que en pdf-json, el documento se trata como una \u00fanica fuente de datos: la respuesta siempre contiene exactamente un registro en \"data\". El tama\u00f1o m\u00e1ximo de archivo admitido es 10 MB, y el texto extra\u00eddo no puede superar los 300.000 caracteres. A2A skill id: extract-doc. JSON DataPart must include \"skill\": \"extract-doc\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "docx",
        "json",
        "Documento a JSON"
      ],
      "examples": [
        "{\"skill\":\"extract-doc\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "extract-img",
      "name": "Extrae datos estructurados de una imagen seg\u00fan un schema",
      "description": "Extrae datos estructurados de una imagen seg\u00fan un schema Recibe una imagen (.jpeg, .jpg, .png, .webp, .heic o .heif) y un schema_id, y devuelve un \u00fanico objeto JSON con los datos extra\u00eddos del contenido visible, con las claves exactamente iguales a las propiedades definidas en el schema. El an\u00e1lisis lo realiza un modelo multimodal de IA. Antes de extraer datos, el modelo eval\u00faa si la imagen es legible (nitidez, enfoque, iluminaci\u00f3n); si no lo es, responde con 422. Igual que en pdf-json, la imagen se trata como una \u00fanica fuente de datos: la respuesta siempre contiene exactamente un registro en \"data\". El tama\u00f1o m\u00e1ximo de archivo admitido es 15 MB. A2A skill id: extract-img. JSON DataPart must include \"skill\": \"extract-img\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "image",
        "json",
        "Imagen a JSON"
      ],
      "examples": [
        "{\"skill\":\"extract-img\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "extract-txt",
      "name": "Extrae datos estructurados de Txt / HTML / XML seg\u00fan un schema",
      "description": "Extrae datos estructurados de Txt / HTML / XML seg\u00fan un schema Recibe el campo `content` (texto plano, HTML o XML ya procesado) y un schema_id de tipo txt-json, y devuelve un \u00fanico objeto JSON con los datos extra\u00eddos. No se sube ning\u00fan archivo. M\u00e1ximo 300.000 caracteres. URL p\u00fablica: POST https://claix.dev/api/txt-json. Tarifa fija \u20ac0,10 por llamada exitosa (HTTP 200) tras las 15 primeras gratis. A2A skill id: extract-txt. JSON DataPart must include \"skill\": \"extract-txt\". Required parameters: skill, content, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "extract",
        "text",
        "html",
        "xml",
        "Texto a JSON"
      ],
      "examples": [
        "{\"skill\":\"extract-txt\",\"schema_id\":\"<uuid>\",\"content\":\"<text>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "get-document",
      "name": "Devuelve el contenido bruto de un documento procesado",
      "description": "Devuelve el contenido bruto de un documento procesado Equivale a GET https://claix.dev/get-document/{document_id}. Endpoint de solo lectura, sin body ni query params. Recupera el contenido bruto (texto/markdown) y metadatos de un documento ya procesado por un endpoint de extracci\u00f3n con window_context activo. El documento debe pertenecer a la cuenta de la API key y no haber expirado. Esta llamada es gratuita: no se factura ni consume el cupo de extracciones. A2A skill id: get-document. JSON DataPart must include \"skill\": \"get-document\". Required parameters: skill, document_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "document",
        "Ventana de Contexto"
      ],
      "examples": [
        "{\"skill\":\"get-document\",\"document_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "query-document",
      "name": "Responde preguntas sobre un documento persistido",
      "description": "Responde preguntas sobre un documento persistido Equivale a POST https://claix.dev/document-context/{document_id}. Recibe un document_id en la URL (el que devolvi\u00f3 una extracci\u00f3n con window_context activo) y un array `questions` en JSON. Carga markdown_content de la tabla documents, llama a Gemini 3.6 con el mismo modelo y generationConfig que el resto de funciones, y devuelve `{ user_ask, ia_response }`. M\u00e1ximo 5 preguntas y 400 caracteres por pregunta. El documento debe pertenecer a la cuenta de la API key y no haber expirado. A2A skill id: query-document. JSON DataPart must include \"skill\": \"query-document\". Required parameters: skill, document_id, questions. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "qa",
        "document",
        "Ventana de Contexto"
      ],
      "examples": [
        "{\"skill\":\"query-document\",\"document_id\":\"<uuid>\",\"questions\":[\"What is the total?\"]}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "query-space",
      "name": "Responde preguntas cruzando todos los documentos de un espacio",
      "description": "Responde preguntas cruzando todos los documentos de un espacio Equivale a POST https://claix.dev/space-context/{space_id}. Mismo formato de entrada y de salida que POST /document-context/{document_id}: body con un array `questions` (m\u00e1ximo 5 preguntas, 400 caracteres cada una) y respuesta `{ user_ask, ia_response }` alineada 1:1. La \u00fanica diferencia es el alcance: en vez de un \u00fanico documento, carga el markdown_content de todos los documentos vigentes cuyo `espacio_id` sea ese space_id, y responde cruzando la informaci\u00f3n entre ellos (comparar, sumar, relacionar o consolidar datos repartidos en varios archivos). El espacio debe pertenecer a la cuenta de la API key. Los documentos expirados se ignoran. Para acotar coste y mantener la precisi\u00f3n del modelo se cargan como m\u00e1ximo 50 documentos y 200.000 caracteres en total, repartidos entre ellos. A2A skill id: query-space. JSON DataPart must include \"skill\": \"query-space\". Required parameters: skill, space_id, questions. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "qa",
        "space",
        "Espacios de Conocimiento"
      ],
      "examples": [
        "{\"skill\":\"query-space\",\"space_id\":\"<uuid>\",\"questions\":[\"Compare notice periods\"]}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "create-space",
      "name": "Crea un espacio de conocimiento en la cuenta del API key",
      "description": "Crea un espacio de conocimiento en la cuenta del API key Equivale a POST https://claix.dev/create-space. Crea un espacio de conocimiento vac\u00edo en la cuenta de la API key. El \u00fanico campo obligatorio es `name`. Devuelve el `space_id` que luego se env\u00eda como `space_id` opcional en los endpoints de extracci\u00f3n para agrupar documentos, y que identifica el espacio en POST /space-context/{space_id}. Esta llamada es gratuita: no se factura ni consume el cupo de extracciones. A2A skill id: create-space. JSON DataPart must include \"skill\": \"create-space\". Required parameters: skill, name. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "spaces",
        "Espacios de Conocimiento"
      ],
      "examples": [
        "{\"skill\":\"create-space\",\"name\":\"Acme invoices\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "delete-space",
      "name": "Elimina un espacio de conocimiento",
      "description": "Elimina un espacio de conocimiento Equivale a DELETE https://claix.dev/delete-space/{space_id}. Borra el espacio indicado en la ruta, filtrando a la vez por espacio y por cuenta de la API key, de modo que un espacio ajeno nunca se puede borrar. No admite body ni query params. Si no se elimina ninguna fila (no existe o es ajeno), responde 404 con mensaje gen\u00e9rico. Llamada gratuita. A2A skill id: delete-space. JSON DataPart must include \"skill\": \"delete-space\". Required parameters: skill, space_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "spaces",
        "Espacios de Conocimiento"
      ],
      "examples": [
        "{\"skill\":\"delete-space\",\"space_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "delete-document",
      "name": "Elimina un documento persistido",
      "description": "Elimina un documento persistido Equivale a DELETE https://claix.dev/delete-document/{document_id}. Borra de la tabla documents el documento indicado por document_id, filtrando simult\u00e1neamente por id y user_id de la API key. No admite body ni query params. Si no se elimina ninguna fila (no existe, es ajeno o ya fue purgado), responde 404 con mensaje gen\u00e9rico. Llamada gratuita. A2A skill id: delete-document. JSON DataPart must include \"skill\": \"delete-document\". Required parameters: skill, document_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "context",
        "document",
        "Ventana de Contexto"
      ],
      "examples": [
        "{\"skill\":\"delete-document\",\"document_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "agent-extract-excel",
      "name": "Excel/CSV a JSON con extracci\u00f3n y razonamiento Modo Agente",
      "description": "Excel/CSV a JSON con extracci\u00f3n y razonamiento Modo Agente Equivalente a POST /api/excel-json seguido de una fase agente con Gemini. Devuelve la respuesta de extracci\u00f3n (data, mapa_columnas, etc.) m\u00e1s agent_data seg\u00fan agent_definition. El schema debe tener is_agent_mode activado. Misma petici\u00f3n multipart (file + schema_id) y mismos c\u00f3digos de error que /api/excel-json; adem\u00e1s puede devolver 400 si el schema no tiene Modo Agente o agent_definition inv\u00e1lida, o 502 si falla la fase agente. A2A skill id: agent-extract-excel. JSON DataPart must include \"skill\": \"agent-extract-excel\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "excel",
        "Modo Agente"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-excel\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "agent-extract-pdf",
      "name": "PDF a JSON con extracci\u00f3n y razonamiento Modo Agente",
      "description": "PDF a JSON con extracci\u00f3n y razonamiento Modo Agente Equivalente a POST /api/pdf-json m\u00e1s fase agente. Devuelve data[] con la extracci\u00f3n del schema principal y agent_data con evaluaciones tipadas (booleanos, enteros, strings, opciones cerradas). Requiere is_agent_mode en el schema. Tama\u00f1o m\u00e1ximo del PDF: 15 MB. A2A skill id: agent-extract-pdf. JSON DataPart must include \"skill\": \"agent-extract-pdf\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "pdf",
        "Modo Agente"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-pdf\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "agent-extract-doc",
      "name": "Documento a JSON con extracci\u00f3n y razonamiento Modo Agente",
      "description": "Documento a JSON con extracci\u00f3n y razonamiento Modo Agente Equivalente a POST /api/doc-json m\u00e1s fase agente. Devuelve data[] y agent_data. Requiere is_agent_mode. Formatos admitidos: .docx, .txt, .md, .rtf. Tama\u00f1o m\u00e1ximo: 10 MB; texto extra\u00eddo m\u00e1x. 300.000 caracteres. A2A skill id: agent-extract-doc. JSON DataPart must include \"skill\": \"agent-extract-doc\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "docx",
        "Modo Agente"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-doc\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "agent-extract-img",
      "name": "Imagen a JSON con extracci\u00f3n y razonamiento Modo Agente",
      "description": "Imagen a JSON con extracci\u00f3n y razonamiento Modo Agente Equivalente a POST /api/img-json m\u00e1s fase agente. Devuelve data[] y agent_data. Requiere is_agent_mode. Formatos: JPEG, PNG, WebP, HEIC/HEIF. Tama\u00f1o m\u00e1ximo: 15 MB. A2A skill id: agent-extract-img. JSON DataPart must include \"skill\": \"agent-extract-img\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "image",
        "Modo Agente"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-img\",\"schema_id\":\"<uuid>\",\"file_base64\":\"<base64>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "agent-extract-txt",
      "name": "Txt / HTML / XML a JSON con extracci\u00f3n y razonamiento Modo Agente",
      "description": "Txt / HTML / XML a JSON con extracci\u00f3n y razonamiento Modo Agente Equivalente a POST /api/txt-json m\u00e1s fase agente. Recibe content + schema_id (multipart). Devuelve data[] y agent_data. Requiere is_agent_mode. M\u00e1ximo 300.000 caracteres. URL p\u00fablica: POST https://claix.dev/agent/txt-json. Misma tarifa que extracci\u00f3n txt-json (\u20ac0,10 por llamada exitosa tras el free tier). A2A skill id: agent-extract-txt. JSON DataPart must include \"skill\": \"agent-extract-txt\". Required parameters: skill, content, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "agent",
        "text",
        "Modo Agente"
      ],
      "examples": [
        "{\"skill\":\"agent-extract-txt\",\"schema_id\":\"<uuid>\",\"content\":\"<text>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "list-schemas",
      "name": "Devuelve todos los schemas de la cuenta asociada al API key",
      "description": "Devuelve todos los schemas de la cuenta asociada al API key Endpoint de solo lectura, sin body ni par\u00e1metros. Llama `GET https://claix.dev/api/schemas`. Dado un API key v\u00e1lido, devuelve la lista completa de schemas creados por el usuario due\u00f1o de esa key, con toda su informaci\u00f3n (id, nombre, tipo y definici\u00f3n), ordenados del m\u00e1s reciente al m\u00e1s antiguo. Esta llamada es gratuita: no se factura ni consume el cupo de extracciones. A2A skill id: list-schemas. JSON DataPart must include \"skill\": \"list-schemas\". Required parameters: skill. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "schemas",
        "Schemas"
      ],
      "examples": [
        "{\"skill\":\"list-schemas\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "create-schema",
      "name": "Crea un schema en la cuenta asociada al API key",
      "description": "Crea un schema en la cuenta asociada al API key Llama `POST https://claix.dev/api/create-schema`. Crea un schema listo para usar en los endpoints de extracci\u00f3n o Modo Agente. `name`, `type` y `schema_definition` son obligatorios. Si `is_agent_mode` es true (o se env\u00eda `agent_definition`), hay que incluir `agent_definition` con al menos un par\u00e1metro. El tipo json-excel no admite Modo Agente. Esta llamada es gratuita: no se factura ni consume el cupo de extracciones. A2A skill id: create-schema. JSON DataPart must include \"skill\": \"create-schema\". Required parameters: skill, name, type, schema_definition. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "schemas",
        "Schemas"
      ],
      "examples": [
        "{\"skill\":\"create-schema\",\"name\":\"Invoice\",\"type\":\"pdf-json\",\"schema_definition\":{}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    },
    {
      "id": "delete-schema",
      "name": "Elimina un schema de la cuenta asociada al API key",
      "description": "Elimina un schema de la cuenta asociada al API key Llama `POST https://claix.dev/api/delete-schema`. Borra el schema identificado por `schema_id` si pertenece a la cuenta del API key. Tambi\u00e9n admite DELETE y el query param `?schema_id=<uuid>`. Esta llamada es gratuita: no se factura ni consume el cupo de extracciones. A2A skill id: delete-schema. JSON DataPart must include \"skill\": \"delete-schema\". Required parameters: skill, schema_id. Binary OpenAPI `file` fields are accepted as file_base64 or file_path in A2A JSON.",
      "tags": [
        "schemas",
        "Schemas"
      ],
      "examples": [
        "{\"skill\":\"delete-schema\",\"schema_id\":\"<uuid>\"}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "security": [
        {
          "apiKey": []
        }
      ]
    }
  ],
  "provider": {
    "url": "https://www.claix.dev",
    "organization": "Claix"
  },
  "documentationUrl": "https://www.claix.dev/documentation",
  "iconUrl": "https://www.claix.dev/claix-logo.png",
  "supportsAuthenticatedExtendedCard": false,
  "securitySchemes": {
    "apiKey": {
      "type": "apiKey",
      "name": "x-api-key",
      "in": "header",
      "description": "Claix API key (same as the REST API)."
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ],
  "supportedInterfaces": [
    {
      "url": "https://www.claix.dev/a2a",
      "protocolBinding": "JSONRPC",
      "tenant": "",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://www.claix.dev/a2a",
      "protocolBinding": "JSONRPC",
      "tenant": "",
      "protocolVersion": "0.3"
    }
  ]
}