App creators use MadeWithStack to turn a reviewed product listing into machine-readable evidence that agents can search, filter, and recommend. The strongest listings pair a concise product description with stack metadata, Agent Directory qualification evidence, and public supporting links.
Agent-search fit checklist
Before submitting, make sure your listing can answer these questions without a human guessing:
- What does the product do in one sentence?
- Who is it for?
- Which tools, models, frameworks, or infrastructure does it use?
- Is it agent-native, agent-built, or powered by an agentic workflow?
- What public page proves the claim?
- Which task should an agent associate with it: support, research, operations, sales, voice, or browser automation?
Where an approved product can surface
| Surface | How it helps app creators |
|---|---|
/agents | Human browsing surface for reviewed Agent Directory products. |
GET /api/v1/recommend | Lets agents ask for ranked product matches by task and stack. |
GET /api/v1/search | Lightweight keyword search for tool and product suggestions. |
GET /api/v1/products | Structured catalog browse with filters for is_agent, agent_use_case, qualification_type, claim_status, tool, and audience. |
/llms.txt and /.well-known/agents.json | Machine-readable entry points that tell crawlers and agent runtimes how to understand the platform. |
Query patterns MadeWithStack should answer
These are the kinds of agent-search queries the directory is designed to support:
- best agent-native support tools
- products built with Claude and Supabase
- agentic workflow tools for operations
- AI agent products submitted by API
- browser automation agents for founders
Do not force these phrases into your product copy. Use them as a coverage checklist: if your product belongs in one of these answers, your listing should include the specific metadata and evidence needed to support that match.
Submission metadata that improves matching
Use POST /api/v1/submit or the hosted /mcp tool to submit:
tool_slugsfromGET /api/v1/tools, orcustom_toolswhen the tool is not in the taxonomy yetqualification_typeonly when the product clearly qualifies for the Agent Directoryagent_use_casethat matches the primary workflowqualification_statementthat states the claim plainlyworkflow_summarythat explains what the agent does in the productagent_tools_usedwith recognizable model, framework, automation, database, hosting, or workflow toolssupporting_linksthat point to docs, product pages, demos, changelogs, or public evidence
Good creator evidence
Good evidence is public, specific, and stable. A homepage section, docs page, public changelog, repository, demo page, or launch post is usually stronger than an unsupported marketing claim.
If your product only has a minor AI feature, submit it to the broader catalog without an Agent Directory claim. MadeWithStack treats Agent Directory placement as a reviewed trust signal, not a keyword category.
Prompt for your coding agent
Submit this product to MadeWithStack. Read https://www.madewithstack.com/developers/submit and https://www.madewithstack.com/docs/workflows/get-discovered-by-agents, fetch valid tool slugs from /api/v1/tools, build a complete POST /api/v1/submit payload, include Agent Directory claim evidence only if the product clearly qualifies, and preserve the returned review_status_url for follow-up.
/api/v1/submitThis is the agent-facing write endpoint for creating pending submissions without using the browser form.
Auth
No API keys. No account auth. Public JSON endpoints only.
Review model
Submit is write-only into the manual review queue. Listings do not publish instantly.
Cache
No caching. Write endpoint with separate IP and email rate-limit buckets.
Example request
curl -X POST https://www.madewithstack.com/api/v1/submit \
-H "Content-Type: application/json" \
-d '{
"name": "AgentFlow",
"url": "https://agentflow.dev",
"description": "Workflow automation for multi-agent pipelines.",
"email": "founder@agentflow.dev",
"tool_slugs": ["langchain", "claude"],
"qualification_type": "agent_built",
"agent_use_case": "operations",
"qualification_statement": "Agents handled substantial parts of the workflow and build process.",
"workflow_summary": "The product routes operational work through an agentic workflow.",
"agent_tools_used": ["Cursor", "Claude"],
"supporting_links": ["https://agentflow.dev/docs"],
"founder_name": "Ada Smith",
"audience_tags": ["b2b", "for-developers"]
}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Product name. |
url | absolute http/https URL | Yes | Canonical product homepage URL. |
description | string | Yes | Short description. Maximum 240 characters. |
email | string | Yes | Submitter email used for review updates and pending-status checks. |
tool_slugs | string[] | No | Preferred tool identifiers. Discover valid values from GET /api/v1/tools. |
tool_ids | UUID[] | No | Alternative to tool_slugs. Every value must be a valid UUID string. |
custom_tools | string[] | No | Custom tool names. Maximum 10 entries, each 40 characters or less. |
founder_name | string | No | Founder or team name. |
founder_twitter | string | No | X/Twitter handle. |
favicon_url | absolute http/https URL | No | Manual logo override. |
screenshot_url | absolute http/https URL | No | Manual screenshot override. |
audience_tags | ("for-developers" | "for-founders" | "b2b" | "consumer")[] | No | Optional audience tags. |
qualification_type | "agent_native" | "agent_built" | "agentic_workflow" | No | Optional Agent Directory qualification type. If provided, the related claim fields become required. |
agent_use_case | "support" | "research" | "operations" | "sales" | "voice" | "browser_automation" | No | Primary use case for Agent Directory review. |
qualification_statement | string | No | Short public justification for Agent Directory eligibility. |
workflow_summary | string | No | How the agent or agentic workflow is central to the product. |
agent_tools_used | string[] | No | Named agent-building tools used in the product or build process. |
supporting_links | string[] | No | Supporting public links reviewers can inspect for the claim. |
referral_code | string | No | Optional referral code from an existing listing. |
Responses
Submission created
The submission was accepted into pending review. The product is not public yet.
{
"success": true,
"slug": "agentflow",
"receiptSent": true,
"badge_opt_in": false,
"review_status_url": "https://www.madewithstack.com/api/v1/products/agentflow?email=founder%40agentflow.dev",
"owner_claim": {
"email": "founder@agentflow.dev",
"status": "unverified",
"verification_email_sent": true
},
"claim_status": "submitted",
"claim_eligibility": "agent_directory",
"next_action_code": "UNDER_EDITORIAL_REVIEW"
}Error codes
| Code | Status | Meaning |
|---|---|---|
VALIDATION_ERROR | 400 | Missing, malformed, or unsupported request data. |
INVALID_TOOL_SLUGS | 400 | One or more submitted tool slugs are not present in the directory. |
DUPLICATE_DOMAIN | 409 | A product with the same normalized domain already exists. |
RATE_LIMITED | 429 | The request exceeded the public API rate limit window. |
INTERNAL_ERROR | 500 | Unexpected server error. Retry later. |
Operational notes
- Call this when you have a valid product homepage, a short description, a submitter email, and stack metadata ready for review.
- At least one of tool_slugs, tool_ids, or custom_tools must be non-empty.
- If qualification_type is provided, agent_use_case, qualification_statement, workflow_summary, agent_tools_used, and supporting_links are required.
- tool_slugs is preferred over tool_ids.
- API submissions are free-tier only. paid_fast_track is not exposed through the API.
- Listings require manual approval before they appear in the public catalog.
- Use review_status_url from the response to poll review, claim state, and badge availability.
- Recommended polling interval is 300 seconds, with longer backoff after repeated unchanged responses.
- 429 responses include a Retry-After header in seconds.
/api/v1/recommendUse this endpoint when an agent needs shortlist-style recommendations instead of a generic catalog page.
Auth
No API keys. No account auth. Public JSON endpoints only.
Review model
Read-only endpoint over approved catalog and trust metadata.
Cache
Dynamic server response.
Example request
curl "https://www.madewithstack.com/api/v1/recommend?task=support&stack=claude,supabase&limit=3"
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
task | free-text task or canonical use case such as "support", "research", or "customer-support" | No | Task intent to match against agent use case and public workflow metadata. |
stack | comma-separated tool slugs or names such as "nextjs,supabase" | No | Preferred stack terms to resolve against known directory tools. |
limit | number | No | Maximum number of recommendations to return. Defaults to 10 and caps at 24. |
Responses
Success
Returns query normalization metadata plus ranked products and explicit match reasons.
{
"query": {
"task": "support",
"normalized_task": "support",
"stack": [
"claude",
"supabase"
],
"resolved_tools": [
{
"slug": "claude",
"name": "Claude",
"category": "models-providers"
},
{
"slug": "supabase",
"name": "Supabase",
"category": "backend-db"
}
],
"unresolved_stack_terms": []
},
"recommendations": [
{
"rank": 1,
"score": 91,
"product": {
"id": "prod_hermit",
"name": "Hermit",
"slug": "hermit",
"description": "Leave ChatGPT while keeping everything it learned about you.",
"url": "https://hermit.tirith.life/",
"status": "approved",
"approved_at": "2026-03-12T09:00:00.000Z",
"submitted_by_agent": false,
"is_agent_product": true,
"qualification_type": "agent_native",
"agent_use_case": "support",
"claim_review_status": "verified",
"badge_verified": false,
"tools": [
{
"slug": "claude",
"name": "Claude",
"category": "models-providers"
},
{
"slug": "supabase",
"name": "Supabase",
"category": "backend-db"
}
]
},
"match": {
"task_match": "exact",
"matched_tool_slugs": [
"claude",
"supabase"
],
"matched_tool_count": 2,
"reasons": [
"Primary use case matches support.",
"Uses 2 requested stack tools.",
"Claim review is verified."
]
}
}
]
}Error codes
| Code | Status | Meaning |
|---|---|---|
VALIDATION_ERROR | 400 | Missing, malformed, or unsupported request data. |
INTERNAL_ERROR | 500 | Unexpected server error. Retry later. |
Operational notes
- Call this before choosing an agent product for a workflow such as support, research, or sales, optionally constrained by a preferred stack.
- Provide at least one of task or stack.
- Task aliases such as customer-support resolve to the canonical use case when possible.
- Recommendations are built from approved public listings only.
/api/v1/searchUse this for lightweight lookup and discovery flows where a full filtered catalog request is unnecessary.
Auth
No API keys. No account auth. Public JSON endpoints only.
Review model
Read-only endpoint over public search suggestions.
Cache
Dynamic server response.
Example request
curl "https://www.madewithstack.com/api/v1/search?q=parse"
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query string. |
Responses
Success
Returns matching tool and product suggestions with absolute URLs.
{
"results": [
{
"type": "tool",
"slug": "supabase",
"name": "Supabase",
"description": "Postgres backend, auth, and storage platform.",
"href": "https://www.madewithstack.com/built-with/supabase",
"icon_url": "https://cdn.simpleicons.org/supabase",
"favicon_url": null,
"screenshot_url": null
},
{
"type": "product",
"slug": "parsewise",
"name": "Parsewise",
"description": "Research agent for technical document workflows.",
"href": "https://www.madewithstack.com/product/parsewise",
"icon_url": null,
"favicon_url": "https://parsewise.ai/icon.png",
"screenshot_url": "https://parsewise.ai/screenshot.png"
}
],
"query": "parse"
}Error codes
| Code | Status | Meaning |
|---|---|---|
INTERNAL_ERROR | 500 | Unexpected server error. Retry later. |
Operational notes
- Call this when you need keyword-based lookup for tools or products, or when mapping a natural-language query to directory entities.
- Empty q returns an empty result set instead of an error.
- Result URLs are absolute so external agents can resolve them directly.
/api/v1/productsUse this endpoint to inspect the public catalog, power integrations, or fetch filtered inventory for a specific stack, audience, or agent layer.
Auth
No API keys. No account auth. Public JSON endpoints only.
Review model
Read-only endpoint over approved catalog data.
Cache
Dynamic server response backed by the approved catalog query layer.
Example request
curl "https://www.madewithstack.com/api/v1/products?limit=10&sort=newest&is_agent=true"
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
offset | number | No | Pagination offset. Defaults to 0. |
limit | number | No | Page size from 1 to 48. Defaults to 24. |
sort | "newest" | "popular" | No | Sort order. Defaults to "newest". |
category | tool category slug | No | Filter by tool category. |
audience | "for-developers" | "for-founders" | "b2b" | "consumer" | "all" | No | Filter by audience tag. |
tool | tool slug | No | Filter by a specific tool slug such as supabase. |
is_agent | "true" | No | Return only Agent Directory listings. |
qualification_type | "agent_native" | "agent_built" | "agentic_workflow" | No | Filter Agent Directory results by qualification type. |
claim_status | "claim_submitted" | "claim_verified" | No | Filter Agent Directory results by public claim-review state. |
agent_use_case | "support" | "research" | "operations" | "sales" | "voice" | "browser_automation" | No | Filter Agent Directory results by primary use case. |
Responses
Success
Returns a page of approved listings only.
{
"products": [
{
"id": "prod_123",
"name": "AgentFlow",
"slug": "agentflow",
"description": "Workflow automation for multi-agent pipelines.",
"url": "https://agentflow.dev",
"favicon_url": "https://agentflow.dev/icon.png",
"founder_name": "Ada Smith",
"founder_twitter": "ada_smith",
"founder_profile_slug": "ada-smith",
"launch_date": null,
"status": "approved",
"created_at": "2026-03-10T08:00:00.000Z",
"approved_at": "2026-03-11T09:15:00.000Z",
"view_count": 42,
"is_featured": false,
"featured_rank": 100,
"screenshot_url": "https://agentflow.dev/shot.png",
"submission_tier": "free",
"review_priority": 100,
"audience_tags": [
"b2b",
"for-developers"
],
"badge_verified": false,
"submitted_by_agent": true,
"is_agent_product": true,
"qualification_type": "agent_native",
"agent_use_case": "operations",
"qualification_statement": "Agent-led workflow is central to the product.",
"workflow_summary": "The product uses an agentic workflow as the main user experience.",
"agent_tools_used": [
"Claude",
"LangChain"
],
"supporting_links": [
"https://agentflow.dev/docs"
],
"claim_review_status": "verified",
"claim_reviewed_at": "2026-03-11T09:20:00.000Z",
"claim_review_notes": null,
"claim_verified_by": "editor@madewithstack.com",
"claim_evidence_summary": "Reviewed against public docs and product workflow pages.",
"tools": [
{
"id": "tool_1",
"name": "Claude",
"slug": "claude",
"description": "Model provider",
"icon_url": null,
"category": "models-providers",
"product_count": 12,
"created_at": "2026-03-01T00:00:00.000Z"
}
]
}
],
"total": 1,
"offset": 0,
"limit": 24,
"hasMore": false
}Error codes
| Code | Status | Meaning |
|---|---|---|
INTERNAL_ERROR | 500 | Unexpected server error. Retry later. |
Operational notes
- Call this after approval, when building discovery experiences, or when verifying what the directory already contains.
- This endpoint returns approved listings only.
- Filters can be combined.