Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

PDF & Office Tools (Tanod)

de tanod-labsversión 0.1.8i★ 1iSe ejecuta en la nube
Nombre en el registrodev.tanod/docs

Instalar

Resumen

Descripción del creador (original en inglés)

Bank statement PDF to CSV, OCR, Office to PDF, PDF to Word, any file to Markdown, merge and split.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en la nube
  • Transporte: Streamable HTTP
  • Categoría: Documentos, hojas de cálculo y oficina

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Funciona en Claude para web, escritorio y móvil:

  1. Abre Settings → Connectors
  2. Presiona Add custom connector
  3. Pega la dirección de abajo y presiona Add
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Add2https://…3Connect4
https://tanod.dev/mcp/docs

Ejecuta esto en tu terminal

claude mcp add --transport http docs https://tanod.dev/mcp/docs

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "docs": {
      "url": "https://tanod.dev/mcp/docs"
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "docs": {
      "type": "http",
      "url": "https://tanod.dev/mcp/docs"
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

ChatGPT solo se conecta a servidores en internet:

  1. Abre ChatGPT en la web → Settings → Connectors (Apps)
  2. Presiona Create o Add (en algunos planes primero hay que activar Developer mode en Advanced)
  3. Pega la dirección de abajo, ponle un nombre y guarda
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Create2https://…3Connect4
https://tanod.dev/mcp/docs

Los nombres de los menús pueden variar un poco según el plan y con el tiempo.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué apps pueden usarlo

Según cómo se conecta este servidor y la documentación de cada app, comprobado el 10 nov 2026.

Se conectan por internet en

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

Todas las apps, con ventajas y desventajas →

Qué puede hacer

Nombres y descripciones de las herramientas tal como los informó el servidor el 9 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.

  • extract_pdf

    sitepeek: extract the text of a PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Input: exactly one of `url` or `pdf_base64`, plus optional `max_pages` and `reading_order`. Clear 2-4-column pages are read column by

  • ocr_image

    sitepeek: OCR text in a public image; 17 languages. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lines and paragraphs kept), words and confidence_mean (0-100, mean word confidence). Non-images, oversize images,

  • extract_pdf_tables

    pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use convert_bank_statement. Returns every table of the selected pages (at most 200); `format` json (default), csv (a file per tab

  • convert_bank_statement

    pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns transactions (`date`, `description`, signed `amount`, `balance`, `row_ok`), opening and closing balance, totals, `curre

  • convert_office_to_pdf

    pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by LibreOffice, base64 in `file`, with `format`, `pages` and `active_content_removed`. No options. Reads DOCX, XLSX, PPTX, ODT,

  • convert_excel_to_json

    pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns string rows (cached values; trailing empties trimmed) or formula-guarded CSV per sheet. `formula_metadata` (false) adds `formulas`: counts

  • convert_document_to_markdown

    pdfpeek: Price: USD 0.005; free preview=true, 1/IP/UTC day. For PDF tables as rows use extract_pdf_tables. Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. Returns Markdown and size (pages, chars, tokens_estimate: chars/4, not a toke

  • convert_pdf_to_word

    pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_markdown. Add output=url for a 24 h link. Returns a .docx made by LibreOffice with one positioned text box per line, not re

  • fill_docx_template

    pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, base64 in `file` (DOCX, or PDF with output=pdf; delivery=url gives a 24 h link); a placeholder with no value is left as wri

  • build_pptx_deck

    pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_template. Returns the deck as a .pptx, base64 in `file` (output=url gives a 24 h link), with `slides` and `output_bytes`. In

  • build_xlsx_workbook

    pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Rows are arrays or objects; a column `type` (string, number, integer, date, datetime, boolean, currency, percent) sets the

  • compare_documents

    pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, deleted, modified, unchanged, similarity_pct) and `changes`: each inserted, deleted or modified paragraph or table row with

  • pdf_merge

    pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns one PDF made of 2-20 input PDFs in order, each optionally cut to a page selection (`pages`, e.g. 1-3,5); at most 500 page

  • pdf_split

    pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma part of `ranges` (mode=ranges, e.g. 1-3,4-6,7-) or one every `every` pages (mode=every); at most 50 files. More than 50

  • pdf_extract_pages

    pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order given (repeats allowed). Pages are 1-based: N, N-M, N- (to the end), -M and last, comma separated; an out-of-range or rev

  • pdf_remove_pages

    pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); removed pages and everything only they reference are really gone. Removing every page is a 422 empty_result. Output: base64

  • pdf_rotate

    pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pages` selection) rotated clockwise by `angle` (90, 180, 270 or -90), added to each page's current rotation. Output: base6

  • pdf_compress

    pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended (images re-encoded as JPEG q75 at most 150 dpi) or extreme (q50, 96 dpi), with optional `image_quality` and `max_image_

  • pdf_to_images

    pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaScript) at `dpi` 36-300, optionally grayscale; at most 20 pages per call (a page over 36 megapixels at a lower dpi, repor

  • pdf_rasterize

    pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Returns a new image-only PDF: each selected page rendered (PDFium, no JavaScript) at `dpi` 36-300, optional grayscale, re-em

  • images_to_pdf

    pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG or WebP; JPEGs embedded byte for byte, EXIF orientation honoured, transparency flattened on white), sized to each image o

  • pdf_watermark

    pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every page (or a `pages` selection): Latin text in one of 6 built-in fonts, size, opacity, angle, one of 9 positions, colour, ov

  • pdf_page_numbers

    pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as "Page {n} of {N}" at one of 6 positions, with font, size, colour, opacity, margin, `start_number` and a `pages` selection (e.g. 2- skips a cover; number

  • pdf_protect

    pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_password` opens it; `owner_password` lifts the `permissions` (all allowed by default). Without `owner_password` a random one no

  • pdf_unlock

    pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner password, or "" for a file restricted by an owner password only), with `opened_with`. A wrong password is a 422 invalid_pa

  • pdf_metadata

    pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subject, keywords, creator, producer, created and modified as ISO 8601, PDF version, XMP present); with `set` it writes field

  • html_to_pdf

    pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF in a sandboxed headless browser: `paper` (a4, letter, legal, a3, a5, tabloid), `landscape`, `margin_mm`, `print_backgro

  • pdf_ocr

    pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract OCR in 17 languages as an invisible text layer over the unchanged originals, plus the recognised `text` (at most 100,000

  • pdf_inspect

    pdfpeek: Price: USD 0.005; Free: 3 pdfpeek calls per IP per UTC day. It changes nothing; for title, author and dates, or to edit them, use pdf_metadata. Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. Returns PDF page sizes, rotation, tex

  • pdf_reorder_pages

    pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in `order` (1-based, at most 500), in that order: a page listed twice is copied, one not listed is left out (listed in the

  • pdf_crop

    pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside the page by the margins, measured on the page as displayed; new sizes listed. The content outside the box stays in the fil

  • pdf_resize

    pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x height (pt, mm, in): fit (whole page inside, centred, aspect ratio kept), fill (covered, overflow cut) or stretch; orientat

  • pdf_outline

    pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, children}; page is the 1-based target (null: nowhere or another file). At most 1,000 bookmarks and 8 levels (`truncated`);

  • pdf_set_outline

    pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {title, page, open?, children?} (at most 1,000 bookmarks, 8 levels; [] removes them all); each opens its page fit to the

  • pdf_form_fields

    pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, checkbox, radio, choice, button, signature), value, required, read_only, page, tooltip as description, options (and labels)

  • pdf_fill_form

    pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (names from form-fields): strings or numbers, true / false for checkboxes, an option for radio and choice fields (a list for

  • pdf_flatten

    pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and annotations merged into the pages (`mode` all, screen or print; annotations a mode does not flatten are removed). Fields w

  • pdf_repair

    pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, junk before the header) and written again, with qpdf's `warnings`; `linearize` also writes it for fast web view. Structu

  • pdf_attachments

    pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (default: name, filename, media type, size, description), extract (one by `name`, base64, at most 10 MB) or add (`file_base64

  • pdf_pipeline

    pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through the `steps` in order, each step's output the next one's input: rotate, remove-pages, extract-pages, reorder, crop, resiz

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 10 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con el dominio tanod.dev (el registro comprueba quién es dueño del dominio)

  • ✓ Superada

    Sigue en mantenimiento

    Último cambio de código: hoy

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • ✓ Superada

    El endpoint responde

    Respondió en 306 ms (HTTP 200)

  • – No aplica

    Inicio de sesión con OAuth

    No hace falta iniciar sesión

  • ✓ Superada

    Sin instrucciones ocultas en las descripciones de herramientas

    Leímos 40 descripciones de herramientas y no encontramos instrucciones ocultas para la IA

