MadeWithStack
DirectoryBlogAPISubmit
Submit

Reviewed directory

MadeWithStack© 2026 MadeWithStack

Professional directory of reviewed agent-built and agent-native products, with programmatic submission, manual review, and public trust signals grounded in real evidence.

Submit a productDocsMost wantedTermsPrivacyTwitterAboutBlogAdvertiseContact
KarmaLinks
DocumentationAgents + developers

Get discovered by agents

How app creators can make a MadeWithStack listing easier for agents, AI search systems, and developers to find, evaluate, and recommend.

Docs

Overview

Agent and API DocumentationGetting started

Workflows

Submit a productCheck review statusGet discovered by agents

API Reference

GET /api/v1/toolsGET /api/v1/productsGET /api/v1/products/:slugGET /api/v1/searchPOST /api/v1/submitGET /api/v1/openapiGET /api/v1/recommendGET /api/v1/schemaGET /api/v1/compareGET /api/v1/changelog

Reference

Error codes and rate limitsMCP Server

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

SurfaceHow it helps app creators
/agentsHuman browsing surface for reviewed Agent Directory products.
GET /api/v1/recommendLets agents ask for ranked product matches by task and stack.
GET /api/v1/searchLightweight keyword search for tool and product suggestions.
GET /api/v1/productsStructured catalog browse with filters for is_agent, agent_use_case, qualification_type, claim_status, tool, and audience.
/llms.txt and /.well-known/agents.jsonMachine-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_slugs from GET /api/v1/tools, or custom_tools when the tool is not in the taxonomy yet
  • qualification_type only when the product clearly qualifies for the Agent Directory
  • agent_use_case that matches the primary workflow
  • qualification_statement that states the claim plainly
  • workflow_summary that explains what the agent does in the product
  • agent_tools_used with recognizable model, framework, automation, database, hosting, or workflow tools
  • supporting_links that 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.
POST/api/v1/submit

This 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

FieldTypeRequiredDescription
namestringYesProduct name.
urlabsolute http/https URLYesCanonical product homepage URL.
descriptionstringYesShort description. Maximum 240 characters.
emailstringYesSubmitter email used for review updates and pending-status checks.
tool_slugsstring[]NoPreferred tool identifiers. Discover valid values from GET /api/v1/tools.
tool_idsUUID[]NoAlternative to tool_slugs. Every value must be a valid UUID string.
custom_toolsstring[]NoCustom tool names. Maximum 10 entries, each 40 characters or less.
founder_namestringNoFounder or team name.
founder_twitterstringNoX/Twitter handle.
favicon_urlabsolute http/https URLNoManual logo override.
screenshot_urlabsolute http/https URLNoManual screenshot override.
audience_tags("for-developers" | "for-founders" | "b2b" | "consumer")[]NoOptional audience tags.
qualification_type"agent_native" | "agent_built" | "agentic_workflow"NoOptional Agent Directory qualification type. If provided, the related claim fields become required.
agent_use_case"support" | "research" | "operations" | "sales" | "voice" | "browser_automation"NoPrimary use case for Agent Directory review.
qualification_statementstringNoShort public justification for Agent Directory eligibility.
workflow_summarystringNoHow the agent or agentic workflow is central to the product.
agent_tools_usedstring[]NoNamed agent-building tools used in the product or build process.
supporting_linksstring[]NoSupporting public links reviewers can inspect for the claim.
referral_codestringNoOptional referral code from an existing listing.

Responses

201

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

CodeStatusMeaning
VALIDATION_ERROR400Missing, malformed, or unsupported request data.
INVALID_TOOL_SLUGS400One or more submitted tool slugs are not present in the directory.
DUPLICATE_DOMAIN409A product with the same normalized domain already exists.
RATE_LIMITED429The request exceeded the public API rate limit window.
INTERNAL_ERROR500Unexpected 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.
GET/api/v1/recommend

Use 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

FieldTypeRequiredDescription
taskfree-text task or canonical use case such as "support", "research", or "customer-support"NoTask intent to match against agent use case and public workflow metadata.
stackcomma-separated tool slugs or names such as "nextjs,supabase"NoPreferred stack terms to resolve against known directory tools.
limitnumberNoMaximum number of recommendations to return. Defaults to 10 and caps at 24.

Responses

200

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

CodeStatusMeaning
VALIDATION_ERROR400Missing, malformed, or unsupported request data.
INTERNAL_ERROR500Unexpected 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.
GET/api/v1/search

Use 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

FieldTypeRequiredDescription
qstringYesSearch query string.

Responses

200

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

CodeStatusMeaning
INTERNAL_ERROR500Unexpected 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.
GET/api/v1/products

Use 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

FieldTypeRequiredDescription
offsetnumberNoPagination offset. Defaults to 0.
limitnumberNoPage size from 1 to 48. Defaults to 24.
sort"newest" | "popular"NoSort order. Defaults to "newest".
categorytool category slugNoFilter by tool category.
audience"for-developers" | "for-founders" | "b2b" | "consumer" | "all"NoFilter by audience tag.
tooltool slugNoFilter by a specific tool slug such as supabase.
is_agent"true"NoReturn only Agent Directory listings.
qualification_type"agent_native" | "agent_built" | "agentic_workflow"NoFilter Agent Directory results by qualification type.
claim_status"claim_submitted" | "claim_verified"NoFilter Agent Directory results by public claim-review state.
agent_use_case"support" | "research" | "operations" | "sales" | "voice" | "browser_automation"NoFilter Agent Directory results by primary use case.

Responses

200

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

CodeStatusMeaning
INTERNAL_ERROR500Unexpected 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.

Quick links

Getting startedAPI schemallms.txtllms-full.txt

Related pages

Getting startedSubmit a productCheck review statusGET /api/v1/productsGET /api/v1/searchPOST /api/v1/submit

Why this exists

The public API is agent-first, versioned, and manually reviewed. These docs separate the acquisition path from the exact operational contract.