{
  "name": "Launch Llama API catalog",
  "generated_at": "2026-09-28T06:41:57.262Z",
  "rest_base": "https://kxdushqmihjyuddcwkpw.supabase.co/functions/v1/api-v1",
  "mcp_base": "https://kxdushqmihjyuddcwkpw.supabase.co/functions/v1/api-mcp",
  "openapi": "https://kxdushqmihjyuddcwkpw.supabase.co/functions/v1/api-v1/openapi.json",
  "operations": [
    {
      "name": "search_products",
      "method": "GET",
      "path": "/products",
      "auth": "None",
      "input": "q, limit, offset, category, type, period",
      "summary": "Keyword search with optional category, type, and period filters."
    },
    {
      "name": "get_top_products",
      "method": "GET",
      "path": "/products/top",
      "auth": "None",
      "input": "n, offset, category, type, period",
      "summary": "Top N listings by upvotes — no keyword required."
    },
    {
      "name": "list_categories",
      "method": "GET",
      "path": "/categories",
      "auth": "None",
      "input": "—",
      "summary": "Distinct category labels for filter discovery."
    },
    {
      "name": "get_product",
      "method": "GET",
      "path": "/products/{slug}",
      "auth": "None",
      "input": "slug",
      "summary": "The full listing for one product."
    },
    {
      "name": "list_launch_directories",
      "method": "GET",
      "path": "/launch-directories",
      "auth": "None",
      "input": "category, pricing, min_dr, launch_platform, q, limit, offset, sort",
      "summary": "Vetted directory submission catalog (~610) with filters."
    },
    {
      "name": "plan_directory_campaign",
      "method": "POST",
      "path": "/directory-campaign/plan",
      "auth": "None",
      "input": "url, category, budget, limit",
      "summary": "Week-by-week Free→Freemium→Paid directory plan."
    },
    {
      "name": "check_launch_readiness",
      "method": "GET",
      "path": "/launch-readiness",
      "auth": "None",
      "input": "url",
      "summary": "Preflight audit: duplicates, badge, listing quality, next free weeks."
    },
    {
      "name": "get_badge_snippet",
      "method": "GET",
      "path": "/badge",
      "auth": "None",
      "input": "slug?, product_name?, variant",
      "summary": "HTML + markdown badge snippets (pass slug so href is /products/{slug})."
    },
    {
      "name": "verify_badge",
      "method": "POST",
      "path": "/badge/verify",
      "auth": "None (JWT to persist)",
      "input": "url, tool_id?",
      "summary": "Scrape badge; with JWT + ownership sets badge_added."
    },
    {
      "name": "get_newsletter_ad_options",
      "method": "GET",
      "path": "/newsletter-ads",
      "auth": "None",
      "input": "tool_id?",
      "summary": "Newsletter ad packages + checkout deep links (no Stripe session)."
    },
    {
      "name": "get_first_users_report",
      "method": "POST",
      "path": "/first-users",
      "auth": "None (JWT for tool_id)",
      "input": "url | tool_id",
      "summary": "First Users ICP report from homepage scrape + AI."
    },
    {
      "name": "submit_product",
      "method": "POST",
      "path": "/submissions",
      "auth": "None (draft) · X-Partner-Key (publish)",
      "input": "url, partner, email, marketing_consent, publish, categories, pricing_tier, …",
      "summary": "Open a draft, or partner-publish a live listing with /submit fields (skips badge/upvote gates)."
    },
    {
      "name": "get_submission",
      "method": "GET",
      "path": "/submissions/{id}",
      "auth": "UUID secret",
      "input": "id",
      "summary": "Fetch a draft you already created (resume in the browser)."
    },
    {
      "name": "get_my_launches",
      "method": "GET",
      "path": "/me/launches",
      "auth": "Bearer JWT",
      "input": "—",
      "summary": "Owned launches with status, badge, go_live, weekly rank."
    },
    {
      "name": "get_launch_analytics",
      "method": "GET",
      "path": "/me/launches/{id}/analytics",
      "auth": "Bearer JWT",
      "input": "tool id or slug",
      "summary": "Owner analytics: impressions, clicks, outbound, newsletter opens."
    },
    {
      "name": "get_directory_campaign_status",
      "method": "GET",
      "path": "/me/launches/{id}/directory-campaign",
      "auth": "Bearer JWT",
      "input": "tool id or slug",
      "summary": "Directory order + submission results for an owned tool."
    },
    {
      "name": "advise_growth",
      "method": "GET",
      "path": "/me/launches/{id}/advise-growth",
      "auth": "Bearer JWT",
      "input": "tool id or slug",
      "summary": "Structured growth advice: quality, badge, plan, ads, Featured."
    },
    {
      "name": "publish_changelog",
      "method": "POST",
      "path": "/me/launches/{id}/changelog",
      "auth": "Bearer JWT",
      "input": "title, body",
      "summary": "Append a published changelog entry on the product page."
    }
  ]
}