ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Web Reader & Search (Tanod)

โดย tanod-labsรุ่น 0.1.4i★ –iรันบนคลาวด์
ชื่อใน registrydev.tanod/web

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Web search for agents: page to Markdown, screenshots, news search, metadata, sitemaps and RDAP.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนคลาวด์
  • ช่องทาง (transport): Streamable HTTP
  • หมวด: ค้นข้อมูลและความจำของ AI

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • รันบนคลาวด์ไม่ต้องลงโปรแกรมเพิ่ม ต่อผ่านอินเทอร์เน็ตได้เลย

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:

  1. เปิด Settings → Connectors
  2. กด Add custom connector
  3. วางที่อยู่ด้านล่างแล้วกด Add
  4. ถ้าให้ล็อกอิน ให้ล็อกอินกับผู้ทำ
SettingsConnectors1+ Add2https://…3
https://tanod.dev/mcp/web

พิมพ์คำสั่งนี้ใน Terminal

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

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

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

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

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

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:

  1. เปิด ChatGPT บนเว็บ → Settings → Connectors (Apps)
  2. กด Create หรือ Add (บางแพ็กเกจต้องเปิด Developer mode ใน Advanced ก่อน)
  3. วางที่อยู่ด้านล่าง ตั้งชื่อ แล้วบันทึก
  4. ถ้าให้ล็อกอิน ให้ล็อกอินกับผู้ทำ
SettingsConnectors1+ Create2https://…3
https://tanod.dev/mcp/web

ชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

