Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Analyse and clean up text: stats, language, keywords, summary, sentiment, PII redaction, diff.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://tanod.dev/mcp/text在终端中运行这条命令
claude mcp add --transport http text https://tanod.dev/mcp/text粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"text": {
"url": "https://tanod.dev/mcp/text"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"text": {
"type": "http",
"url": "https://tanod.dev/mcp/text"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://tanod.dev/mcp/text菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
工具名称和描述与服务器在 2026年11月9日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。
text_statsutilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, sentences, paragraphs, averages), reading and speaking time, and for English the Flesch reading ease, Flesch-Kincaid grade
detect_languageutilpeek: Detect the language of a text. To translate use translate_text. Returns the most likely language (ISO 639-1 and 639-3 code, name, confidence) and 3 alternatives, from an offline ensemble of lingua (Apache-2.0) and langid.py (BSD-2-Clause) over 75 languages; `reliable` i
text_caseutilpeek: Convert text case: title, sentence, snake, camel, kebab, ... For a URL slug use make_slug. Returns the text in another case: upper, lower, title (small words such as a, of, the kept lower-case; iPhone and domains kept), sentence, camel, pascal, snake, kebab, constant, d
text_linesutilpeek: Sort, dedupe, trim, shuffle or number the lines of a text. For find and replace use text_replace. Returns the text's lines transformed by `operations` in order: trim, remove_empty, dedupe (keeps the first), sort (lexical, natural or length; stable), reverse, shuffle (se
text_replaceutilpeek: Find and replace in text. To sort, dedupe or number lines use text_lines. Returns the text with `find` replaced: literally, or as a regular expression on RE2 only (linear time for any pattern: no backtracking, so no ReDoS; backreferences and lookaround are refused), wit
text_extractutilpeek: Extract emails, URLs, domains, IPs, dates and crypto addresses from text. To mask personal data use redact_pii; for names and places use extract_entities. Returns the emails, URLs, domains (ICANN suffixes), IPv4 / IPv6, phone-like numbers, hashtags, mentions, EVM and BT
redact_piiutilpeek: Redact PII from text: emails, phone numbers, card numbers, IBANs, SSNs, IPs and crypto addresses. For API keys and tokens use check_text_for_secrets. Returns the text with emails, phone numbers, payment cards (Luhn), IBANs (mod-97), US SSNs, IPv4 / IPv6, EVM / BTC addre
pseudonymize_piiutilpeek: Pseudonymise PII in text: stable keyed tokens for emails, phones, cards, IBANs and IPs. Returns the text with each email, phone number, payment card, IBAN, US SSN, IPv4 / IPv6, EVM / BTC address and secret URL query value replaced by a typed token (EMAIL_843eca1f055c),
text_frequencyutilpeek: Count word and n-gram frequencies in a text. For scored keyphrases use text_keywords. Returns the most frequent words or 2-3 word n-grams (n-grams never cross punctuation) with count and share, dropping stop words (en, es, fr, de, pt, it, nl, or none), and optionally ch
text_keywordsutilpeek: Extract the keywords and keyphrases of a text. For raw frequencies use text_frequency; for names and places use extract_entities. Returns the top keyphrases of a text by RAKE (phrases between stop words and punctuation, scored by word degree / frequency), with score and
text_summarizeutilpeek: Summarize a text by picking its key sentences. For paper abstracts use paper_digest; for counts use text_stats. Returns an extractive summary: the most central `sentences` (or `ratio` of them) by LexRank, picked verbatim and kept in their original order, with per-senten
text_sentimentutilpeek: Analyze the sentiment of an English text. For your own labels use classify_zero_shot; for counts use text_stats. Returns VADER sentiment of an English text: compound (-1 to 1), positive / neutral / negative shares and a label (positive at 0.05 or more, negative at -0.05
text_spellcheckutilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pyspellchecker), with positions (offset, line, column) and up to `max_suggestions` suggestions by edit distance; numbers, ac
text_unicode_inspectutilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-oriented Unicode inspection: `risk` (low / medium / high) with reasons; invisible characters (zero-width, tag characters that
text_numbersutilpeek: Convert numbers to English words. For units use convert_units. Returns a number spelled out in English (cardinal, ordinal, year, or currency for 13 currencies, rounded half-even to the minor unit) up to 10^36, or English number words ("two hundred and fifty-first") pars
text_loremutilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or English filler, in words (at most 10,000), sentences (1,000) or paragraphs (100), deterministic for a `seed` (echoed back). I
diff_textutilpeek: Diff two texts: unified line diff, word or character changes. For PDF or Word files use compare_documents. Returns the differences between two texts: similarity ratio, counts and hunks; in line mode a git-compatible unified diff, in word or char mode change records (equ
make_slugutilpeek: Make a URL slug from text. For other case styles use text_case. Returns a URL slug: accents removed, Latin ligatures, Greek and Cyrillic transliterated, apostrophes dropped and other characters turned into one separator, cut at a separator when over max_length. CJK, Ara
markdown_to_htmlutilpeek: Convert Markdown to sanitized HTML. For the reverse use html_to_text. Returns the HTML of a Markdown document (markdown-it-py; `gfm` adds tables, strikethrough, autolinks and task lists), cleaned by an allow-list sanitizer (nh3): no scripts, event handlers, iframes, for
html_to_textutilpeek: 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
convert_subtitlesutilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converted between SRT, WebVTT and a JSON segment list [{start, end, text}] (seconds, as /v1/audio/transcribe returns it), with a
check_subtitle_deliveryutilpeek: Check subtitle delivery timing, line length and reading speed. Returns a cue-level SRT/WebVTT delivery review with versioned language/audience profiles: en-US-adult-v1, en-US-children-v1, ja-adult-v1 and ar-adult-v1. Checks overlaps, minimum gaps, duration, line length,
pdf_redactpdfpeek: Redact a PDF: black out terms, emails, phone numbers, card numbers and areas. To test a file redacted elsewhere use pdf_redaction_check. Returns a PDF whose redacted pages are images, so the text cannot be copied back; metadata is removed. Input: at least one of `terms`,
pdf_redaction_checkpdfpeek: Check a PDF for failed redactions: black boxes with the text still under them. To redact properly use pdf_redact. Returns whether black boxes in a PDF still have readable text under them: per finding the page, box (PDF points), character count and hidden text (or only it
check_text_for_secretsutilpeek: Scan text for leaked secrets: API keys, tokens, private keys and seed phrases. For personal data use redact_pii; for injected instructions use check_text_for_prompt_injection. Returns every API key, token, private key or BIP-39 seed phrase in a text (AWS, GitHub, GitLab
check_text_sourcesfindpeek: 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)
check_text_duplicateutilpeek: Check whether a draft repeats your earlier texts. Returns the duplicate, near or new verdict for a draft compared with 1-50 earlier texts you supply, plus all collisions and closest matches with similarity, rare shared terms and shared numbers. Cosine of words and word
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月10日
注册名称已通过域名 tanod.dev 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
在 872 毫秒内响应(HTTP 200)
无需登录
已读取 27 个工具描述,未发现针对 AI 的隐藏指令
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
GitHub 仓库最后更新于–,最新版本(0.1.2)于昨天进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, ONE — pagos en Monero y trueque de cómputo
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP del agente ONE: cobros y pagos XMR, libro auditable y trueque de cómputo. AliceLabs LLC.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
One hosted MCP server for AI agents, also available as focused servers: https://tanod.dev/mcp.
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.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.
| URL | What it does |
|---|---|
https://tanod.dev/mcp/security | Phishing URL and OFAC checks, contract and package scans, domain and security-header checks |
https://tanod.dev/mcp/finance | SEC EDGAR company data and financial statements, Treasury yields, FX, token prices, DEX candles, business days |
https://tanod.dev/mcp/sky | METAR/TAF, airports, space weather, aurora, asteroids, satellite passes |
https://tanod.dev/mcp/docs | PDF 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/chain | EVM and Solana reads: balances, tokens, calls, storage, logs, receipts, gas estimates, prices, candles, swap quotes, transactions, ENS |
https://tanod.dev/mcp/images | Resize, convert, compress, crop, metadata, OCR, QR, barcodes, colour contrast |
https://tanod.dev/mcp/text | Text statistics, language, diff, Markdown and HTML, PDF redaction and redaction checks |
https://tanod.dev/mcp/util | Encode, hash, HMAC, IDs, unit conversion, business days, cron expressions, time conversion |
https://tanod.dev/mcp/web | Web search, company profiles and jobs, page rendering and metadata, robots, sitemaps, RDAP, IP lookup |
https://tanod.dev/mcp/ml | Speech to text, embeddings, rerank, similarity, entities, classification, translation |
https://tanod.dev/mcp/agents | x402 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.
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.
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/.
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.
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 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
Edit claude_desktop_config.json:
{
"mcpServers": { "tanod": { "command": "npx", "args": ["-y", "tanod-mcp"] } } }
~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": { "tanod": { "command": "npx", "args": ["-y", "tanod-mcp"] } } }
.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..." }.
| Variable | Default | Meaning |
|---|---|---|
TANOD_PRIVATE_KEY | unset | EVM private key (hex) of a wallet holding USDC on Base. Optional. Unset means free tier only. |
TANOD_MAX_USD_PER_CALL | 0.05 | Refuse to sign any single payment above this many US dollars. |
TANOD_MAX_USD_PER_DAY | 1.00 | Refuse to sign once the total for the current UTC day would pass this. |
TANOD_STATE_FILE | ~/.tanod-mcp/spend.json | Shared 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_URL | https://tanod.dev/mcp | Upstream 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_URL | unset | Optional 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. |
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.
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.
TANOD_PRIVATE_KEY. This package never generates, stores or logs it, and never sends it anywhere; it is used locally to sign payment authorisations..initialized marker to regain budget.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只显示了开头部分;其余内容请在仓库中阅读