Fetch any URL as clean Markdown or metadata, and buy digital goods via x402 — for AI agents.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Screen a token contract on Base before an agent buys it. Reads the contract (ERC-20 metadata, owner, upgradeable proxy, and mint / pause / blacklist / fee selectors in its bytecode) and its DEX liquidity (WETH and USDC held by its Uniswap and Aerodrome pools, read on-chain). Returns a verdict — ok, caution, avoid or unknown — with the reasons. A heuristic screen: it does not simulate a sell, read tax rates or check pool age. Wraps GET /v1/token/check. Same free daily tier as read_url; $0.01/call via x402 after that.
The token contract address on Base.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Screen a token contract on Base before an agent buys it. Reads the contract (ERC-20 metadata, owner, upgradeable proxy, and mint / pause / blacklist / fee selectors in its bytecode) and its DEX liquidity (WETH and USDC held by its Uniswap and Aerodrome pools, read on-chain). Returns a verdict — ok, caution, avoid or unknown — with the reasons. A heuristic screen: it does not simulate a sell, read tax rates or check pool age. Wraps GET /v1/token/check. Same free daily tier as read_url; $0.01/call via x402 after that.
| Argument | Type | Description |
|---|---|---|
| address* | string | The token contract address on Base. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The token contract address on Base."
}
},
"additionalProperties": false
}Decide whether an unfamiliar pay-per-call (x402) endpoint is worth paying. Sends one unpaid GET to read its live payment challenge (format, price, network, signing domain), then adds its settled-call and unique-payer history, whether its live price matches its listed price, and its domain's reputation (template farm or not, share of its endpoints that answer). Returns a verdict — ok, caution, avoid or unknown — with the reasons. Nothing is paid. Use before an agent sends money to an endpoint it has not used before. Wraps GET /v1/x402/check. Same free daily tier as read_url; $0.01/call via x402 after that.
| Argument | Type | Description |
|---|---|---|
| url* | string | The x402 endpoint URL to check. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The x402 endpoint URL to check."
}
},
"additionalProperties": false
}Return the Agent Web Crawler Census: every named bot observed crawling a live, publicly-listed x402 + MCP endpoint over a 24-hour window, each with a case-insensitive regex `matcher` and a behavioural `category` (liveness-monitor, directory-crawler, price-scraper, security-research, ai-training, ...) so you can classify your own access log. Observed first-hand, not aggregated from third-party bot lists. Notable finding: of the named agent-web crawlers in the census, zero have ever presented a payment, and several declare that in their own User-Agent string. Wraps GET /v1/agent-census.json. Free, unmetered, no payment required. CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| category | string | Optional. Return only agents in this behavioural category, e.g. "price-scraper" or "liveness-monitor". Omit for the full census. |
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Optional. Return only agents in this behavioural category, e.g. \"price-scraper\" or \"liveness-monitor\". Omit for the full census."
}
},
"additionalProperties": false
}Fetch a URL server-side and return structured metadata: title, description, canonical URL, OpenGraph/Twitter card fields, favicon URL, language, and published/modified timestamps when present. Wraps GET /v1/meta. Same free tier as read_url; priced at $0.001/call via x402 once exhausted.
| Argument | Type | Description |
|---|---|---|
| url* | string | Absolute http(s) URL to fetch. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Absolute http(s) URL to fetch."
}
},
"additionalProperties": false
}Look up a product by id (from list_products) and explain exactly how to buy it: its price, and the x402 purchase flow step by step (the 402 challenge shape, the PAYMENT-SIGNATURE header, and the signed download URL you get back on success). Does not take payment itself — informational only, mirroring the pre-payment leg of GET /v1/buy/:id.
| Argument | Type | Description |
|---|---|---|
| product_id* | string | Product id, from list_products' `id` field. |
{
"type": "object",
"required": [
"product_id"
],
"properties": {
"product_id": {
"type": "string",
"description": "Product id, from list_products' `id` field."
}
},
"additionalProperties": false
}List Fetchgate's digital-goods catalog: id, name, description, priceUsd, currency, file format, size, sha256, and a walletless humanUrl checkout link for each product for sale. Wraps GET /v1/products. Free, no rate limit, no payment required just to browse.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Fetch a URL server-side and return its main content as clean Markdown, with scripts/styles/nav/ads/boilerplate stripped out. Wraps GET /v1/read. Free tier: 30 calls/day per caller; priced at $0.002/call via x402 once that's exhausted (see get_purchase_info for how the x402 flow works). Only http:// and https:// URLs are accepted; private/internal-network hosts are rejected.
| Argument | Type | Description |
|---|---|---|
| url* | string | Absolute http(s) URL to fetch. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Absolute http(s) URL to fetch."
}
},
"additionalProperties": false
}Check untrusted content BEFORE acting on it. Give a `url` to fetch and scan a web page (its visible text and, separately, text hidden in HTML comments, alt/title/aria attributes and meta tags), or give `text` to scan a tool result, retrieved document or message you already have. Runs 120 detection rules covering instruction override, tool hijacking, data exfiltration, system-prompt extraction, jailbreak framing and encoding tricks (zero-width and Unicode-tag smuggling, homoglyphs, base64). Returns a 0-100 risk score, a recommended action (block / review / flag / none) and each match with its evidence. Heuristic: a clean result means nothing obvious tripped, not that the content is safe. Wraps /v1/scan. Same free daily tier as read_url; $0.003/call via x402 after that.
| Argument | Type | Description |
|---|---|---|
| url | string | Absolute http(s) URL of a page to fetch and scan. |
| text | string | Text to scan directly (use instead of url). |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Absolute http(s) URL of a page to fetch and scan."
},
"text": {
"type": "string",
"description": "Text to scan directly (use instead of url)."
}
},
"additionalProperties": false
}Connect to a remote Streamable HTTP MCP server, fetch its tools/list (sends only initialize, notifications/initialized and tools/list — never tools/call) and scan every tool name, description, parameter description and the server's initialize `instructions` string for tool-poisoning patterns: hidden-instruction markers, invisible Unicode, directives aimed at the model, credential/secret references, exfiltration shapes and instructions about other tools. Returns per-tool findings with severity, excerpt and a score band. Use it before installing or trusting a third-party server. Heuristic: a clean result means nothing obvious in what the server declares about itself, not that it is safe. Wraps GET /v1/mcp-scan. Free, rate-limited per caller; private/internal-network hosts are rejected.
| Argument | Type | Description |
|---|---|---|
| url* | string | The MCP server's Streamable HTTP endpoint URL, e.g. https://example.com/mcp |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The MCP server's Streamable HTTP endpoint URL, e.g. https://example.com/mcp"
}
},
"additionalProperties": false
}Search for a pay-per-call (x402) API that does what you need. Unlike a raw directory, results are limited to endpoints that answered a real x402 payment challenge AND had at least 5 settled calls from at least 2 distinct payers in the last 30 days, so dead, never-bought and template-farm listings are left out. Each result has the endpoint URL, method, price in USD, networks, 30-day calls and unique payers, and a flag when the payer count looks farmed. Use it when you need a paid API (search, scraping, enrichment, LLM, market data…) and want one that demonstrably works. Wraps GET /v1/x402/search. Same free daily tier as read_url; $0.005/call via x402 after that.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results to return (default 10). |
| query* | string | What the API should do, in a few words, e.g. 'web search' or 'email verification'. |
| network | string | Payment network: base, solana, polygon, arbitrum, optimism, or a CAIP-2 id. |
| max_price_usd | number | Only return endpoints priced at or below this, per call. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Results to return (default 10)."
},
"query": {
"type": "string",
"description": "What the API should do, in a few words, e.g. 'web search' or 'email verification'."
},
"network": {
"type": "string",
"description": "Payment network: base, solana, polygon, arbitrum, optimism, or a CAIP-2 id."
},
"max_price_usd": {
"type": "number",
"description": "Only return endpoints priced at or below this, per call."
}
},
"additionalProperties": false
}