> DocsFor Agentsv1

API.

The Tanfust catalog is readable by machines. Everything on this page is public, unauthenticated, and served from the CDN — no API key, no rate limit, no signup.

Content changes only when the site is deployed, so responses are safe to cache aggressively.

Catalog API

Base URL: https://www.tanfust.com/api/v1

The machine-readable description lives at /openapi.json (OpenAPI 3.1).

  • GET /api/v1/products — the full catalog
  • GET /api/v1/products/{id} — one product, e.g. tanbase
  • GET /api/v1/categories — the seven categories, with product counts
  • GET /api/v1/apps — the apps we operate
  • GET /api/v1/posts — blog posts, newest first
  • GET /api/v1/posts/{slug} — one post, including its full markdown body
  • GET /api/v1/health — deployment liveness

The catalog is small, so there's no pagination and no query filtering. Fetch /products once and filter on category, tier, or tags yourself.

curl -s https://www.tanfust.com/api/v1/products \
  | jq '.products[] | select(.category == "skills") | {id, name, price}'

Product responses omit two things on purpose: the fulfilment download link, and the preview source code shown on store pages. For the code, read the markdown representation of the product page.

Markdown instead of HTML

Send Accept: text/markdown to any content page and you get markdown back instead of HTML. The response carries Content-Type: text/markdown, Vary: Accept, and an x-markdown-tokens estimate.

curl -s -H 'Accept: text/markdown' https://www.tanfust.com/store/skills/supabase-auth-emails

Every markdown document is also directly addressable under /md/, if you'd rather not rely on content negotiation. Both forms return byte-identical content:

curl -s https://www.tanfust.com/md/store/skills/supabase-auth-emails

Covered pages: the homepage, /store, /apps, /blog, each blog post, each product page, this page, and the three legal pages.

x-markdown-tokens is an estimate, not an exact count. It's derived from the cl100k pre-tokenizer split, not a real BPE encoder — treat it as a budgeting hint, not a billing figure.

MCP server

There's a Model Context Protocol server at https://www.tanfust.com/api/mcp speaking Streamable HTTP. It exposes read-only tools over the same data as the REST API: search_products, get_product, list_categories, list_apps, list_posts, and get_post.

Add it to Claude Code with:

claude mcp add --transport http tanfust https://www.tanfust.com/api/mcp

Its server card is at /api/mcp/server-card.

Discovery

The homepage also returns Link headers pointing at the catalog, the OpenAPI description, these docs, and the markdown alternate.

What agents can't do

Buying is human-in-the-loop by design. Checkout runs through Paddle, and product downloads are one-time signed links emailed to the buyer — there's no programmatic purchase or download path, and no API credential that would create one. /auth.md spells out the boundary.

Reuse

Our robots.txt declares Content-Signal: search=yes, ai-input=yes, ai-train=no. Read us, cite us, ground answers in us — please don't use this content as generative model training data.

Questions: hi@updates.tanfust.com.