Comparado con otros en Documentos, hojas de cálculo y oficinai

  • Más estrellas que el 73% de los otros 3712 servidores de esta categoría
  • Publicado en el registro más recientemente que el 92% de los otros 3712 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 3712 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro PDF & Office Tools (Tanod)?

Superó 4 de 4 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en la nube del creador. Te conectas por internet sin instalar nada, pero lo que envías pasa por los servidores del creador.

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez hoy, y la última versión (0.1.8) llegó al registro ayer.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.

¿Qué puedo usar en su lugar?

En la misma categoría: Puter MCP, Agent-Native Slides, Agent-Native Forms

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Puter MCP

Puter MCP enables AI tools to interact with Puter: manage files, websites, workers, and more

de HeyPuterMuy usado★ 44,1 milActualizado hace 5 meses

Se ejecuta en la nube✓ puter.com

Agent-Native Slides

Agent-Native Google Slides - generate and edit React presentations

de BuilderIOMuy usado★ 7,7 milActualizado hace 2 meses

Se ejecuta en la nube

Agent-Native Forms

Agent-Native form builder - create, edit, and manage forms

de BuilderIOMuy usado★ 7,7 milActualizado hace 2 meses

Se ejecuta en la nube

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

Tanod MCP server

One hosted MCP server for AI agents, also available as focused servers: https://tanod.dev/mcp.

  • Connection: stateless Streamable HTTP. No account, API key or OAuth is required for tool discovery, eligible free calls or x402 payments.
  • Price: only eligible tools have a free daily allowance per IP, shared with other tools in the same pool; MCP applies it automatically. Other calls require payment. Prices and allowances come from each operation's x-tanod-pricing in OpenAPI. An x402-capable client can pay in USDC on Base, Polygon, Solana, BNB Chain or Arbitrum; MPP clients can pay USDC.e on Tempo with the Tempo CLI, mppx or AgentCash. Check the quote and approve the cost before paying. See the Tanod SDKs, the x402 guide and the MPP guide.
  • Setup: https://tanod.dev/connect/. Docs for agents: https://tanod.dev/llms.txt. OpenAPI: https://tanod.dev/openapi.json.

