{
  "markdown": "# tools\n\nA portfolio of small, single-purpose paid services sold **directly to AI agents** —\nno human checkout flow, no dashboard login, no subscription. An agent calls the\nAPI, gets an `HTTP 402 Payment Required` quote, pays a few cents in USDC, and\ngets its answer. Fully automatic on both sides.\n\nEach service lives in its own self-contained folder under [`projects/`](projects/)\nand follows the same pattern:\n\n- **One narrow problem, solved well.** No platforms, no suites — a single job\n  an agent needs done.\n- **[x402](https://www.x402.org/)** for payment. HTTP-native, stablecoin\n  micropayments, no merchant account or KYC required on the seller side —\n  just a wallet address. This is the emerging standard for agent-to-API\n  payments (backed by Coinbase, adopted by AWS Bedrock AgentCore, Cloudflare,\n  and others as of 2026).\n- **Discoverable by agents**, not just humans — each API declares an\n  [x402 Bazaar](https://docs.cdp.coinbase.com/x402/bazaar) discovery schema\n  so agents can find and call it without a human ever reading the docs.\n- A **sample automation client** included with every project, showing an\n  agent discovering, paying for, and consuming the service end-to-end.\n- Where it adds real reach, also sold as an **MCP tool**\n  (`api/app/mcp_server.py`) — the same product, the same price, a second\n  interface for coding agents that discover tools over MCP rather than\n  raw HTTP.\n\n## Projects\n\n| Project | What it sells | Status |\n|---|---|---|\n| [`link-preview-api`](projects/link-preview-api/) | Pay-per-call URL metadata (Open Graph/title/description/image) extraction | **Live on Base mainnet, earning real USDC**: https://link-preview-api-z4nf.onrender.com |\n| [`content-moderation-api`](projects/content-moderation-api/) | Pay-per-call profanity/explicit-content detection with redaction, sold over both HTTP and MCP | **Live on Base mainnet, earning real USDC**: https://content-moderation-api-hhy1.onrender.com |\n| [`link-preview-cache-api`](projects/link-preview-cache/) | Same product as `link-preview-api`, ~⅓ the price — backed by a shared cache. First instance of a general \"x402 cache\" pattern | **Live on Base mainnet, earning real USDC**: https://link-preview-cache-api.onrender.com |\n\n## Repo conventions\n\n- Every project is fully self-contained in `projects/<project-slug>/`: its\n  own code, tests, Dockerfile, deploy config, and README. Nothing\n  product-specific is shared between projects.\n- Every project ships with:\n  - `api/` — the paid service itself\n  - `automation-client/` — a sample agent that pays for and consumes it\n  - `deploy/` — ready-to-use deploy configs (Render/Fly/etc.)\n  - `README.md` — the business case, architecture, and exact steps to take\n    it from \"runs on my machine\" to \"earning money\"\n  - `LISTING.md` — the marketplace/directory listing copy, ready to publish\n- New projects get added the same way: a clean new folder, same skeleton,\n  linked in the table above.\n- One deliberate exception to \"nothing shared\": [`scripts/`](scripts/) holds\n  portfolio-level *publishing* tooling — not product code, reused across\n  every project the same way (e.g. submitting a new tool to x402-list.com's\n  API). See [`PUBLISHING.md`](PUBLISHING.md) for the full playbook: what's\n  genuinely automatic, what's scripted, and what stays a deliberate manual\n  step and why.\n",
  "bytes": 3340,
  "sha": "77f8f067e8858b4fc22840e02f4ae4bd0dbd7d979b47ff9e5045a93a580f6ec6",
  "repo_slug": "cmondillo/tools",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_cmondillo_link_preview_api_389aba4e/readme"
}