プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

PDF & Office Tools (Tanod)

作者:tanod-labsバージョン 0.1.8i★ –iクラウドで動く
レジストリ名dev.tanod/docs

インストール

概要

作者による説明(英語の原文)

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

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: クラウドで動く
  • トランスポート: Streamable HTTP
  • カテゴリ: 文書・表計算・事務作業

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

必要なもの

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

ウェブ、デスクトップ、モバイルのClaudeで使えます:

  1. Settings → Connectors を開く
  2. Add custom connector を押す
  3. 下のアドレスを貼り付けて Add を押す
  4. サインインを求められたら、作者のサービスにサインインする
SettingsConnectors1+ Add2https://…3
https://tanod.dev/mcp/docs

ターミナルでこれを実行します

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

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

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

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

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

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

ChatGPTがつなげるのは、インターネット上のサーバーだけです:

  1. ウェブ版のChatGPTを開き → Settings → Connectors (Apps)
  2. Create または Add を押す(プランによっては、先に Advanced で Developer mode をオンにする必要があります)
  3. 下のアドレスを貼り付け、名前を付けて保存する
  4. サインインを求められたら、作者のサービスにサインインする
SettingsConnectors1+ Create2https://…3
https://tanod.dev/mcp/docs

メニューの名前は、プランや時期によって少し違うことがあります。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

ツールの名前と説明は、サーバーが2026年11月9日に返したそのままの内容です。書いたのは作者で、私たちではありません。プレーンテキストとして表示しています。

  • 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

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月10日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名はドメイン tanod.dev で確認済みです(レジストリがドメインの所有を確認しています)

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • ✓ 合格

    エンドポイントが応答する

    306ミリ秒で応答(HTTP 200)

  • – 対象外

    OAuthでサインイン

    サインイン不要

  • ✓ 合格

    ツールの説明に隠れた指示がない

    40件のツールの説明を読み、AIへの隠れた指示は見つかりませんでした

文書・表計算・事務作業のほかのサーバーとの比較i

  • このカテゴリのほかの3651件のうち0%よりスターが多い
  • このカテゴリのほかの3651件のうち98%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの3651件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

PDF & Office Tools (Tanod)は安全ですか?

当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.1.8)がレジストリに届いたのは今日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。

代わりに使えるものは?

同じカテゴリには:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Excel MCP Server

Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.

作者:haris-musa広く使われている↓ 5万/週★ 4276今日更新

パソコンで動く

MCP Server for Excel

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

作者:sbroenne成長中↓ 4321/週★ 8476 日前更新

パソコンで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

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

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く