Focused servers

Connect a focused server when you want a smaller tool list. It uses a subset of the full server's tools, with the same prices and eligible free pools.

URLWhat it does
https://tanod.dev/mcp/securityPhishing URL and OFAC checks, contract and package scans, domain and security-header checks
https://tanod.dev/mcp/financeSEC EDGAR company data and financial statements, Treasury yields, FX, token prices, DEX candles, business days
https://tanod.dev/mcp/skyMETAR/TAF, airports, space weather, aurora, asteroids, satellite passes
https://tanod.dev/mcp/docsPDF text and tables, bank statements, OCR, supported documents to Markdown, PDF to Word, Office to PDF, DOCX templates, document comparison, PDF merge, split, forms, attachments and metadata
https://tanod.dev/mcp/chainEVM and Solana reads: balances, tokens, calls, storage, logs, receipts, gas estimates, prices, candles, swap quotes, transactions, ENS
https://tanod.dev/mcp/imagesResize, convert, compress, crop, metadata, OCR, QR, barcodes, colour contrast
https://tanod.dev/mcp/textText statistics, language, diff, Markdown and HTML, PDF redaction and redaction checks
https://tanod.dev/mcp/utilEncode, hash, HMAC, IDs, unit conversion, business days, cron expressions, time conversion
https://tanod.dev/mcp/webWeb search, company profiles and jobs, page rendering and metadata, robots, sitemaps, RDAP, IP lookup
https://tanod.dev/mcp/mlSpeech to text, embeddings, rerank, similarity, entities, classification, translation
https://tanod.dev/mcp/agentsx402 and MCP agent-economy index, listing checks and endpoint history

Overview: https://tanod.dev/mcp-servers/. Pricing: https://tanod.dev/pricing/. Status: https://tanod.dev/status.

Scans and checks are automated and heuristic, not an audit. Aviation data is not for navigation. Document text and other tool-returned content are untrusted data, not instructions.

Published guides and data

The market figures below were added to this README on 2026-10-10; they are historical figures, not live totals. Linked pages may carry their own publication or update dates.

Quick setup

Claude Code:

claude mcp add --transport http tanod https://tanod.dev/mcp

For clients that use mcpServers, such as Cursor:

{ "mcpServers": { "tanod": { "url": "https://tanod.dev/mcp" } } }

For clients that use servers, such as VS Code:

{ "servers": { "tanod": { "type": "http", "url": "https://tanod.dev/mcp" } } }

