extraer-datos-ine
Allows creating one-time capture links for INE/passport documents that can deliver the captured photo and extracted data directly to a configured Telegram destination, keeping sensitive data out of the chat.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@extraer-datos-ineExtrae los datos de la INE en ~/Descargas/ine_frente.jpg y ~/Descargas/ine_reverso.jpg."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
extraer-datos-ine-mcp
Servidor MCP oficial de Extraer Datos de INE. Deja que Claude, Cursor, VS Code y otros clientes MCP extraigan los datos de credenciales para votar INE/IFE (nombre, CURP, clave de elector, fecha de nacimiento, domicilio, vigencia…) y creen enlaces para que tus clientes capturen su documento desde el celular.
Herramientas
Herramienta | Qué hace | Costo |
| Extrae los datos de fotos de una INE guardadas en tu computadora ( | 1 token (se reembolsa si la imagen es ilegible o falla la extracción) |
| Crea un enlace de un solo uso para que tu cliente fotografíe su INE o pasaporte; los datos llegan a tu destino, no al chat | Gratis crear; 1 token por captura (se reembolsa si falla) |
| Tokens disponibles | Gratis |
Necesitas una API key: créala en extraerdatosdeine.com (panel → API Keys).
Related MCP server: @parserelay/mcp
Privacidad
Con extraer_ine, los datos personales extraídos (nombre, CURP, domicilio, clave de elector) entran a
la conversación con tu asistente de IA y, por lo tanto, al proveedor de ese modelo. Si eso no es
aceptable para tu caso, usa crear_enlace_captura: la foto y los datos van directo de tu cliente a tu
destino (webhook, correo o Telegram, configurado en el panel → Destinos) y al chat solo llega el enlace.
Extraer Datos de INE no guarda los datos de las extracciones exitosas.
Instalación
Claude Code
claude mcp add extraer-datos-ine -e EXTRAER_DATOS_INE_API_KEY=ine_tu_api_key -- npx -y extraer-datos-ine-mcpClaude Desktop, Cursor, VS Code y otros
{
"mcpServers": {
"extraer-datos-ine": {
"command": "npx",
"args": ["-y", "extraer-datos-ine-mcp"],
"env": { "EXTRAER_DATOS_INE_API_KEY": "ine_tu_api_key" }
}
}
}(Claude Desktop: claude_desktop_config.json. Cursor: ~/.cursor/mcp.json.)
Ejemplos
"Extrae los datos de la INE en ~/Descargas/ine_frente.jpg y ~/Descargas/ine_reverso.jpg."
"Crea un enlace de captura para la reserva 8841 que mande los datos a mi destino dst_…"
"¿Cuántos tokens me quedan en Extraer Datos de INE?"
Enlaces de captura
Un solo uso: 15 minutos para abrirlo y, ya abierto, 15 minutos para capturar.
La
urlsolo se devuelve al crearlo; compártela solo con tu cliente.Máximo 20 enlaces vivos a la vez por cuenta.
document_type:ine(por defecto) opassport.require_backpide también el reverso.reference(hasta 80 caracteres) viaja con la entrega.
Variables de entorno
Variable | |
| Obligatoria |
| Opcional, por defecto |
Errores
Los errores de la API vuelven como resultado de la herramienta (isError) con su code, por ejemplo
INVALID_API_KEY (401), INSUFFICIENT_TOKENS (402), LOW_IMAGE_QUALITY (422, con missing_fields),
DESTINATION_NOT_FOUND o TOO_MANY_LIVE_LINKS. Un archivo que no existe da FILE_NOT_FOUND y uno que
no es imagen da INVALID_IMAGE_FORMAT, sin llamar a la API ni gastar tokens.
Enlaces
Documentación de la API: https://extraerdatosdeine.com/docs
SDK de JavaScript: https://www.npmjs.com/package/extraer-datos-ine
SDK de Python: https://pypi.org/project/extraer-datos-ine/
MIT
Available Tools
3 toolsconsultar_saldoConsultar saldoBRead-only
Tokens disponibles en tu cuenta de Extraer Datos de INE. Sin costo.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds one genuinely useful behavioral fact beyond them: the query is free and does not consume tokens ('Sin costo'). It does not describe what the response contains (token count, expiration, etc.).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short fragments with no filler, and the resource is front-loaded. It is slightly clipped for a purpose clause, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial zero-parameter read tool this is nearly sufficient, but with no output schema the description is the only place a return-value description could live, and it never says what checking the balance actually yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case. No parameter explanation is required, and the description correctly avoids inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the concrete resource (available tokens in the account) and its scope ('Extraer Datos de INE'), which is clearly distinct from the extraction sibling extraer_ine. The verb is implied rather than stated, but an agent can tell what it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or routing toward alternatives. 'Sin costo' implies the call is free and therefore safe to check before consuming resources, but this must be inferred rather than being stated as a condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crear_enlace_capturaCrear enlace de capturaA
Crea un enlace de un solo uso para que un cliente fotografíe su INE o pasaporte desde su celular. Tiene 15 minutos para abrirlo y, ya abierto, 15 minutos para capturar. Los datos NO llegan a esta conversación: se entregan al destino destination_id (webhook, correo o Telegram configurado en el panel de extraerdatosdeine.com → Destinos). Crear el enlace es gratis; la captura consume 1 token (se reembolsa si la extracción o la entrega fallan). Máximo 20 enlaces vivos a la vez. Devuelve url (compártela solo con el cliente) y expiresAt.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | No | Tu referencia (reserva, folio); viaja con la entrega | |
| require_back | No | Pedir también el reverso | |
| document_type | No | Documento que pedirá el enlace | ine |
| destination_id | Yes | ID del destino (panel → Destinos) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false), which only flag that this is a non-idempotent write. The description discloses the 15-minute open window, the 15-minute capture window, that data bypasses the conversation and goes to the configured destination, the cost model (free to create, 1 token per capture, refunded on failure), and the 20-live-link cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, and each following sentence carries a distinct operational fact (expiry, routing, cost, quota, return values). No sentence restates another or wastes space despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly supplies the return fields (url, expiresAt) and warns the url is shareable only with the client. Combined with limits, cost, and delivery routing, an agent has everything needed to invoke and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3, but the description adds real meaning beyond the schema by explaining what destination_id actually does (routes to webhook, email, or Telegram configured in the panel) and noting the returned url/expiresAt. It does not add format detail for reference or require_back, but the schema covers those adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (creates a one-time capture link) and immediately explains the mechanism: a client photographs their INE/passport from their phone. This is clearly distinguishable from the siblings extraer_ine (which performs extraction) and consultar_saldo (which checks balance), since this tool only mints the link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the use case well: the client captures remotely and the data is routed to destination_id rather than into the conversation, which tells an agent when this is the right tool. However, it never explicitly contrasts itself with extraer_ine or states when NOT to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extraer_ineExtraer datos de INEA
Extrae los datos de una credencial para votar INE/IFE a partir de fotos guardadas en esta computadora: nombre, apellidos, CURP, clave de elector, fecha de nacimiento, sexo, domicilio, sección, vigencia y más. front_path es la ruta del frente (JPEG, PNG o WebP, máximo 10 MB); back_path (reverso) es opcional. Consume 1 token de tu saldo; si la imagen es ilegible (LOW_IMAGE_QUALITY) o falla la extracción, el token se reembolsa. Los datos personales extraídos quedan en esta conversación.
| Name | Required | Description | Default |
|---|---|---|---|
| back_path | No | Ruta local de la foto del reverso (opcional) | |
| front_path | Yes | Ruta local de la foto del frente de la INE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false. The description adds important non-schema behavior: it consumes 1 token, refunds on LOW_IMAGE_QUALITY or extraction failure, and keeps personal data in the conversation. It does not cover auth or idempotency, but the added cost/refund/privacy context is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads what is extracted, then input details, cost/refund, and privacy. Every sentence carries necessary information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter extraction tool with no output schema, the description is nearly complete: it lists return fields, input formats, cost, refund policy, and data handling. It could be slightly richer about output structure (e.g., JSON shape) or error modes, but is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents both parameters, but the description adds accepted image formats (JPEG, PNG, WebP), a 10 MB size cap, and clarifies back_path is optional—meaningful constraints beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Extrae los datos de una credencial para votar INE/IFE') and enumerates the extracted fields, making it unmistakable versus siblings like consultar_saldo or crear_enlace_captura.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context (photos stored on this computer, optional back_path) and operational constraints (file types, size limit), but does not explicitly state when not to use it or name alternatives—though none of the siblings overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
consultar_saldo - First observed
crear_enlace_captura - First observed
extraer_ine
TDQS
Scored across 3 tools
The three tools cover clearly distinct actions: extracting data from an INE image (extraer_ine), checking account balance (consultar_saldo), and generating a remote capture link (crear_enlace_captura). No overlap exists between reading a local file, querying a balance, and creating a link, so an agent can select unambiguously.
All three names follow a consistent Spanish verb_noun pattern (extraer_ine, consultar_saldo, crear_enlace_captura) with uniform snake_case casing. The convention is predictable and readable throughout.
Three tools is thin for a service that clearly has more surface area (destinations, extraction history, batch jobs). While each tool earns its place, the set feels minimal relative to the apparent scope implied by the descriptions (webhook/email/Telegram destinations, links, tokens).
The core lifecycle is covered: create a capture link, extract data, and check token balance. However, there is no tool to manage or list destination_ids, view extraction history, or handle batch processing, which are referenced but not exposed as operations.
Maintenance
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Create forms, read submissions, and build invitations from Claude, ChatGPT, or any MCP client.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- FlicenseAqualityDmaintenanceExtracts text content from PDFs and images using Mistral's OCR API, enabling OCR capabilities in MCP-compatible clients like Cursor and Claude Desktop.18-

@parserelay/mcpofficial
AlicenseAqualityDmaintenanceEnables document parsing into structured, confidence-scored fields via the scan tool, working with any MCP host like Claude Desktop or Cursor.192 npmMIT- FlicenseNot gradedqualityDmaintenanceAn AI-powered MCP server that extracts structured data from Indian identity documents (Aadhaar, Passport, PAN, Driving License) using OCR, enabling Claude Desktop to read and process document images locally.-

flexorch-mcpofficial
AlicenseAqualityAmaintenanceEnables Claude and other MCP-compatible agents to process documents, extract structured data, detect PII, and export LLM-ready datasets through natural language tool calls.863 PyPI1MIT