List a tool on the Shapeless Directory, or search it
The Shapeless Directory of AI marketing tools at /ai-tools, with one column no other directory has: whether a tool publishes an MCP server, an API or a CLI, checked against the tool's own domain.
No account: preview a listing from a URL, submit it (the answer carries a claim token, the badge HTML and the next steps), place the badge on the maker's site after they approve, verify it, and read the listing's views, clicks and agent reads. Any agent choosing a tool for its user searches the same rows. The same six actions are MCP tools on a keyless endpoint at /mcp/ai-tools and in the npm server; the procedure for an agent is /ai-tools/agents.md.
Ask in plain words
- "list my tool on the ShapelessAI directory"
- "add the Featured on ShapelessAI badge to my site and verify it"
- "which AI scheduling tools have an MCP server"
- "how many people clicked through to my tool from the directory"
From an agent host (MCP)
Server: https://shapelessai.com/mcp (add it to your host).
directory_requirements: No key. The Shapeless Directory's rules: every field with its limits, the category, surface and host vocabularies, the steps in order, and the two things only the human may supply (their email, approval to add the badge). Read it once before directory_submit.directory_preview: No key. Reads the tool's homepage and drafts name, tagline, description and the agent surfaces its domain proves (/.well-known/mcp/server-card.json, /openapi.json, /llms.txt). Correct the draft from the maker's own pages; never invent prices or integrations. Says if the site is already listed.directory_submit: No key. Submits one listing (one per site) for a person to review. Needs the maker's email: ASK THE HUMAN, never invent one. Submitting accepts the directory terms at https://shapelessai.com/ai-tools/terms (public product facts and an email, no account, the service terms do not apply; listing is free and links to the maker with a followed link while our badge is on their homepage): tell the maker before calling. Answers the page URL, a claimToken (keep it: the only credential for verify, edit and stats), the badge HTML and the terms URL. Next: show the maker the badge and where it goes, edit their site only after they approve, deploy, then directory_verify.directory_verify: No key; the claim token from directory_submit for a listing still in review (a live listing can be checked by anyone, once a minute). Reads the maker's homepage now: whether the badge anchor is there, its rel, a hint when it is not, which agent surfaces the domain proves, and what to do next. Repeat after fixing until badge.verified is true.directory_stats: No key; the listing's claim token. Per day for up to 90 days: page views, clicks through to the maker's site, and agent reads (how often the JSON, llms.txt or an MCP tool returned the listing). Plus the badge state and the rel our page puts on the link to the maker right now.directory_search: No key. The Shapeless Directory (shapelessai.com/ai-tools): AI marketing tools for social scheduling, copy, images, video, voice, design, analytics, ads, SEO, email, research, engagement, influencers and automation, each with whether it publishes an MCP server, an API or a CLI (verified against the tool's own domain) and which agent hosts it works from. Filter by words, category slug, surface (mcp|api|cli) or host. Every row has a page URL to cite.
From code (REST)
Bearer API key with the scope each call names (auth, OpenAPI).
GET /api/ai-tools(no key): Every live listing as JSON: slug, page, homepage, tagline, description, categories, surfaces, hosts, pricing, verified (badge on the maker's homepage), agentReady (the MCP/OpenAPI/llms.txt documents the maker's domain proved). Counts as an agent read on every row.GET /api/ai-tools/requirements(no key): What a listing must be: fields, limits, the category/surface/host vocabularies, the steps in order, and what only the human may supply.GET /api/ai-tools/stats(no key): The directory's own numbers, dated: live and waiting listings, verified and agent-ready counts, views, outbound clicks and agent reads in the last 7 days, last badge sweep.POST /api/ai-tools/preview(no key): {homepage}: read the site and draft the listing (name, tagline, description, proven surfaces, icon); says if the site is already listed. No row is written.POST /api/ai-tools/submit(no key): Submit one listing per site for a person to review. Submitting accepts the directory terms at /ai-tools/terms, never the service terms: an agent tells the maker first. Answers the page, a claimToken (keep it), the badge HTML, the terms URL and the next steps. The maker's email is required: an agent asks the human for it.GET /api/ai-tools/{slug}(no key): One listing as JSON. With the claim token as bearer, the maker's own row (any status) with badge and link state; otherwise a live row only.PATCH /api/ai-tools/{slug}(no key): Correct a listing still waiting for review (claim token as bearer): name, tagline, description, categories, surfaces, hosts, pricing, priceNote.POST /api/ai-tools/{slug}/verify(no key): Read the maker's homepage now: badge found, followed, rel, a hint when missing, which agent surfaces the domain proves, our link's rel, and what to do next. Claim token as bearer for a listing in review; anyone for a live one, once a minute.GET /api/ai-tools/{slug}/stats(no key): ?days=30 (max 90): page views, clicks through to the maker and agent reads per day, with the badge state. Claim token as bearer.POST /api/ai-tools/{slug}/click(no key): The beacon the listing page sends on a click through to the maker; always 204.
From a terminal (CLI)
No CLI command yet.
Example
Refusals
| Status | Meaning |
|---|---|
| 400 | The homepage could not be read; problems.homepage says why. |
| 429 | 20 previews an hour per address. |
| 400 | Field problems, by field. |
| 409 | That site is already listed or waiting; existing is its page. |
| 429 | 3 accepted listings and 30 attempts an hour per address. |
| 404 | No live listing by that slug. |
| 401 | No or wrong claim token. |
| 409 | Already reviewed; corrections go by email. |
| 401 | A listing in review needs its claim token. |
| 429 | Once a minute per listing, 20 an hour per address. |
| 502 | The homepage could not be read; nothing changed. |