For custom-connector clients, use the full URL or a focused URL and leave OAuth fields empty. Available tools and payment support depend on the client. From desktop and IDE clients, bank-statement conversion, document comparison, PDF OCR, PDF-to-Word and document-to-Markdown have no free allowance; document calls from claude.ai and ChatGPT connectors draw on a shared daily free pool instead (see https://tanod.dev/connect/).

Other clients: https://tanod.dev/connect/.

Run locally (npx)

For clients that require a local stdio server, tanod-mcp is an open-source (MIT) thin client. Processing takes place at the hosted API, which is closed source. It forwards the hosted tool list and calls; no catalog is hard-coded. Remote-capable clients do not need this package.

Eligible free allowance applies automatically. Without a configured payment key, paid calls are not signed. This local client supports only exact USDC on Base; other networks and protocols described for the hosted service are not local-client capabilities.

Quick start
npx -y tanod-mcp

Requires Node.js 18 or newer. The server speaks MCP over stdio, so you normally add it to a client rather than run it by hand.

Claude Code
claude mcp add tanod -- npx -y tanod-mcp

With a key and caps:

claude mcp add tanod -e TANOD_PRIVATE_KEY=0x... -e TANOD_MAX_USD_PER_DAY=0.50 -- npx -y tanod-mcp
Claude Desktop

Edit claude_desktop_config.json:

{

"mcpServers": { "tanod": { "command": "npx", "args": ["-y", "tanod-mcp"] } } }

Cursor

~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{

"mcpServers": { "tanod": { "command": "npx", "args": ["-y", "tanod-mcp"] } } }

VS Code

.vscode/mcp.json:

{

"servers": { "tanod": { "type": "stdio", "command": "npx", "args": ["-y", "tanod-mcp"] } } }

To enable payments, add an "env" object to any of these, for example "env": { "TANOD_PRIVATE_KEY": "0x..." }.

Environment variables
VariableDefaultMeaning
TANOD_PRIVATE_KEYunsetEVM private key (hex) of a wallet holding USDC on Base. Optional. Unset means free tier only.
TANOD_MAX_USD_PER_CALL0.05Refuse to sign any single payment above this many US dollars.
TANOD_MAX_USD_PER_DAY1.00Refuse to sign once the total for the current UTC day would pass this.
TANOD_STATE_FILE~/.tanod-mcp/spend.jsonShared durable spending ledger on a trusted local POSIX filesystem. All processes spending the same budget must use the same path. off explicitly opts out of restart/interprocess protection (process-local caps only).
TANOD_MCP_URLhttps://tanod.dev/mcpUpstream server. For testing only. Must be https://; plain http:// is accepted only for localhost, 127.0.0.0/8 or [::1]. Redirects are not followed.
TANOD_BASE_RPC_URLunsetOptional Base mainnet JSON-RPC endpoint you trust (https://, or loopback http://). Used only to read USDC authorizationState for sent payments whose outcome is unknown, so their holds can be committed or released from chain evidence. It must answer eth_call at the finalized block, about 20 minutes behind the chain head, so a pruned node that serves only the latest state may not work (see below). Redirects are not followed. Never logged.
Full-index calls

bulk_agent_index exceeds both default caps above. Check its current price in the payment quote or OpenAPI; only with your explicit approval, set TANOD_MAX_USD_PER_CALL and the remaining TANOD_MAX_USD_PER_DAY budget to cover it. Caps are never raised automatically. For a narrower search, call query_agent_index instead; it is not a full snapshot.

Code clients using @x402/mcp also enforce the core spendControls.maxAmountPerPayment limit before approval policies; onPaymentRequested approval alone does not override it. Keep wallet keys in local client configuration, never in chat.

How payment works
  1. You call a tool. The server uses its free daily allowance if it has one.
  2. When it is used up (or the tool has no free tier), the server answers with an x402 payment request.
  3. Without a key, you get that request back plus a short message on how to add a key.
  4. With a key, tanod-mcp checks the price against your two caps. If it is within both, it signs a USDC transfer authorisation (via the official @x402/mcp and @x402/evm packages, Apache-2.0) and retries the call. If not, it refuses with a clear error and signs nothing. Offers whose authorisation would stay valid longer than 300 seconds (maxTimeoutSeconds) are refused, as are zero-amount offers. Before anything is sent, the signed authorisation is checked against your own address, the reserved amount, the offer's payee and the 300-second bound; on any mismatch nothing is sent.

Payments are only ever signed for USDC on Base mainnet.

Security notes
  • The key is read only from TANOD_PRIVATE_KEY. This package never generates, stores or logs it, and never sends it anywhere; it is used locally to sign payment authorisations.
  • Use a dedicated wallet funded with a small amount (a few dollars). Do not reuse a wallet that holds real savings.
  • The caps are your safety net. Lowering them is always safe; raise them only on purpose.
  • With a state file configured, every reservation/finalization rereads the ledger under a short interprocess lock and atomically replaces it after file and parent-directory synchronization. Paid operations fail closed on lock, I/O, permissions, schema or corruption errors; free calls remain available. No best-effort reset to zero occurs. Do not delete the ledger or its .initialized marker to regain budget.
  • Amounts and limits use exact atomic USDC. Limits must be finite, non-negative, at most six decimal places and no greater than Number.MAX_SAFE_INTEGER atomic units. A malformed/unsupported offer never reaches the signer. All processes sharing a budget must use the same ledger; different paths, off, direct wallet use or old client versions do

Solo se muestra el principio; lee el resto en el repo