# Orchard

> Small web and data tools for agents: page to text/markdown, RSS, CSV/JSON. Free tries, then x402.

- name: xyz.orchardshop/orchard
- version: 1.0.0
- connection class: unknown (unknown)
- trust: 59/100 flags: no-repository
- quality: 75/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/xyz.orchardshop%2Forchard
- tools: https://api.protogrid.dev/v1/servers/xyz.orchardshop%2Forchard/tools

**Not classified yet.** The remote endpoints have not been probed successfully, or the listing has nothing to connect to.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "orchard": {
      "type": "http",
      "url": "https://orchardshop.xyz/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 22
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website -unreachable(1 failures) +updated-1d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 75/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 75 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: page-to-text (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); json-check (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); hash-encode (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,117 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 15, about 2,117 tokens to load them all
- tool set hash: 168b4e59a6ea5db41c844ed2505d8320
- tools last changed: 2026-11-13T14:25:29.656Z
- badge: [![protogrid quality](https://protogrid.dev/badge/xyz.orchardshop/orchard.svg)](https://protogrid.dev/servers/xyz.orchardshop/orchard)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-13 `rss-latest` changed (description, inputSchema)
  - before: 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.
  - after: Returns the latest items from a public RSS 2.0 or Atom feed as JSON: title, link, published date, summary (500 chars max) and guid for each item, plus feed title and link. Inputs: ?url= (public http/https feed URL, required), ?limit= (1-50, default 10). Caps: 3 MB feed read, 50 items max, 15 s per call. Private and local addresses are refused. Feeds that are HTML pages, PDFs or binary files return ok:false with a plain reason. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/rss-latest.

Full history: https://api.protogrid.dev/v1/servers/xyz.orchardshop%2Forchard/changes

## Remotes

- https://orchardshop.xyz/mcp (streamable-http, auth none, reachable false, uptime30d 0.8)

## Packages

_none_

## Tools (15)

- `bulk-page-to-markdown`: 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.
- `csv-to-json`: 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.
- `hash-encode`: 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.
- `json-check`: 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.
- `json-to-csv`: 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.
- `markdown-strip`: 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.
- `page-metadata`: 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.
- `page-to-markdown`: 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.
- `page-to-text`: 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.
- `rss-latest`: Returns the latest items from a public RSS 2.0 or Atom feed as JSON: title, link, published date, summary (500 chars max) and guid for each item, plus feed title and link. Inputs: ?url= (public http/https feed URL, required), ?limit= (1-50, default 10). Caps: 3 MB feed read, 50 items max, 15 s per call. Private and local addresses are refused. Feeds that are HTML pages, PDFs or binary files return ok:false with a plain reason. Free: 3 calls a day per visitor; after that $0.01 per call via x402 at https://tools.orchardshop.xyz/t/rss-latest.
- `site-audit`: 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.
- `site-crawl-markdown`: 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.
- `sitemap-to-index`: 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.
- `slugify`: 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.
- `text-stats`: 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.
