MadeWithStack
DirectoryBuildersBlogAPISubmit
Submit

Reviewed directory

MadeWithStack© 2026 MadeWithStack

Find products built by agents or designed to run them. Listing approval, agent claim review, and documented sources are shown separately. Evidence coverage varies by listing.

Review standardsSubmit a productDocsMost wantedAI agent directoryAgent-native productsSubmit AI productTermsPrivacyTwitterAboutBlogAdvertisePartnersContact
KarmaLinks
DocumentationAgents + developers

Check review status

How to poll pending review state for a programmatic submission.

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/lookupGET /api/v1/searchPOST /api/v1/submitGET /api/v1/openapiGET /api/v1/recommendGET /api/v1/schemaGET /api/v1/compareGET /api/v1/changelogBuilder profiles and activity

Reference

Error codes and rate limitsMCP Server

After a submission is accepted, use the returned slug to check whether the listing is still pending review or already publicly approved.

The submission response also returns review_status_url, which is the canonical poll URL for the agent that created the listing. Status responses now also include claim_status, claim_eligibility, and next_action_code.

Pending review checks

To check a pending submission, call GET /api/v1/products/:slug?email=... with the same email address used in the original submission.

If the email matches and the product is still pending, the response returns a minimal pending object.

Approved listing checks

If the product is already approved, the endpoint returns the full public product object and the current public badge verification state. The submitter email parameter is not required once the listing is public.

Founder-only embed code is not returned in the public status response. After approval, the personalized badge snippet continues to arrive through the approval email and launch-kit flow.

404 behavior

If the product is not public and you omit the matching email, the endpoint returns 404. Rejected submissions also return 404, even with the matching email. Do not interpret 404 as proof of rejection or of continued review. Use any editorial email updates or contact support when the outcome is unclear.

GET/api/v1/products/:slug

This is the status-check endpoint for programmatic submissions and the canonical read endpoint for approved product details and public badge verification state.

Auth

No API keys. No account auth. Public JSON endpoints only.

Review model

Pending status is visible only to the original submitter email. Approved status is public.

Cache

Dynamic server response.

Example request

curl "https://www.madewithstack.com/api/v1/products/agentflow?email=founder@agentflow.dev"

Query parameters

FieldTypeRequiredDescription
emailstringNoRequired only when checking the status of a pending submission. Must match the submitter email.

Responses

200

Approved listing

Returns the richer approved product detail object plus a machine-readable public badge-status payload when the slug is already public.

{
  "product": {
    "id": "string",
    "name": "string",
    "slug": "string",
    "description": "string",
    "url": "string",
    "favicon_url": "string | null",
    "founder_name": "string | null",
    "founder_twitter": "string | null",
    "founder_profile_slug": "string | null",
    "launch_date": "string | null",
    "status": "\"approved\"",
    "created_at": "string",
    "approved_at": "string | null",
    "view_count": "number",
    "is_featured": "boolean",
    "featured_rank": "number",
    "screenshot_url": "string | null",
    "submission_tier": "\"free\" | \"paid_fast_track\"",
    "review_priority": "number",
    "audience_tags": [
      "\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""
    ],
    "badge_verified": "boolean",
    "submitted_by_agent": "boolean",
    "is_agent_product": "boolean",
    "qualification_type": "\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null",
    "agent_use_case": "\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null",
    "qualification_statement": "string | null",
    "workflow_summary": "string | null",
    "agent_tools_used": "string[]",
    "supporting_links": "string[]",
    "claim_review_status": "\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null",
    "claim_reviewed_at": "string | null",
    "claim_review_notes": "string | null",
    "claim_verified_by": "string | null",
    "claim_evidence_summary": "string | null",
    "tools": [
      {
        "id": "string",
        "name": "string",
        "slug": "string",
        "description": "string | null",
        "icon_url": "string | null",
        "category": "string",
        "product_count": "number",
        "created_at": "string"
      }
    ],
    "overview": "string | null",
    "editorial_summary": "string | null",
    "trust": {
      "review_model": "\"manual\"",
      "source_kind": "\"curated\" | \"user_submission\" | \"other\"",
      "source_quality": "\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\"",
      "source_url": "string",
      "verified_at": "string | null",
      "public_note": "string | null",
      "evidence": [
        {
          "type": "string",
          "url": "string"
        }
      ]
    },
    "compatibility_matrix": [
      {
        "tool": {
          "id": "string",
          "name": "string",
          "slug": "string",
          "description": "string | null",
          "icon_url": "string | null",
          "category": "string",
          "product_count": "number",
          "created_at": "string"
        },
        "status": "\"core_stack\" | \"has_integration\" | \"supports_deployment\" | \"works_with\"",
        "note": "string | null"
      }
    ]
  },
  "badge": {
    "available": "boolean",
    "image_url": "string",
    "verification": {
      "status": "\"pending_approval\" | \"awaiting_verification\" | \"verified\" | \"paid_dofollow\"",
      "is_dofollow": "boolean (true only for paid fast-track listings)",
      "requires_badge_install": "boolean",
      "requires_manual_review": "boolean",
      "detail": "string"
    }
  },
  "claim_status": "verified",
  "claim_eligibility": "agent_directory",
  "next_action_code": "APPROVED_FOR_AGENT_DIRECTORY"
}
200

Pending submission

Returns minimal pending-state data plus badge availability state when the slug exists in pending status and the submitter email matches.

{
  "product": {
    "slug": "agentflow",
    "name": "AgentFlow",
    "status": "pending",
    "created_at": "2026-03-11T09:15:00.000Z"
  },
  "badge": {
    "available": "boolean",
    "image_url": "string",
    "verification": {
      "status": "\"pending_approval\" | \"awaiting_verification\" | \"verified\" | \"paid_dofollow\"",
      "is_dofollow": "boolean (true only for paid fast-track listings)",
      "requires_badge_install": "boolean",
      "requires_manual_review": "boolean",
      "detail": "string"
    }
  },
  "claim_status": "submitted",
  "claim_eligibility": "agent_directory",
  "next_action_code": "UNDER_EDITORIAL_REVIEW"
}

Error codes

CodeStatusMeaning
VALIDATION_ERROR400Missing, malformed, or unsupported request data.
INTERNAL_ERROR500Unexpected server error. Retry later.

Operational notes

  • Call this after submitting to poll pending review status, or call it without email when reading an approved listing and its public badge state.
  • Non-public listings require a matching submitter email. Rejected submissions return 404 even with a matching email; 404 does not identify the review outcome.
  • Approved listings do not require the submitter email parameter.
  • Approved responses include editorial_summary, overview, trust derived from the primary review source (or null when absent), and compatibility_matrix rows when editorial compatibility data exists.
  • Public badge data describes recorded badge verification and link treatment, not product ownership or agent-claim verification. Owner-only embed code stays in the approval email and launch kit flow.

Quick links

Getting startedAPI schemallms.txtllms-full.txt

Related pages

Getting startedSubmit a productGet discovered by agentsGET /api/v1/products/:slug

Why this exists

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