{"openapi":"3.1.0","info":{"title":"Vaaya","version":"1.0.0","description":"Pay-per-call agent services: media & video generation, web search & scraping, deep research, lead enrichment, memory, file storage, and more. Pay per request with x402 (USDC on Base) — no account or API key — or connect via OAuth/MCP at https://vaaya.ai/mcp for the full conversational catalog.","x-guidance":"Every paid operation is POST /api/run/{service}/{action} with a JSON body (schema per operation). Pay the x402 challenge exactly as returned (fixed USDC amounts on Base); billing happens only on success and every call is capped at the listed price. Start with exa_search for web search, firecrawl_scrape for scraping, fal_upload + the media services for generation, mem0/zep/letta for memory. GET the same URL for a free descriptor; GET /api/run for the full catalog. For multi-step workflows and dynamic-priced services use the MCP server at https://vaaya.ai/mcp (OAuth, consult-driven).","contact":{"email":"support@vaaya.ai"}},"servers":[{"url":"https://vaaya.ai"}],"paths":{"/api/run/fal/upload":{"post":{"operationId":"fal_upload","summary":"fal/upload","description":"Stage a media file on the fal CDN before a fal generation. Returns { upload_url, file_url }: PUT the raw file bytes to upload_url (with the matching Content-Type header), then pass file_url as the image_url/video_url/audio_url param of the generation. Upload originals UNCOMPRESSED — never downscale or re-encode; high-res inputs cost nothing extra and compression degrades outputs.","tags":["fal"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file_name":{"type":"string","minLength":1},"content_type":{"type":"string","minLength":1}},"required":["file_name","content_type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/cueframe/upload":{"post":{"operationId":"cueframe_upload","summary":"cueframe/upload","description":"Step 1 of video assembly. Stage an asset you've ALREADY uploaded to Vaaya Files onto CueFrame. First `files/upload` the asset (screen recording, narration/music audio, b-roll/video clip) → you get a `file_id`; then call this with that `file_id`. Vaaya imports it onto CueFrame from your stored copy and returns `{ media_id, status }` — reference `media_id` in put_composition. You do NOT handle CueFrame upload URLs/tokens; Vaaya does the transfer. Params: file_id (required, from files/upload), optional contentType override. Content type must be one CueFrame accepts: video (mp4/quicktime/mkv/webm), audio (mpeg/wav/x-wav/mp4/aac), or image (png/jpeg/webp). Blocks until CueFrame finishes processing (status:\"complete\"); on a slow import it returns status:\"importing\" with a valid media_id.","tags":["cueframe"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file_id":{"type":"string","minLength":1},"filename":{"type":"string","minLength":1,"maxLength":500},"contentType":{"type":"string","minLength":1}},"required":["file_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/cueframe/create_project":{"post":{"operationId":"cueframe_create_project","summary":"cueframe/create_project","description":"Step 2 of video assembly. Create a CueFrame project for any video style (1A demo, 1B PIP-avatar, 1C conceptual, 1D launch). Returns a project_id used by put_composition + render. Params: name (required), format {aspectRatio 16:9|9:16|1:1|4:5, fps 24|30|60, resolution hd|fhd|4k}, optional width/height/brandKitId.","tags":["cueframe"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200}},"required":["name"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/cueframe/put_composition":{"post":{"operationId":"cueframe_put_composition","summary":"cueframe/put_composition","description":"Step 3 of video assembly. Set the project's composition (the edit). Params: project_id (required) + the full composition object (pass its fields — v/format/tracks — at the top level alongside project_id; a nested `composition: {...}` wrapper is also accepted and unwrapped). Composition shape (CueFrame `Composition`): `{ v:1, format:{ aspectRatio:16:9|9:16|1:1|4:5, fps:24|30|60, resolution:hd|fhd|4k }, tracks:[{ id, kind:video|audio|image|overlay|effect, contents:[ clip ] }] }`. A clip = `{ id, startTime, duration, source, opacity?, scale?, rotation?, position?, region?, fit?, effects?, transitionIn? }`. A `source` is one of: `{ kind:\"media\", mediaId, trim:{start,end}, volume?(0–4), muted?, loop?, fadeInMs?, fadeOutMs?, kenBurns?, excludedRanges?, reframe:{ segments:[{ startSec, endSec, zoom, focus:{mode:\"point\",x,y}|{mode:\"frame-center\"}|{mode:\"face\"|...}, ease?:{in,out}, bias?:{x,y} }] } }` (reframe = the 1A autoZoom engine), `{ kind:\"component\", componentId, props }`, `{ kind:\"effect\", primitiveId, params }`, or an overlay `{ kind:\"overlay\", primitiveId, params, zPlane?, anchor?, parallax? }` (overlay `primitiveId`s come from CueFrame's /registry/overlays — overlays use primitiveId+params, NOT type/at/position). Prefer to let `consult` author this JSON — upload your assets to Vaaya Files, call `consult` with the manifest, and run the returned call; Vaaya has the taste for a tight demo.","tags":["cueframe"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1}},"required":["project_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/cueframe/render":{"post":{"operationId":"cueframe_render","summary":"cueframe/render","description":"Step 4 of video assembly. Render the project to a finished MP4. Async: returns a job_id; poll with `result` for the output URL — never re-run render to \"check\" (that starts a new paid render). Render intent:\"preview\" first for a fast cheap draft to review the cut, then intent:\"final\" for the full-resolution master. Params: project_id (required), intent (preview|final), optional format {aspectRatio,fps,resolution}, pipeline (ffmpeg-trim|remotion), priority (\"standard\" (default) or \"background\" — NEVER \"interactive\"; interactive is reserved for editor-session tokens and returns 403 for API callers).","tags":["cueframe"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"1.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1},"intent":{"type":"string","enum":["preview","final"]}},"required":["project_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/vaaya/consult":{"post":{"operationId":"vaaya_consult","summary":"vaaya/consult","description":"Vaaya — one paid endpoint for agents. Describe any goal in plain English and get back the exact Vaaya calls to run: image & video generation, product-demo videos, web search & scraping, deep & market research, GTM lead enrichment & outreach, code sandboxes, browser automation, email, and persistent memory. Returns ready-to-run { service, action, params } calls with prices — then POST each to /api/run/{service}/{action}. Pay-per-call in USDC on Base (x402), no account or API key.","tags":["vaaya"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"intent":{"type":"string","minLength":1,"maxLength":2000}},"required":["intent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/files/upload":{"post":{"operationId":"files_upload","summary":"files/upload","description":"Store a file from the local machine in your persistent Vaaya file library. Returns put_url (PUT the raw bytes there with curl) plus file_id and get_url. Files persist across tasks — check files/list before re-uploading. Max 100MB per file.","tags":["files"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":200},"size_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":104857600},"mime":{"type":"string","maxLength":100},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":40},"maxItems":10},"note":{"type":"string","maxLength":500}},"required":["filename","size_bytes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/files/upload_from_url":{"post":{"operationId":"files_upload_from_url","summary":"files/upload_from_url","description":"Fetch a file from a public URL into your persistent Vaaya file library (server-side — no local download needed). Returns file_id and get_url. Max 100MB per file.","tags":["files"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"filename":{"type":"string","minLength":1,"maxLength":200},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":40},"maxItems":10},"note":{"type":"string","maxLength":500}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/firecrawl/scrape":{"post":{"operationId":"firecrawl_scrape","summary":"firecrawl/scrape","description":"Firecrawl — Scrape a single URL and return clean markdown/HTML.","tags":["firecrawl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"formats":{"type":"array","items":{"type":"string"}},"onlyMainContent":{"type":"boolean"},"waitFor":{"type":"integer","exclusiveMinimum":0}},"required":["url"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/firecrawl/crawl":{"post":{"operationId":"firecrawl_crawl","summary":"firecrawl/crawl","description":"Firecrawl — Crawl a website starting from a URL, following links.","tags":["firecrawl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"limit":{"type":"integer","exclusiveMinimum":0},"maxDepth":{"type":"integer","exclusiveMinimum":0}},"required":["url"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/firecrawl/map":{"post":{"operationId":"firecrawl_map","summary":"firecrawl/map","description":"Firecrawl — Map all URLs on a website without scraping content.","tags":["firecrawl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/firecrawl/search":{"post":{"operationId":"firecrawl_search","summary":"firecrawl/search","description":"Firecrawl — Search the web and return scraped results.","tags":["firecrawl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1},"limit":{"type":"integer","exclusiveMinimum":0}},"required":["query"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/firecrawl/extract":{"post":{"operationId":"firecrawl_extract","summary":"firecrawl/extract","description":"Firecrawl — Extract structured data from URLs using a schema.","tags":["firecrawl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string","format":"uri"}},"prompt":{"type":"string"},"schema":{"type":"object","additionalProperties":{}}},"required":["urls"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/mem0/add":{"post":{"operationId":"mem0_add","summary":"mem0/add","description":"Mem0 — store conversation turns as long-term memory. Pass `messages` ([{role,content}]) and a `user_id`; Mem0 auto-extracts facts. Returns a queued event id.","tags":["mem0"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","minLength":1},"content":{"type":"string"}},"required":["role","content"],"additionalProperties":false},"minItems":1},"user_id":{"type":"string","minLength":1},"metadata":{"type":"object","additionalProperties":{}},"infer":{"type":"boolean"}},"required":["messages","user_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/mem0/search":{"post":{"operationId":"mem0_search","summary":"mem0/search","description":"Mem0 — semantic search over a user’s stored memories. Pass `query` and `user_id`; returns ranked memories with scores.","tags":["mem0"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1},"user_id":{"type":"string","minLength":1},"top_k":{"type":"integer","exclusiveMinimum":0}},"required":["query","user_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/letta/agent-create":{"post":{"operationId":"letta_agent_create","summary":"letta/agent-create","description":"Letta — create a stateful agent with self-managed memory blocks. Returns an agent `id` to drive with `letta:message`. Optional: name, model, memory_blocks.","tags":["letta"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"model":{"type":"string"},"memory_blocks":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"system":{"type":"string"}},"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/letta/message":{"post":{"operationId":"letta_message","summary":"letta/message","description":"Letta — send a message to an agent; the agent thinks and self-edits its memory. Pass `agent_id` (from agent-create) and `input` (the user message). Reply is the assistant_message in the response.","tags":["letta"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"agent_id":{"type":"string","minLength":1},"input":{"anyOf":[{"type":"string"},{"type":"array","items":{}}]},"messages":{"type":"array","items":{}}},"required":["agent_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/zep/user-add":{"post":{"operationId":"zep_user_add","summary":"zep/user-add","description":"Zep — create a user (prerequisite before threads/messages). Pass a stable `user_id`. Optional: email, first_name, last_name, metadata.","tags":["zep"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"string","minLength":1},"email":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}}},"required":["user_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/zep/thread-create":{"post":{"operationId":"zep_thread_create","summary":"zep/thread-create","description":"Zep — open a thread (conversation container) for a user. Pass `thread_id` and `user_id`. Facts ingested in one thread are available across all the user’s threads.","tags":["zep"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":"string","minLength":1},"user_id":{"type":"string","minLength":1},"metadata":{"type":"object","additionalProperties":{}}},"required":["thread_id","user_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/zep/add":{"post":{"operationId":"zep_add","summary":"zep/add","description":"Zep — add messages to a thread; Zep ingests them into the user’s knowledge graph. Pass `thread_id` and `messages` ([{role,content,name?}]). Set return_context:true to get the context block back inline.","tags":["zep"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":"string","minLength":1},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","minLength":1},"content":{"type":"string"},"name":{"type":"string"}},"required":["role","content"],"additionalProperties":false},"minItems":1},"return_context":{"type":"boolean"}},"required":["thread_id","messages"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/zep/get-context":{"post":{"operationId":"zep_get_context","summary":"zep/get-context","description":"Zep — fetch the token-efficient summarized context block for a thread (drop it into your LLM prompt). Pass `thread_id`.","tags":["zep"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":"string","minLength":1}},"required":["thread_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/zep/search":{"post":{"operationId":"zep_search","summary":"zep/search","description":"Zep — search a user’s knowledge graph for specific facts (vs the summarized context). Pass `query` and `user_id`. Optional scope (edges|nodes|episodes) and limit.","tags":["zep"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1},"user_id":{"type":"string","minLength":1},"scope":{"type":"string","enum":["edges","nodes","episodes"]},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":50}},"required":["query","user_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/exa/search":{"post":{"operationId":"exa_search","summary":"exa/search","description":"Exa — semantic web search via x402 ($0.007). No API key. numResults max 10 on x402.","tags":["exa"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1},"numResults":{"type":"integer","exclusiveMinimum":0,"maximum":10},"type":{"type":"string","enum":["auto","neural","keyword","deep-lite","deep","deep-reasoning"]},"contents":{}},"required":["query"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/parallel/search":{"post":{"operationId":"parallel_search","summary":"parallel/search","description":"Parallel — AI-powered web search via x402 (1¢ flat).","tags":["parallel"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1},"mode":{"type":"string","enum":["one-shot","fast"]},"objective":{"type":"string"}},"required":["query"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/agentmail/create_inbox":{"post":{"operationId":"agentmail_create_inbox","summary":"agentmail/create_inbox","description":"AgentMail — Provision a new agent inbox via x402.","tags":["agentmail"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"2.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"domain":{"type":"string"},"display_name":{"type":"string"}},"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/agentmail/send":{"post":{"operationId":"agentmail_send","summary":"agentmail/send","description":"AgentMail — Send a transactional email from an agent inbox via x402.","tags":["agentmail"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inbox_id":{"type":"string","minLength":1},"to":{"anyOf":[{"type":"string","format":"email"},{"type":"array","items":{"type":"string","format":"email"}}]},"subject":{"type":"string","minLength":1},"text":{"type":"string"},"html":{"type":"string"}},"required":["inbox_id","to","subject"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/agentmail/reply":{"post":{"operationId":"agentmail_reply","summary":"agentmail/reply","description":"AgentMail — Reply to a specific message via x402.","tags":["agentmail"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inbox_id":{"type":"string","minLength":1},"message_id":{"type":"string","minLength":1},"text":{"type":"string"},"html":{"type":"string"}},"required":["inbox_id","message_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/modal/sandbox-exec":{"post":{"operationId":"modal_sandbox_exec","summary":"modal/sandbox-exec","description":"Modal — Run a command in a running sandbox and return its output.","tags":["modal"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sandbox_id":{"type":"string","minLength":1},"command":{"anyOf":[{"type":"string","minLength":1},{"type":"array","items":{"type":"string","minLength":1},"minItems":1}]},"timeout":{"type":"integer","exclusiveMinimum":0}},"required":["sandbox_id","command"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/modal/sandbox-terminate":{"post":{"operationId":"modal_sandbox_terminate","summary":"modal/sandbox-terminate","description":"Modal — Terminate a running sandbox.","tags":["modal"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sandbox_id":{"type":"string","minLength":1}},"required":["sandbox_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/modal/sandbox-status":{"post":{"operationId":"modal_sandbox_status","summary":"modal/sandbox-status","description":"Modal — Check status of a sandbox.","tags":["modal"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sandbox_id":{"type":"string","minLength":1}},"required":["sandbox_id"],"additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/prospeo/search-people":{"post":{"operationId":"prospeo_search_people","summary":"prospeo/search-people","description":"Find people by ICP via Prospeo (search-person). Required `job_titles` (array, CONTAINS-matched). Optional: `seniority` (Founder/Owner, C-Suite, Vice President, Director, Manager, Head, Partner, Senior, Entry, Intern), `industries` (canonical, e.g. \"Software Development\", \"Technology, Information and Internet\"), `headcount` (buckets 1-10 … 10000+), `person_locations`/`company_locations` (canonical — resolve free text via `prospeo:suggest` first), `funding_stages` (Pre seed, Seed, Series A-D, Angel, Grant, …), `funded_within_days` (raised within N days — a timing signal), `accelerator` (e.g. \"Y Combinator\"), `years_experience` {min,max}, `departments`, `company_domains` (≤500 domains to pre-scope to specific companies), `page`. Returns people with name, current_job_title, linkedin_url, and a verified (masked) email — reveal with `prospeo:enrich`.","tags":["prospeo"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"job_titles":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"seniority":{"type":"array","items":{"type":"string","enum":["C-Suite","Director","Entry","Founder/Owner","Head","Intern","Manager","Partner","Senior","Vice President"]}},"industries":{"type":"array","items":{"type":"string"}},"headcount":{"type":"array","items":{"type":"string","enum":["1-10","11-20","21-50","51-100","101-200","201-500","501-1000","1001-2000","2001-5000","5001-10000","10000+"]}},"person_locations":{"type":"array","items":{"type":"string"}},"company_locations":{"type":"array","items":{"type":"string"}},"funding_stages":{"type":"array","items":{"type":"string","enum":["Pre seed","Seed","Series A","Series B","Series C","Series D","Series E-J","Angel","Grant","Private equity","Debt financing","Corporate round","Convertible note","Equity crowdfunding","Product crowdfunding"]}},"funded_within_days":{"type":"integer","exclusiveMinimum":0},"accelerator":{"type":"string","minLength":1},"years_experience":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","exclusiveMinimum":0}},"additionalProperties":false},"departments":{"type":"array","items":{"type":"string"}},"company_domains":{"type":"array","items":{"type":"string"},"maxItems":500},"page":{"type":"integer","exclusiveMinimum":0}},"required":["job_titles"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/prospeo/enrich":{"post":{"operationId":"prospeo_enrich","summary":"prospeo/enrich","description":"Reveal a person's verified email via Prospeo. Pass `person_id` (from search-people) or `linkedin_url`. Returns the unmasked verified email. 1 credit; free if the record was enriched within 90 days.","tags":["prospeo"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_id":{"type":"string","minLength":1},"linkedin_url":{"type":"string","format":"uri"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/prospeo/verify":{"post":{"operationId":"prospeo_verify","summary":"prospeo/verify","description":"Verify an email address's deliverability via Prospeo (rides enrich-person with an email input — the 2026 API has no standalone verifier). Pass `email`. The response's `person.email.status` is the verdict (e.g. VERIFIED) with `verification_method`. 1 credit per found email; no vendor charge on a miss; results cached 90 days upstream.","tags":["prospeo"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/nyne/company-funders":{"post":{"operationId":"nyne_company_funders","summary":"nyne/company-funders","description":"Investor intelligence on a VC/fund via Nyne — pass `company_name` or `company_domain` of the INVESTOR. Returns investment thesis, partners (with LinkedIn URLs), average check size, rounds they invest in, and recent investments. THE data source for a fundraise intent: qualify investors before outreach and pull partner names as leads. ASYNC: 202 + request_id — poll `nyne:result`. No match = 404, not charged upstream.","tags":["nyne"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.300000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"company_name":{"type":"string","maxLength":255},"company_domain":{"type":"string","maxLength":255}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/nyne/person-interactions":{"post":{"operationId":"nyne_person_interactions","summary":"nyne/person-interactions","description":"Engagement mining via Nyne — who follows / is followed by / replied to a profile or post. Pass `social_media_url` (platform inferred) + `type` ∈ replies|followers|following|\"followers,following\" (+ `tweet_id` for a specific post's replies, `max_results` 10-1000). Returns usernames, display names, profile URLs, follower counts, verified flags — turn the people engaging with a launch/topic into leads. ASYNC: 202 + request_id — poll `nyne:result`.","tags":["nyne"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.300000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"social_media_url":{"type":"string","format":"uri"},"type":{"type":"string","enum":["replies","followers","following","followers,following"]},"username":{"type":"string","maxLength":100},"tweet_id":{"type":"string","maxLength":25},"max_results":{"type":"integer","minimum":10,"maximum":1000}},"required":["social_media_url","type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/openfunnel/tam-build":{"post":{"operationId":"openfunnel_tam_build","summary":"openfunnel/tam-build","description":"Build an ENTIRE TAM (total addressable market) from a plain-English ICP via OpenFunnel: { query } (≤500 chars, e.g. \"cloud observability tools for mid-market SaaS\"). ASYNC — returns { job_id } immediately; poll `openfunnel:results` {kind:\"tam\"} until status \"completed\", then page with `cursor`. Yields THOUSANDS of companies (1 vendor-credit each) — use `openfunnel:job-control` to pause/cancel and cap the run; for a fixed-size shortlist use `openfunnel:lookalikes` instead. PLACEHOLDER flat price while vendor pricing is unpublished.","tags":["openfunnel"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"5.000000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":500}},"required":["query"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/openfunnel/tech-companies":{"post":{"operationId":"openfunnel_tech_companies","summary":"openfunnel/tech-companies","description":"Find companies whose recent JOB POSTS mention a technology via OpenFunnel (SYNC, 50 results/page): { tech } (e.g. \"Snowflake\") + optional `variations` (OR-matched phrasings, e.g. [\"K8s\"]), `lookback_days` (≤365), `page`, `enrich` (firmographics), `hq_country_code` (alpha-3), min/max_employee_count (filters auto-enable enrich), `include_evidence` (the job-post snippet — the outreach hook). Perfect for \"sell to companies running X\" and competitor-displacement plays.","tags":["openfunnel"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.400000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tech":{"type":"string","minLength":1,"maxLength":128},"variations":{"type":"array","items":{"type":"string"}},"lookback_days":{"type":"integer","minimum":1,"maximum":365},"page":{"type":"integer","minimum":1,"maximum":1000},"exclude_vendor":{"type":"boolean"},"exclude_aggregators":{"type":"boolean"},"exclude_company_slugs":{"type":"array","items":{"type":"string"}},"include_evidence":{"type":"boolean"},"enrich":{"type":"boolean"},"hq_country_code":{"type":"string","minLength":3,"maxLength":3},"min_employee_count":{"type":"integer","minimum":0},"max_employee_count":{"type":"integer","minimum":0}},"required":["tech"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/openfunnel/deep-research":{"post":{"operationId":"openfunnel_deep_research","summary":"openfunnel/deep-research","description":"Deep-research and QUALIFY one known company against your questions via OpenFunnel (SYNC): { domain } + at least one of `activity_question` (\"are they investing in data infra?\" — answered from recent job posts, `timeframe_days` default 90) and `qualifier_question` (\"do they have a platform team led by a director+?\" — answered from LinkedIn employee profiles). Returns qualified:boolean + reasoned answer + sources (job posts / people). THE pre-outreach qualifier; a 404 domain is free.","tags":["openfunnel"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.200000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":3},"activity_question":{"type":"string","minLength":1},"qualifier_question":{"type":"string","minLength":1},"timeframe_days":{"type":"integer","minimum":1,"maximum":365},"max_jobs_to_check":{"type":"integer","minimum":1,"maximum":200}},"required":["domain"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/apollo/person-enrich":{"post":{"operationId":"apollo_person_enrich","summary":"apollo/person-enrich","description":"Match a person against Apollo's B2B database and reveal their work email — the FINAL enrichment backup after Prospeo and Nyne. Pass any of: `email`, `linkedin_url`, `name` (or `first_name`+`last_name`) with `organization_name`/`domain` to disambiguate; `reveal_personal_emails: true` adds personal addresses. NOTE: requires a paid Apollo plan with API access — on gated plans the call returns 403 API_INACCESSIBLE (not charged); treat as a miss.","tags":["apollo"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.100000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","minLength":1},"last_name":{"type":"string","minLength":1},"name":{"type":"string","minLength":2},"email":{"type":"string","format":"email"},"organization_name":{"type":"string","minLength":1},"domain":{"type":"string","minLength":3},"linkedin_url":{"type":"string","format":"uri"},"reveal_personal_emails":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run/apollo/org-enrich":{"post":{"operationId":"apollo_org_enrich","summary":"apollo/org-enrich","description":"Company firmographics by domain via Apollo (works on the current plan): name, employee count, industry, socials, and often a COMPANY PHONE number. Pass { domain: 'stripe.com' }. Good for grounding a draft in company facts when the lead's company is thin.","tags":["apollo"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":3}},"required":["domain"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"description":"Service-specific result payload"},"charged_cents":{"type":"integer","description":"Price charged for this call, in cents"},"transaction_id":{"type":"string"}},"required":["ok","data","charged_cents"]}}}},"402":{"description":"Payment Required (x402: USDC on Base, no account needed)"}}}},"/api/run":{"get":{"operationId":"catalog_index","security":[],"summary":"Free catalog index of every service endpoint with prices","responses":{"200":{"description":"Catalog listing"}}}}}}