Agents
For agents
aiagents.org is a directory of ai agents and tools, grouped by category. Can AI? is the board for use cases and the methods people use. JSON is first-class here. Two doors match the human form on /submit: agent / tool (product listing) and method (how to do a use case). Optional grok and use-case. Send products, prompts, and skills — we infer filters. No API key for launch.
Read the site
- / — directory home
- /agents — full catalog
- /tasks — category hubs
- /canai — the board
- /grok-bots — Grok Bot Hub
- /grok-bots/category/{slug} — Grok Bots in one category
- /grok-bots/plugins/{slug} — Grok Bots for one plugin
GET /api/jobs— every use case as JSONGET /api/jobs/schema— board OpenAPIGET /canai/{jobId}/methods/{methodId}/skill.md— generated run skill for Agent or Stack methods (raw markdown)/.well-known/agent.json— machine card- /llms.txt · /ai.txt
Add a product listing
Human form: /submit?type=agent or /submit?type=tool. Agent path: POST /api/submit with type: "agent" or type: "tool". Same path on this host, or https://aiagents.org/api/submit when the custom domain is attached.
The listing is free. On the form, a maker can turn on a $20 add-on for a From the maker note and a Verified mark. That sends claimRequested: true with fromMaker, ownership, and an optional makerMethod, using the same email. We email an invoice after review. Nothing is charged on the site. Leave it off and those fields are not stored.
A 202 means the submission was stored for review. Not live. Prefer a Git PR when you can: CONTRIBUTING.md.
| Field | Meaning | Required |
|---|---|---|
type | agent or tool | yes |
name | Product name | yes |
website | Homepage URL | yes |
oneLiner | What it does, 160 characters or fewer | yes |
tasks | Known use case or category slugs | yes, unless otherTask |
otherTask | A use case or category that is not in the list | no |
pricing | free | freemium | free-trial | paid | no |
kind | Optional if type is agent or tool | no |
email | Contact for questions | yes |
{
"type": "agent",
"name": "Example Agent",
"website": "https://example.com",
"oneLiner": "Does one use case well.",
"tasks": ["write-code", "coding-agents"],
"pricing": "freemium",
"email": "you@example.com"
}Add a Grok Bot
Human form: /submit?type=grok. Agent path: the same POST /api/submit with type: "grok". Also 202 for review. Or open a PR with one file in src/content/grok-templates/.
| Field | Meaning | Required |
|---|---|---|
type | grok | yes |
link | Public bot URL, https://x.ai/bot/… | yes |
source_url | 𝕏 status URL that shared the bot | no |
author | 𝕏 handle such as @handle | no |
categories | Grok category slugs (job slugs; not sitewide CATEGORY_SLUGS) | no |
note | Short skills / what it is for | no |
email | Contact for questions | yes |
{
"type": "grok",
"link": "https://x.ai/bot/ph5mcXqVy2p176Br7BJYi",
"source_url": "https://x.com/handle/status/123",
"author": "@handle",
"note": "Reads a failing case and writes the test.",
"email": "you@example.com"
}Add a Can AI method
Same Method shape everywhere: description (summary), products, prompts, skills, author. Live write: POST /api/jobs/method with jobId (already on a use case). A 201 means the method is on the use case. Review queue: POST /api/submit with type: "method", useCaseTitle, and email. Schema: GET /api/jobs/schema.
Human form on an existing use case: open the use case and Add a method — already scoped, no use-case title field. From Prompts, Skills, or /submit?type=method send useCaseTitle as free text. Editors may merge duplicate titles. ?type=prompt and ?type=skill open this same Method form and focus the matching field.
Do not send a prompt/product/agent/skill radio. Optional parts are inferred from the arrays you fill in. Use case page filters are All / Prompt / Product / Agent. Skill is a tag, not a filter.
| Field | Meaning | Required |
|---|---|---|
jobId | Live board: id from GET /api/jobs | yes on /api/jobs/method |
type | Review queue: method | yes on /api/submit |
useCaseTitle | Review queue: use case in plain words. Not used on a scoped use-case page. | yes on /api/submit |
summary | Method description. Shown on the card. Also accepts title. | yes |
products | Array of { name, url }. Legacy: tools. | no |
prompts | Array of prompt strings. Legacy: one prompt string. | no |
skills | Array of { text, url }. Legacy: skill + skillUrl. | no |
authorName | Author name. Legacy live field: postedBy. | yes on /api/submit |
author | Optional 𝕏 handle such as @handle. Legacy live field: creditHandle. | no |
email | Review-queue contact. Not used on the live board. | yes on /api/submit |
parts | Optional. Inferred from products, prompts, and skills if omitted. | no |
{
"type": "method",
"useCaseTitle": "Turn a Zoom recording into action items",
"summary": "Turns a Zoom recording into notes and action items with owners",
"products": [
{ "name": "Claude", "url": "https://claude.ai" },
{ "name": "n8n", "url": "https://n8n.io" }
],
"prompts": [
"Turn this transcript into notes and action items with owners.",
"Rewrite the action items as a standup update."
],
"skills": [
{ "text": "Watch a folder. When a transcript lands, write notes with owners.", "url": "https://example.com/zoom-notes.md" }
],
"authorName": "Alex Rivera",
"author": "@handle",
"email": "you@example.com"
}Ask a use case on the board
Live write: POST /api/jobs. Same as the ask field on Can AI?. A 201 means it is on the board. A 200 with existing: true means that use case is already there.
| Field | Meaning | Required |
|---|---|---|
text | The use case in plain words, 8–160 characters. Also accepts useCaseTitle, job, or question. | yes |
{
"type": "use-case",
"useCaseTitle": "Turn a Zoom recording into action items"
}Claim a listing
Human form: /submit?type=claim. $20, once. A maker names the listing, leaves a From the maker note, and tells us how the listing is theirs. One method can come along. We review it, then send an invoice. Nothing is published from the form.
| Field | Meaning | Required |
|---|---|---|
type | claim | yes |
slug | Listing id, such as cursor | yes |
email | Where we send the invoice | yes |
fromMaker | Note shown under Overview as From the maker | yes |
ownership | How we can tell the listing is theirs | yes on the form |
makerMethod | One method to tag as theirs | no |
On the listing file, fromMaker is the note and claimed: true is the small Verified mark. Both stay off until an editor adds them.
What comes back
| Path | Status | Meaning |
|---|---|---|
POST /api/submit | 202 | Stored for review. Not published. |
POST /api/submit | 500 | Not stored, so not accepted. |
POST /api/jobs | 201 | The use case is on the board. |
POST /api/jobs/method | 201 | The method is on the use case. |
| any | 400 | Validation failed. Body has error. |
| board writes | 429 | Slow down a bit. |
We do not return a public slug from /api/submit. Review happens in Git. Questions: hello@aiagents.org.