> **Shapeless documentation index**
> Fetch https://shapelessai.com/llms.txt to discover every page before exploring further.
> Every page also answers Markdown: append `.md` to its path, or send `Accept: text/markdown`.

# Shapeless Directory

List an AI marketing tool with your agent: draft from the URL, submit, place the badge, verify, read the stats. REST and a keyless MCP endpoint, no account.

*Verified 2026-10-13. Source: https://shapelessai.com/docs/ai-tools*

The Shapeless Directory at [shapelessai.com/ai-tools](/ai-tools) lists AI marketing tools with one
column no other directory has: whether the tool publishes an MCP server, an API or a CLI, checked
against the tool's own domain. Listing is free and earns a plain, followed link from the listing
page while the badge is on the maker's homepage, and an agent can do the whole thing: draft the
listing from the URL, submit it, place the badge on the maker's site and verify it, with no
Shapeless account.

For a maker, the short version: paste this into Claude Code, Codex, Cursor or any agent that can
edit your site.

```text
List https://your-tool.com on the Shapeless Directory (shapelessai.com/ai-tools): read https://shapelessai.com/ai-tools/agents.md and follow it.
```

For an agent, the procedure itself is [/ai-tools/agents.md](/ai-tools/agents.md): actions in
order, exact request shapes, and the two things only the human may supply.

## The loop

1. `GET /api/ai-tools/requirements`: fields, limits, the category, surface and host vocabularies.
2. `POST /api/ai-tools/preview` `{homepage}`: we read the site and draft name, tagline and
   description, and probe `/.well-known/mcp/server-card.json`, `/openapi.json`, `/llms.txt` and
   `/.well-known/api-catalog` on the domain. The surfaces those documents prove go on the listing.
3. `POST /api/ai-tools/submit`: one listing per site. The answer carries the page, a `claimToken`
   and the badge HTML. The maker's email is required; an agent asks the human for it.
4. The badge goes on the homepage or in the footer, in server-rendered HTML, after the maker
   approves the exact snippet.
5. `POST /api/ai-tools/{slug}/verify` with `Authorization: Bearer <claimToken>`: we read the
   homepage now and answer `badge.found`, `badge.followed`, `badge.rel`, a `hint` when it is
   missing, the agent surfaces the domain proves, and `next`.
6. A person reads every listing before it goes live, usually within a few days, and emails the
   maker. From then on `GET /api/ai-tools/{slug}/stats` (same bearer) answers views, clicks to
   the maker's site and agent reads per day.

## Over MCP, no key

The same actions are tools on a keyless MCP endpoint, apart from the account server:

```text
https://shapelessai.com/mcp/ai-tools
```

Streamable HTTP, stateless, no auth. Tools: `directory_requirements`, `directory_preview`,
`directory_submit`, `directory_verify`, `directory_stats`, and `directory_search` for any agent
choosing a tool for its user. The claim token is an argument, so the host shows it and the human
can be asked for it. The server card is at `/mcp/ai-tools/server-card.json`; the `shapeless mcp`
stdio server from the npm package serves the same six tools without a key.

## Verified and Agent-ready

Two marks on a listing carry our judgement, and both are checked, never claimed:

- **Verified**: the badge anchor is in the served HTML of the maker's homepage. A nightly read
  keeps it; a badge gone for 14 days demotes the listing (the mark goes, the link to the maker
  turns nofollow), it never removes it.
- **Agent-ready**: a document on the maker's own domain answered for the surface: the MCP server
  card for MCP, an OpenAPI document or an RFC 9727 api-catalog for API. A listing can say "MCP"
  because the maker typed it; the mark says we fetched the proof.

The badge snippet carries no `nofollow`. A maker who adds `rel="nofollow"` keeps the
listing and every benefit except the plain link back from their page. Submitting accepts the
[directory terms](/ai-tools/terms): public facts and an email, no account; the service terms'
licence over agent inputs and outputs does not apply to a listing.

## Reading the directory

| What | Where |
| --- | --- |
| Every live listing, JSON | `GET /api/ai-tools` |
| One listing | `GET /api/ai-tools/{slug}` |
| One line per tool, for an assistant | [/ai-tools/llms.txt](/ai-tools/llms.txt) |
| The directory's own numbers, dated | `GET /api/ai-tools/stats` |
| The procedure for agents | [/ai-tools/agents.md](/ai-tools/agents.md) |

Every read of the JSON or llms.txt counts as an "agent read" on the rows it returned; that is
the number a maker's stats call agent reads, and no other directory reports it.

## Limits

3 accepted listings and 30 attempts per address per hour on submit; 20 previews or verifies per
address per hour; one verify a minute per listing; 300 MCP calls per address per hour. Tools that
sell social media scheduling, what ShapelessAI sells, are listed like every other tool and marked
as competitors on their page.