ชื่อและคำอธิบายเครื่องมือตามที่ server ตอบมาเมื่อ 9 พ.ย. 2569 ผู้ทำเป็นคนเขียน ไม่ใช่เรา แสดงเป็นข้อความล้วน

  • web_search

    findpeek: search the web for a query and get back ranked results (title, url, snippet) from an independent index (Mojeek). For the pages' text in the same call use search_with_contents; for news use news_search. Typically 0.3-2 s. Price: USD 0.005. Free: 3 web searches per IP per

  • search_with_contents

    findpeek: Search the web and get the Markdown of the top results in one call. For links only use web_search. Returns search results (title, url, snippet) with the Markdown of each of the top n pages (20,000 characters each, truncated flag) or a per-page error. Mojeek index. Stati

  • search_social_posts

    findpeek: Search social posts on Bluesky and Hacker News: recent public posts about a topic. For news articles use news_search. Returns recent public Bluesky and Hacker News posts for a query, newest first. Bluesky and Hacker News only, not X/Twitter; queried live, nothing stored

  • render_page

    sitepeek: fetch a public http(s) URL and return clean Markdown (static, or with `js:true` executed in a sandboxed headless browser) or a PNG screenshot; private and internal addresses are refused. For up to 5 pages use render_pages_batch; for a full-page or JPEG capture use take_

  • render_pages_batch

    sitepeek: Fetch up to 5 web page URLs to Markdown in one batch call. For 10 URLs in the contents API shape use fetch_page_contents; for JavaScript use render_page. Returns 1-5 web pages read as Markdown in one call (20,000 characters each, truncated flag, title, final URL) or a p

  • fetch_page_contents

    sitepeek: Price: USD 0.002 per URL (1-10 URLs per call: USD 0.002-0.02); Free trial: unpaid calls of 1 URL use the single read's 5 free static reads/IP/day; larger calls are paid. For one page with JavaScript use render_page. Get the contents of 1-10 URLs: web page to text for a

  • get_page_meta

    sitepeek: read a public web page's metadata from its static HTML (no browser). For the readable text use render_page; for every link use extract_links. Returns status, title, description, lang, canonical, og (Open Graph), twitter (card tags), icons, feeds (RSS/Atom/JSON feed alte

  • extract_links

    sitepeek: list a public page's links. For a site's URL list use parse_sitemap. `check: true` probes each returned http(s) link (HEAD, then a small GET; 20 s in total): each link then carries `check` and the reply a `check_summary`. The worker fetches the URL itself: private, inte

  • parse_sitemap

    sitepeek: parse a sitemap into its URLs. For crawl permission use check_robots_txt. An index is followed one level: its first 5 child sitemaps are fetched, the rest listed. Files over 10 MB (or 50 MB inflated) are a 413, and DTDs, entities and XXE are refused with a 422 xml_forbi

  • check_robots_txt

    sitepeek: test whether robots.txt lets a crawler fetch a URL. For the URLs a site lists use parse_sitemap. Fetches /robots.txt (first 512 KiB) and matches the URL's path under RFC 9309: longest match wins, allow wins a tie, * and $ supported. A user_agent without a product token

  • check_security_headers

    sitepeek: grade a public page's HTTP security headers. For a phishing-list check use check_url_phishing; for DNS and TLS use inspect_domain. Grades the final response after redirects: HSTS, CSP, X-Frame-Options / frame-ancestors, X-Content-Type-Options, Referrer-Policy, Permissio

  • inspect_domain

    dnspeek: inspect a domain's DNS, email authentication and TLS cert in one call. For registration data use rdap_lookup; for availability use check_domain_availability. Returns DNS records, SPF/DMARC/DKIM/MTA-STS findings with a deliverability score_out_of_8, and the cert (expiry,

  • rdap_lookup

    dnspeek: RDAP (the successor of whois) registration lookup. For DNS and TLS use inspect_domain; for an IP's ASN and reverse DNS use ip_lookup. Input: `query`, a domain, an IPv4 or IPv6 address or an AS number. For a domain: registrar (name, IANA id), created / updated / expires,

  • verify_email

    dnspeek: verify an email address before you send to it or accept it at sign-up. For the domain's SPF, DMARC and DKIM use inspect_domain. Checks syntax (practical RFC 5322 / 5321 limits, IDNA domains), MX records, null MX (RFC 7505), the A/AAAA fallback (RFC 5321), whether an MX h

  • ip_lookup

    dnspeek: look up an IP address. For the raw registry record use rdap_lookup. Returns version, is_public and, for a private or reserved address, `reserved_kind` (rfc1918, loopback, cgnat, link_local, documentation...) with no lookup made; for a public one the origin ASN and AS nam

  • check_url_phishing

    chainpeek: Check if a URL or domain is phishing or a scam. For up to 1,000 URLs use check_urls_phishing_batch; for headers use check_security_headers. Returns whether a URL's host (or a domain) is on public phishing/scam domain lists: `listed`, the `matched_domain`, the `sources`

  • html_to_text

    utilpeek: Convert HTML to Markdown or plain text. To fetch a URL use render_page; for the reverse use markdown_to_html. Returns the readable content of an HTML document you send (the HTML itself, never a URL: nothing is fetched) as Markdown or plain text, with title and descripti

  • 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

  • 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

  • take_website_screenshot

    sitepeek: Take a website screenshot of a public URL. For the page's text use render_page; for a PDF use html_to_pdf; for a signed record of what a page showed use capture_web_evidence. Returns a public web page captured as a PNG or JPEG in a sandboxed headless browser: viewport `

  • parse_url

    utilpeek: parse a URL. To fetch the page use render_page. The URL is parsed, never fetched. Public-suffix split from the Public Suffix List snapshot bundled with the parser (dated 2025-04-07; suffixes added later are not known), with and without the PSL private section; credentia

  • parse_rss_feed

    utilpeek: Parse an RSS or Atom feed URL into clean JSON: feed data, items, dates, audio enclosures. To find a podcast's feed use search_podcasts. Returns a public RSS, Atom or RDF feed as clean JSON. Feeds over 8 MB, private hosts, non-feeds and feeds with a DTD are a 422 or 413

  • search_podcasts

    utilpeek: Search podcasts by name or Apple Podcasts link: RSS feed URL, show data and latest episodes. To read any other feed use parse_rss_feed. Returns the RSS feed URL, show data and latest episodes of a podcast found by name or Apple Podcasts link (Apple's free directory); fe

  • company_profile

    utilpeek: Get a company profile from a domain: site metadata, socials, tools, registration. For open jobs use company_jobs; for SEC filings use sec_company_lookup. Returns a company profile from a domain, from public signals only: homepage title, description and JSON-LD Organizat

  • company_jobs

    utilpeek: List a company's open jobs from its Greenhouse, Lever, Ashby or Workday job board. For the company's profile use company_profile. Returns a company's open jobs from its public Greenhouse, Lever, Ashby or Workday board as metadata (title, department, location, remote fla

  • lookup_lei

    utilpeek: Look up a company by its LEI in the GLEIF register. To find an LEI by name use search_lei. Returns the GLEIF record of a LEI: legal name, status, jurisdiction, legal form, addresses, registration dates, managing LOU, and direct and ultimate parent. GLEIF data (CC0), cac

  • search_lei

    utilpeek: Search the GLEIF register for a company's LEI by name. For one LEI's full record and parents use lookup_lei. Returns up to 20 GLEIF records matching a company name (optionally in one country): LEI, legal name, country, status. GLEIF data (CC0), cached up to 24 hours. No

  • search_papers

    utilpeek: Search academic papers by keyword. For top papers ranked with summaries use paper_digest. Returns academic papers for a query from OpenAlex (or arXiv). OpenAlex data (CC0), cached up to 1 hour; arXiv with `source`. No match is count 0 (charged). Bad input is a 422 and a

  • paper_digest

    utilpeek: Price: USD 0.02; No free tier. For a plain search use search_papers. Digest the top academic papers on a topic: ranked, with a short summary of each. Returns the top papers on a topic from OpenAlex (or arXiv), ranked by citations per year (newest year breaks ties), each

  • news_search

    utilpeek: Search recent news articles by keyword. For the web at large use web_search; for crypto stories use get_crypto_news_headlines. Returns recent news articles for a query from the GDELT index, newest first: title, URL, domain, language, country, time, optional headline sen

  • get_crypto_news_headlines

    utilpeek: Use when an agent must decide which crypto stories to react to: top headlines ranked by outlet coverage, new ones only. For any topic use news_search. Returns the latest crypto news headlines from seven outlets, one entry per story, ranked by how many outlets cover it:

  • get_topic_trends_attention

    utilpeek: Use when an agent must tell if interest in a topic is rising or fading: Wikipedia, Hacker News and news over time. For the articles use news_search. Returns daily topic trends for 1 to 5 topics: Wikipedia page views per language, Hacker News counts, news mentions, with

  • search_prediction_markets

    utilpeek: Use when an agent needs to see what odds traders put on an event: Polymarket probabilities, volume and liquidity for a topic. For regulated US event contracts use get_event_contract_odds. Returns Polymarket prediction markets for a text query or a list: question, outcom

  • get_event_contract_odds

    utilpeek: Search regulated US event contracts by topic. For Polymarket use search_prediction_markets. Returns open regulated US event-contract markets (prediction markets) for a text query or a list: implied probability, yes bid and ask, last price, volume, open interest, close t

  • decode_vin

    utilpeek: Decode a vehicle identification number with NHTSA vPIC. For its recalls use vehicle_recalls. Returns the NHTSA vPIC decode of a VIN (US-market data). NHTSA data (public domain), cached up to 7 days. A wrong length or character is a 422 and an NHTSA outage a 503 (not cha

  • vehicle_recalls

    utilpeek: List the NHTSA safety recalls of a vehicle by make, model and year or by VIN. For the VIN decode use decode_vin. Returns the NHTSA safety recalls of a vehicle by make, model and year, or by VIN (US-market data). Input: `make`, `model` and `model_year`, or `vin` instead;

  • check_domain_availability

    dnspeek: Check if domain names are available to register. For a registered domain's record use rdap_lookup. Returns 1-50 domain names checked for availability from the registry's RDAP answer (404 = no record) and DNS NS records. Input: `names` or a single `name`. Inferred, not a

  • check_status_page

    utilpeek: Check an API status page: is a service up? Degraded components and open incidents. For whether an MCP server answers use check_mcp_server. Returns the overall status of a service's public status page (operational, degraded, outage, maintenance), the degraded components

  • check_text_sources

    findpeek: Check a text for copied sentences: web pages that contain them word for word. For a general query use web_search. Returns for up to 10 of a text's most distinctive sentences, the web pages that contain each word for word (exact-phrase search, up to 5 each, with snippet)

  • capture_web_evidence

    sitepeek: Capture a web page as evidence: screenshot, PDF, text, SHA-256 hashes, signed manifest. For one image alone use take_website_screenshot; for the text alone use render_page; for a PDF alone use html_to_pdf. Returns a public web page captured as a full-page screenshot, a

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 10 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันโดเมน tanod.dev แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • ✓ ผ่าน

    endpoint ตอบ

    ตอบกลับใน 293 ms (HTTP 200)

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ไม่ต้องล็อกอิน

  • ✓ ผ่าน

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    อ่านคำอธิบายเครื่องมือ 40 ตัวแล้ว ไม่พบคำสั่งแอบแฝงถึง AI

เทียบกับตัวอื่นในหมวด ค้นข้อมูลและความจำของ AIi

  • ดาวมากกว่า 0% ของอีก 5837 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 98% ของอีก 5837 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 5837 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Web Reader & Search (Tanod) ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.4) เข้า registry วันนี้

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Context7, Codebase Memory, Exa

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Context7

ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว

โดย upstashใช้กันมาก↓ 972.7K/สัปดาห์★ 64.2Kอัปเดต วันนี้

บนเครื่องหรือคลาวด์

Codebase Memory

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

โดย DeusDataใช้กันมาก↓ 18K/สัปดาห์★ 48.1Kอัปเดต 24 วันที่ผ่านมา

รันบนเครื่อง

Exa

Connect AI agents to Exa for web search, content fetching, and multi-step research.

โดย exa-labsใช้กันมาก★ 5.2Kอัปเดต 2 เดือนที่ผ่านมา

รันบนคลาวด์✓ exa.ai

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx