NanoParse MCP
A hosted MCP server that converts any URL into clean Markdown with a 20-signal intelligence layer for AI agents. It supports full Chromium rendering for JavaScript-heavy SPAs, extracts metadata, and provides machine-readable trust signals like source authority and paywall detection. It uses a pay-per-parse model via x402 micropayments with a free tier available.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://nanoparse.app/mcpWhat its tools do
2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Fetch any web page and get clean Markdown back
- Check free quota, wallet and USDC balance before spending
- Extract 20 machine-readable trust signals from content
- Render JavaScript-heavy SPAs into structured text
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- nanoparse-mcp 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 2 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
nanoparse_fetch
Read one URL into clean Markdown with Litmus signals (source authority, freshness, structural trust). Price: $0.005 per page actually read, USDC on Base via x402. Free tier: 10 free parses a month, no account and no key. On a cloud host (where the anonymous allowance does not apply) pass wallet_address + wallet_signature once — a plain EIP-191 signature, no payment — to claim the same 10. A page we cannot read — bot wall, consent wall, paywall, PDF — is reported with a named reason and never charged. To read a whole site or a list: call this tool once per URL. Build your list first (GET https://<site>/sitemap.xml, or use URLs you already have), then loop. No minimum, no commitment, no balance to spend down: stop whenever you like. If you already know the price and the payTo address, pay on the first call and skip the 402 round trip. Otherwise, when the tool returns a payment_required error, sign the included payment_terms and retry with the payment_signature argument (works in every MCP client; no custom headers needed).
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The URL to fetch and parse"
},
"wallet_address": {
"type": "string",
"description": "Your wallet address (0x...) to claim the free tier — no payment needed."
},
"wallet_signature": {
"type": "string",
"description": "EIP-191 personal_sign signature (0x... hex, 65 bytes r||s||v) over the exact string \"nanoparse.app free tier: sign this message to claim 10 free parses (no payment).\". Proves you own wallet_address and unlocks 10 free parses per month."
},
"payment_signature": {
"type": "string",
"description": "x402 payment signature — base64-encoded JSON payment terms. Only needed after the free tier is exhausted: the payment_required error response includes the payment_terms to sign. Pass the signed terms here (or as a Payment-Signature header if your client supports headers)."
}
}
}{
"type": "object",
"properties": {
"content": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The extracted page content as clean Markdown with GFM tables preserved"
},
"type": {
"enum": [
"text"
],
"type": "string",
"description": "Content type — always 'text' for NanoParse"
}
}
},
"description": "Array of content items returned by the tool"
}
},
"description": "Returns content[0].text as clean Markdown with GFM tables, stripped of navigation, ads, and boilerplate. structuredContent carries the full parse envelope: {markdown, metadata, litmus}. On error, returns a JSON-RPC error object with code and message."
}{
"title": "Read one URL into clean Markdown + Litmus",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}nanoparse_status
Check wallet balance, USDC balance, quota state, and whether the next /fetch call will succeed without payment. Use before spending — tells the agent exactly how much to fund.
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "The Ethereum wallet address to query (0x...)."
}
}
}{
"type": "object",
"required": [
"wallet_address",
"usdc_balance",
"price_per_parse",
"quota"
],
"properties": {
"quota": {
"type": "object"
},
"funding_uri": {
"type": "string"
},
"usdc_balance": {
"type": "string"
},
"balance_error": {
"type": [
"string",
"null"
]
},
"balance_known": {
"type": "boolean"
},
"wallet_address": {
"type": "string"
},
"price_per_parse": {
"type": "string"
},
"usdc_balance_raw": {
"type": [
"string",
"null"
],
"description": "Balance in micro-USDC; null when the chain could not be read"
},
"next_call_will_succeed": {
"type": [
"boolean",
"null"
],
"description": "null when the free tier is exhausted and the balance is unknown"
},
"estimated_parses_remaining": {
"type": [
"number",
"null"
],
"description": "null when the balance is unknown — never 0, which would imply an empty wallet"
}
},
"description": "Machine-readable status fields. This schema describes structuredContent — strict MCP clients validate structuredContent against it, so it must NOT require the result-envelope `content` array."
}{
"title": "Check wallet, quota and payment state",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 533 ms
- 95th percentile latency
- 533 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 533 ms · metadata changed · 2 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http nanoparse-mcp https://nanoparse.app/mcpCodex
codex mcp add nanoparse-mcp --url https://nanoparse.app/mcpCursor
{
"mcpServers": {
"nanoparse-mcp": {
"url": "https://nanoparse.app/mcp"
}
}
}Cline
{
"mcpServers": {
"nanoparse-mcp": {
"type": "streamableHttp",
"url": "https://nanoparse.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"nanoparse-mcp": {
"type": "http",
"url": "https://nanoparse.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http nanoparse-mcp https://nanoparse.app/mcpClaude Desktop
https://nanoparse.app/mcpWindsurf
{
"mcpServers": {
"nanoparse-mcp": {
"serverUrl": "https://nanoparse.app/mcp"
}
}
}Let your agent find its tools
Find servers like NanoParse MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.