Small web and data tools for agents: page to text/markdown, RSS, CSV/JSON. Free tries, then x402.
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.
Converts up to 20 public web pages to clean markdown in one call. Returns each page's title and markdown body (headings, links, list items, paragraphs; scripts and styles removed), capped at 20,000 characters per page, with a 25-second time limit. Every URL is fetched through a public-internet-only safe fetcher. Use it to pull several docs or articles into one batch instead of making 20 separate calls. Paid only: $0.25 per call via x402 at https://tools.orchardshop.xyz/t/bulk-page-to-markdown.
e.g. https://example.com,https://www.iana.org/domains/example
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http orchard https://orchardshop.xyz/mcp
Converts up to 20 public web pages to clean markdown in one call. Returns each page's title and markdown body (headings, links, list items, paragraphs; scripts and styles removed), capped at 20,000 characters per page, with a 25-second time limit. Every URL is fetched through a public-internet-only safe fetcher. Use it to pull several docs or articles into one batch instead of making 20 separate calls. Paid only: $0.25 per call via x402 at https://tools.orchardshop.xyz/t/bulk-page-to-markdown.
| Argument | Type | Description |
|---|---|---|
| urls* | string | e.g. https://example.com,https://www.iana.org/domains/example |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "string",
"description": "e.g. https://example.com,https://www.iana.org/domains/example"
}
}
}POST raw CSV as the body (first row is headers) and get back a JSON array of row objects, plus column names and row count. Handles quoted fields, commas and newlines inside quotes, and escaped quotes. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/csv-to-json.
| Argument | Type | Description |
|---|---|---|
| body* | string | POST / with raw CSV text as the body |
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"description": "POST / with raw CSV text as the body"
}
}
}POST raw text as the body and get back its byte count, sha256, sha1, md5, hex, base64 and base64url encodings. Useful for checksums, IDs and encoding a value mid-task. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/hash-encode.
| Argument | Type | Description |
|---|---|---|
| body* | string | POST / with raw text as the body |
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"description": "POST / with raw text as the body"
}
}
}Validates a JSON document sent as the raw request body and returns it pretty-printed. Returns valid true/false, the formatted JSON, a count of keys, and byte size. Invalid JSON returns the parser error message. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/json-check.
| Argument | Type | Description |
|---|---|---|
| body* | string | POST / with raw JSON as the body |
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"description": "POST / with raw JSON as the body"
}
}
}POST a JSON array of flat objects (or {"rows":[...]}) and get CSV back. Columns are the union of all keys in order of first appearance. Values are quoted and escaped per RFC 4180. Nested objects are stored as JSON text. Up to 5000 rows per call. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/json-to-csv.
| Argument | Type | Description |
|---|---|---|
| rows | array |
{
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
}
}
}POST raw markdown as the request body and get plain text back. Removes headings, emphasis, links (keeps the label), images (keeps the alt text), list markers, blockquotes, HTML tags and code fences (keeps code contents). Useful before summarizing or indexing markdown documents. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/markdown-strip.
| Argument | Type | Description |
|---|---|---|
| markdown | string |
{
"type": "object",
"properties": {
"markdown": {
"type": "string"
}
}
}Fetches any public http(s) page and returns its metadata: title, meta description, canonical URL, favicon URL, all OpenGraph (og:*) properties, and every unique absolute link with its anchor text (up to 500). Blocks localhost and private addresses. Returns JSON with url, final_url, status, title, description, canonical, favicon, og, link_count and links. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/page-metadata.
| Argument | Type | Description |
|---|---|---|
| url* | string | e.g. https://www.iana.org/domains/reserved |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "e.g. https://www.iana.org/domains/reserved"
}
}
}Fetches any public http(s) page and returns clean Markdown: headings (#), paragraphs, lists, links with absolute URLs, bold/italic, and code blocks. Scripts, styles and nav/footer are removed. Output is capped at the first 50,000 characters, with a truncated flag. Blocks localhost and private addresses. Returns JSON with url, status, title, chars, truncated and markdown. Free: 3 calls a day per visitor; after that $0.02 per call via x402 at https://tools.orchardshop.xyz/t/page-to-markdown.
| Argument | Type | Description |
|---|---|---|
| url* | string | e.g. https://www.iana.org/domains/reserved |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "e.g. https://www.iana.org/domains/reserved"
}
}
}Fetches a public web page and returns its readable text as JSON: url, status, title, char count, and clean text with scripts, styles and tags stripped. Blocks private/localhost addresses. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/page-to-text.
| Argument | Type | Description |
|---|---|---|
| url* | string | e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "e.g. https://example.com"
}
}
}Fetches any public RSS 2.0 or Atom feed and returns its latest items as JSON, newest first in feed order. Each item has title, link, published date, summary (first 500 chars, tags stripped) and guid. Choose how many with ?limit= (1-50, default 10). Blocks localhost and private addresses. Returns JSON with feed_url, format (rss or atom), title, link, count and items. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/rss-latest.
| Argument | Type | Description |
|---|---|---|
| url* | string | e.g. https://hnrss.org/newest |
| limit* | string | e.g. 2 |
{
"type": "object",
"required": [
"url",
"limit"
],
"properties": {
"url": {
"type": "string",
"description": "e.g. https://hnrss.org/newest"
},
"limit": {
"type": "string",
"description": "e.g. 2"
}
}
}Crawls up to 25 pages of one website (same host only) and reports the problems an SEO or QA check looks for: broken links (up to 40 outbound links spot-checked per page), missing page titles and meta descriptions, slow pages over 1.5 seconds, and pages over 500 KB. Returns a summary of issues plus per-page details as JSON. Has a 45-second time limit and polite pacing. Every URL is fetched through a public-internet-only safe fetcher. Paid only: $0.50 per call via x402 at https://tools.orchardshop.xyz/t/site-audit.
| Argument | Type | Description |
|---|---|---|
| url* | string | e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "e.g. https://example.com"
}
}
}Crawls one public website breadth-first from a start URL, staying on the same hostname, and returns each page as clean Markdown (up to 20,000 chars per page). Reads robots.txt and skips disallowed paths, fetches at most 2 pages at a time with about 300ms between requests, and identifies as OrchardBot/1.0. Blocks localhost and private addresses, including after redirects. Answers within 45 seconds; if time runs out it returns the pages it has with partial=true. Returns JSON with start_url, pages_crawled, partial, pages[{url,title,markdown}] and skipped[{url,reason}]. max_pages is 1-20 (default 10). Paid only: $0.25 per call via x402 at https://tools.orchardshop.xyz/t/site-crawl-markdown.
| Argument | Type | Description |
|---|---|---|
| url* | string | e.g. https://example.com |
| max_pages* | string | e.g. 3 |
{
"type": "object",
"required": [
"url",
"max_pages"
],
"properties": {
"url": {
"type": "string",
"description": "e.g. https://example.com"
},
"max_pages": {
"type": "string",
"description": "e.g. 3"
}
}
}Reads a website's sitemap.xml and returns each page's title, meta description and word count as JSON. Checks up to 25 pages per call (one level of sitemap index), with a 25-second time limit. Every page is fetched through a public-internet-only safe fetcher. Use it to audit a site's SEO basics or to get a quick content inventory before crawling. Paid only: $0.25 per call via x402 at https://tools.orchardshop.xyz/t/sitemap-to-index.
| Argument | Type | Description |
|---|---|---|
| url* | string | e.g. https://example.com/sitemap.xml |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "e.g. https://example.com/sitemap.xml"
}
}
}POST titles as JSON {"titles": [...]} or as raw text with one title per line, and get back URL-safe slugs. Strips accents, lowercases, removes apostrophes and collapses other punctuation to single hyphens. Up to 500 titles per call. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/slugify.
| Argument | Type | Description |
|---|---|---|
| titles | array |
{
"type": "object",
"properties": {
"titles": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Send plain text as the raw POST body and get back word count, sentence count, character count, estimated reading minutes, and the top 10 keywords (stopwords removed). Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/text-stats.
| Argument | Type | Description |
|---|---|---|
| body* | string | POST / with plain text as the body |
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"description": "POST / with plain text as the body"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.