{"openapi":"3.1.0","info":{"title":"StableEnrich","description":"Pay-per-request access to FullEnrich, CompanyEnrich, LeadMagic, Clado, Exa, Firecrawl, Google Maps, Serper, and Whitepages APIs. No auth, no subscriptions.","version":"1.0.0","x-guidance":"# StableEnrich API Reference\n## Authentication\n\nAll endpoints require micropayment. Include payment headers as per the HTTP 402 specification. Payments are processed on Base mainnet (eip155:8453), Solana, or Tempo.\n\n## Base URL\n\nhttps://stableenrich.dev\n\nAll endpoints are relative to this base URL.\n\n## Agent Workflow (Progressive)\n\n1. Discover candidate endpoints with `mcp__agentcash__discover_api_endpoints(\"https://stableenrich.dev\")`.\n2. If discovery reports `guidanceAvailable=true` but guidance is omitted, only re-run with `include_guidance=true` when domain-level methodology is needed.\n3. For selected POST/PUT/PATCH endpoints, call `mcp__agentcash__check_endpoint_schema` before first fetch.\n4. Execute with `mcp__agentcash__fetch`.\n\nIf no endpoint matches the user task, stop this origin flow and switch to another origin.\n\n## Schema Discovery\n\nAll endpoints support schema discovery via the `check_endpoint_schema` tool. Use it on the selected endpoint to confirm request schema and pricing before execution.\n\n## Web Scraping\n\nFor web scraping tasks, always start with **Firecrawl `/api/firecrawl/scrape`** ($0.0126/request). It provides comprehensive page content with clean markdown formatting.\n\nIf you need to scrape many URLs and cost is a concern, consider **Exa `/api/exa/contents`** ($0.002/request) as a cheaper alternative for bulk processing.\n\n---\n\n# Research Methodology (Fan-out / Population Tasks)\n\nUse this playbook for ambiguous, broad, or \"find many candidates\" requests (e.g., \"junior hedge fund carry-trade people who might start a company\"):\n\n1. **Detect fan-out**: If the request implies a population or list-building task, avoid single-search answers. Plan for *many* queries and a large candidate pool.\n2. **Clarify constraints**: Restate the target, must-haves, nice-to-haves, geography, seniority, timeframe, and desired output size. If unclear, make explicit assumptions and proceed.\n3. **Broad-to-narrow pipeline**:\n   - **Seed**: Use multiple discovery sources to build an initial pool (Exa `/api/exa/search` with `category: \"people\"` for people discovery, Firecrawl for web lists, Google Maps for local orgs, FullEnrich company-search for company lists).\n   - **Expand**: Generate query variants (synonyms, titles, strategies, regions) and paginate until you reach a healthy pool (aim 50–100 candidates).\n   - **Enrich**: Resolve LinkedIn URLs first (Exa `/api/exa/search` with `category: \"people\"` or FullEnrich people-search), then PDL `/api/pdl/people-enrich` by `profile` — do not default to name+domain. Use Minerva enrich for LinkedIn/demographic data or Clado contacts-enrich for email/phone when PDL is insufficient; dedupe by name + company + profile URL.\n   - **Filter**: Apply the must-haves; keep 30–50 high-confidence matches.\n4. **Tool choreography**: Use **mcp__agentcash__fetch** for all paid endpoints. Verify company domains with `/api/companyenrich/org-enrich` (when you have a domain), `/api/companyenrich/properties-enrich` (when you only have name or social URLs), or `/api/fullenrich/company-search` before large people searches to avoid wasted calls.\n5. **Evidence and transparency**: Track sources per candidate; note uncertainty; surface how the list was constructed and where gaps remain.\n\n---\n\n# Google Maps API\n\n## POST /api/google-maps/text-search/full\nSearch for places using a text query with full field details (includes ratings, reviews, contact info, and atmosphere data).\nPrice: $0.08 per request\n\nExample:\n```json\n{\n  \"textQuery\": \"coffee shops in San Francisco\",\n  \"maxResultCount\": 5\n}\n```\n\n---\n\n## POST /api/google-maps/text-search/partial\nSearch for places using a text query with partial field details (basic info only, lower cost).\nPrice: $0.02 per request. Same request body as /text-search/full.\n\n---\n\n## POST /api/google-maps/nearby-search/full\nSearch for places near a geographic location with full details.\nPrice: $0.08 per request\n\nExample:\n```json\n{\n  \"locationRestriction\": {\n    \"circle\": {\n      \"center\": { \"latitude\": 37.7749, \"longitude\": -122.4194 },\n      \"radius\": 1000\n    }\n  },\n  \"maxResultCount\": 5\n}\n```\n\n---\n\n## POST /api/google-maps/nearby-search/partial\nSearch for places near a geographic location with partial details.\nPrice: $0.02 per request. Same request body as /nearby-search/full.\n\n---\n\n## GET /api/google-maps/place-details/full\nGet full details for a specific place by ID.\nPrice: $0.05 per request\n\nExample: GET /api/google-maps/place-details/full?placeId=ChIJN1t_tDeuEmsRUsoyG83frY4\n\n---\n\n## GET /api/google-maps/place-details/partial\nGet partial details for a specific place by ID.\nPrice: $0.02 per request. Same query parameters as /place-details/full.\n\n---\n\n## GET /api/google-maps/solar/building-insights\nGoogle Solar API — closest building insights for a lat/lng. Use this as a cheap probe to confirm Solar coverage for an address and to read the imagery capture date (`imageryDate`) before fetching the full data layers.\nPrice: $0.02 per request\n\nQuery parameters:\n- `latitude` (required) — building latitude\n- `longitude` (required) — building longitude\n- `requiredQuality` (optional, default `HIGH`) — `LOW` | `MEDIUM` | `HIGH`\n\nExample:\nGET /api/google-maps/solar/building-insights?latitude=37.4220&longitude=-122.0841&requiredQuality=LOW\n\nReturns roof segments, sunshine hours, panel capacity estimates, plus `imageryDate` and `imageryProcessedDate`.\n\n---\n\n## GET /api/google-maps/solar/data-layers\nGoogle Solar API — aerial GeoTIFF data layers for a building. Returns signed URLs for the actual aerial RGB photograph (`rgbUrl`), digital surface model (`dsmUrl`), shade/flux maps, and a building mask, along with `imageryDate` (the capture date of the photo).\nPrice: $0.08 per request\n\nQuery parameters:\n- `latitude` (required)\n- `longitude` (required)\n- `radiusMeters` (optional, default `50`, max `175`) — radius around the lat/lng to include\n- `view` (optional, default `FULL_LAYERS`) — `DSM_LAYER` | `IMAGERY_LAYERS` | `IMAGERY_AND_ANNUAL_FLUX_LAYERS` | `IMAGERY_AND_ALL_FLUX_LAYERS` | `FULL_LAYERS`\n- `requiredQuality` (optional, default `HIGH`) — `LOW` | `MEDIUM` | `HIGH`\n- `pixelSizeMeters` (optional, default `0.25`) — must be one of `0.1`, `0.25`, `0.5`, `1.0`\n- `exactQualityRequired` (optional, default `false`)\n\nExample:\nGET /api/google-maps/solar/data-layers?latitude=37.4220&longitude=-122.0841&radiusMeters=50&view=IMAGERY_LAYERS\n\nThe returned URLs are signed and expire — fetch the GeoTIFFs promptly. To convert a GeoTIFF to PNG/JPEG use `gdal_translate` or any image library that reads TIFF.\n\n---\n\n## GET /api/google-maps/aerial-view/lookup-video\nGoogle Aerial View API — look up a previously rendered 3D flyover video for an address (or by `videoId`). Returns video URIs (landscape, portrait, thumbnail) and metadata. Returns `state: PROCESSING` if a video has been requested but not finished rendering.\nPrice: $0.01 per request\n\nQuery parameters (provide one):\n- `address` — street address to look up\n- `videoId` — existing video ID\n\nExample:\nGET /api/google-maps/aerial-view/lookup-video?address=1600+Amphitheatre+Parkway+Mountain+View+CA\n\n---\n\n## POST /api/google-maps/aerial-view/render-video\nGoogle Aerial View API — request rendering of a new flyover video for an address. The render is asynchronous; poll `/api/google-maps/aerial-view/lookup-video` until `state: ACTIVE` to retrieve the finished URIs.\nPrice: $0.01 per request\n\nExample:\n```json\n{\n  \"address\": \"1600 Amphitheatre Parkway, Mountain View, CA\"\n}\n```\n\n---\n\n# B2B Data (FullEnrich, CompanyEnrich, PDL)\n\n## Organization lookup workflow\n\nBefore people searches filtered by company, verify the target domain:\n\n1. Call `/api/fullenrich/company-search` with the company name (use `exact_match: true` when the name is known precisely — then verify `domain` in results; see exact_match notes below), or\n2. Call `/api/companyenrich/org-enrich` with the domain to confirm the company profile.\n3. Use the verified domain in `/api/fullenrich/people-search` via `current_company_domains`.\n\nFullEnrich returns unobfuscated names in search (~80%). Email is **not** in search results — use `/api/pdl/people-enrich` for full profile, emails, and phone ($0.28/match, free on miss). Prefer `email` input when you already have a work address.\n\nIf B2B endpoints do not return needed data, fall back to Minerva (`/api/minerva/resolve` + `/api/minerva/enrich`) or Clado (`/api/clado/contacts-enrich`).\n\n## POST /api/fullenrich/company-search\nSearch for companies by filters.\nPrice: **$0.05 per query** (flat). FullEnrich upstream is **0.25 credits per result returned** ([credit docs](https://docs.fullenrich.com/api/v2/general/credit)) — ~$0.04 upstream at default `limit=3` on Pro-tier credits. Default `limit` is 3.\n\n**Required filters:** Provide at least one of `names`, `industries`, or `headquarters_locations`. `limit`/`page` alone returns **400 before payment**.\n\n**Filter shape:** Each filter array entry must be `{ \"value\": \"...\" }` (plain strings and `{ \"name\": \"...\" }` are coerced). `headcount_min`/`headcount_max` flat fields are coerced to `headcounts: [{ min, max }]`.\n\n**`industries` values:** Must be exact FullEnrich enum strings — free-text like `\"Artificial Intelligence\"` returns **400**. There is no AI-specific industry; OpenAI, Anthropic, and similar companies index under `\"Research Services\"`, not a dedicated AI label. Common values:\n\n- `\"Software Development\"`\n- `\"Research Services\"`\n- `\"Financial Services\"`\n- `\"Technology, Information and Internet\"`\n- `\"Venture Capital and Private Equity Principals\"`\n- `\"Medical Equipment Manufacturing\"`\n- `\"Information Technology & Services\"`\n\nFull catalog (490 values): [Company Industry enum](https://docs.fullenrich.com/api/v2/general/enums#company-industry).\n\n**`exact_match`:** `exact_match: true` matches on the name string only — it does **not** resolve brand intent and does **not** guarantee a single hit. Unrelated same-name companies still appear, often ranked first.\n\nFor common-word or ambiguous brand names, filter results by `domain` or `headcount` after retrieval — do not assume rank #1 is correct:\n- `\"ElevenLabs\"` + `exact_match` → elevenlabs.com.au (health food) can rank above elevenlabs.io (AI)\n- `\"Runway\"` + `exact_match` → runway.com (FP&A finance) can rank above runwayml.com (AI video)\n\n**Legal entity vs brand:** Search by legal entity name, not product or brand name — they often differ (e.g. Cursor AI appears under `\"Anysphere\"`, not `\"Cursor\"`).\n\n**Pagination:** `page` may be **silently ignored on cached responses** — `page: 2` can return identical results to `page: 0`. **Always use `search_after`** for reliable pagination: pass the cursor token from response `metadata.search_after` on the next request.\n\nExample (first page):\n```json\n{\n  \"limit\": 3,\n  \"industries\": [{ \"value\": \"Research Services\" }],\n  \"headquarters_locations\": [{ \"value\": \"United States\" }]\n}\n```\n\nExample (next page — use cursor from prior response `metadata.search_after`):\n```json\n{\n  \"limit\": 3,\n  \"search_after\": \"<token from metadata.search_after>\",\n  \"industries\": [{ \"value\": \"Research Services\" }],\n  \"headquarters_locations\": [{ \"value\": \"United States\" }]\n}\n```\n\nConfirmed behavior: `page: 2` repeated page-0 results (Salesforce, GitHub, Airbnb); `search_after` returned the correct next page (Docker, Splunk, Zendesk).\n\n---\n\n## POST /api/fullenrich/people-search\nSearch for people/contacts matching criteria.\nPrice: **$0.05 per query** (flat). Default `limit` is 3. Upstream bills 0.25 FullEnrich credits per person returned.\n\n**`limit`/`offset` alone always returns 400** — include at least one search filter (`current_company_domains`, `current_position_seniority_level`, `person_locations`, etc.).\n\n**Filter shape:** Each filter array accepts plain strings **or** `{\"value\":\"...\"}` objects. Both are valid:\n```json\n{ \"current_company_domains\": [\"stripe.com\"], \"current_position_seniority_level\": [\"VP\"] }\n{ \"current_company_domains\": [{ \"value\": \"stripe.com\" }], \"current_position_seniority_level\": [{ \"value\": \"VP\" }] }\n```\nDo **not** send `{\"limit\":3,\"offset\":0}` with no filters. Call `check_endpoint_schema` before first use.\n\nExample:\n```json\n{\n  \"limit\": 3,\n  \"current_company_domains\": [{ \"value\": \"stripe.com\" }],\n  \"current_position_seniority_level\": [{ \"value\": \"VP\" }]\n}\n```\n\n**Seniority vs title:** Use `current_position_seniority_level` for population queries (e.g. all VPs at a company). Use `current_position_titles` only when you need an exact title match — it returns far fewer results.\n\n**Seniority enum (request filters):** Use exact FullEnrich filter values from [Seniority enum](https://docs.fullenrich.com/api/v2/general/enums#seniority) — e.g. `C-level`, `VP`, `Head`, `Founder`. Do **not** use Apollo/other-provider values like `c_suite`; FullEnrich returns **400**. Response `employment.current.seniority` labels are output-only — do not copy them into filter values.\n\n**Zero-result recovery:** Combining **3+ filters** frequently returns zero results. If `people` is empty, remove the most restrictive filter first — `current_position_titles` is usually the cause. Start with **domain + seniority**, then add title only if needed.\n\n**Filter logic:** Filters **AND across categories, OR within a category** ([filtering logic](https://docs.fullenrich.com/api/v2/general/filtering-logic-explained)). Prefer seniority enum values (`C-level`, `VP`, `Head`, `Founder`, etc.) over exact titles. Full list: [Seniority enum](https://docs.fullenrich.com/api/v2/general/enums#seniority). Avoid `\"Director\"` in domain-scoped queries — too common; domain weighting collapses. Use `VP`, `Head`, or `Founder` instead. `person_locations` without `current_company_domains` is very broad — pair location with a company domain when possible.\n\n**Domain coverage:** People search coverage varies by company domain. Some domains (e.g. `figma.com`) return zero results regardless of filters. If a domain-scoped query is empty with minimal filters, the domain may not be indexed.\n\n**`current_company_days_since_last_job_change`:** Days since the person last changed jobs in FullEnrich's graph — **not necessarily** the start date of their current role. Larger ranges (500–1000) are more reliable than tight windows. Compounds aggressively with other filters — use with **one or two other filters max**.\n\nExample (recency + domain, no title):\n```json\n{\n  \"limit\": 3,\n  \"current_company_domains\": [{ \"value\": \"stripe.com\" }],\n  \"current_company_days_since_last_job_change\": [{ \"min\": 500, \"max\": 1000 }]\n}\n```\n\nExample (seniority instead of title):\n```json\n{\n  \"limit\": 3,\n  \"current_company_domains\": [{ \"value\": \"stripe.com\" }],\n  \"current_position_seniority_level\": [{ \"value\": \"C-level\" }]\n}\n```\n\n---\n\n## POST /api/companyenrich/org-enrich\nEnrich a company profile by domain.\nPrice: $0.06 per request\n\n`employees` and `revenue` are **range strings** (e.g. `\"5K-10K\"`, `\"over-1b\"`) — do not numeric-compare them.\n\n**Known issue — `openai.com`:** Resolves to an unrelated third-party ChatGPT fan page (~18 employees, no real funding). There is currently no workaround — the correct OpenAI record is not accessible via this endpoint.\n\n**Domain resolution:** CompanyEnrich may return a different canonical `domain` than your input. Always verify the returned `domain` matches your intent before downstream people searches.\n\n**Domains not indexed:** `x.com` (Twitter/X) returns **404** — the post-rebrand domain is not in the index. Use `twitter.com` instead.\n\n**Funding data:** `total_funding` is independently sourced and may not reflect recent rounds. Prefer the `funding` array for the most current round data — it updates more frequently than the scalar. Funding reflects VC/PE rounds only; **M&A acquisitions are not included** (e.g. GitHub's Microsoft acquisition does not appear).\n\n**`expand: \"workforce\"`:** Only useful if the domain resolves correctly. Before using workforce expansion, verify the returned `domain` matches your input — if CompanyEnrich canonicalized to a different domain, workforce data reflects that company, not yours.\n\nExample:\n```json\n{\n  \"domain\": \"stripe.com\"\n}\n```\n\n---\n\n## POST /api/companyenrich/properties-enrich\nEnrich a company profile by name or social URL when you do not have a domain.\nPrice: $0.06 per request\n\nPrefer `/api/companyenrich/org-enrich` when you have a domain — domain lookups are faster and more reliable. Use this endpoint when you only have a company name, LinkedIn URL/ID, or other social profile URL.\n\nUpstream uses **best match** disambiguation — always verify the returned `domain` and `name` match your intent before downstream people searches.\n\n`employees` and `revenue` are **range strings** (e.g. `\"5K-10K\"`, `\"over-1b\"`) — do not numeric-compare them.\n\n**`expand: \"workforce\"`:** Only useful if the resolved company matches your intent. Verify the returned `domain` before trusting workforce data.\n\nExample (LinkedIn URL):\n```json\n{\n  \"linkedinUrl\": \"https://www.linkedin.com/company/stripe\"\n}\n```\n\nExample (company name):\n```json\n{\n  \"name\": \"Stripe\"\n}\n```\n\n---\n\n## POST /api/pdl/people-enrich\nEnrich a person with full career history, emails, and phone from People Data Labs.\nPrice: **$0.28 per match — free when no record is found (HTTP 200, data: null)**\n\nSupported inputs (one group required — ranked by reliability):\n1. `email` — **highest reliability**; when you have a known work email, use it as the sole input (often likelihood 9)\n2. `profile` — LinkedIn URL; good hit rate but not better than email when email is known\n3. `first_name` + `last_name` + `company_name` or `company_domain` — fallback; similar coverage to profile, not a substitute when the person is absent from PDL\n\n**Common 400:** `{ \"first_name\": \"...\", \"last_name\": \"...\" }` alone is invalid — add `email`, `profile`, or name plus `company_name`/`company_domain`.\n\nExample (email — preferred when available):\n```json\n{\n  \"email\": \"patrick@stripe.com\"\n}\n```\n\nExample (LinkedIn):\n```json\n{\n  \"profile\": \"https://www.linkedin.com/in/patrickcollison\"\n}\n```\n\nExample (name + domain — fallback):\n```json\n{\n  \"first_name\": \"Patrick\",\n  \"last_name\": \"Collison\",\n  \"company_domain\": \"stripe.com\"\n}\n```\n\n**No match:** Returns **HTTP 200** with `{ \"status\": 404, \"likelihood\": 0, \"data\": null }` when the person is not in PDL — not an HTTP error, and **not billed**. Switching from name+domain to LinkedIn URL (or vice versa) will **not** help when `data` is null.\n\n**Coverage:** Strong for startup founders and US tech professionals. Some well-known executives (e.g. Dario Amodei, Tobi Lutke, Andrej Karpathy) are absent entirely — no lookup method will find them.\n\n**`is_primary` staleness:** `is_primary: true` marks the most recently updated job in PDL's graph, not necessarily the person's current primary employer. Board seats and advisory roles updated recently rank above older full-time roles. Always verify against the full `experience` array when the top-level `job_title` looks wrong.\n\n**PII:** Responses for public figures may include personal emails, phone numbers, and home addresses. Handle output accordingly.\n\n---\n\n# Exa API (Web Search & Research)\n\n## POST /api/exa/search\nSemantic web search for finding relevant pages.\nPrice: $0.01 per request\n\nSupports an optional `category` parameter to filter results by content type: `\"company\"`, `\"people\"`, `\"research paper\"`, `\"news\"`, `\"pdf\"`, `\"personal site\"`, `\"financial report\"`. Use `category` for verticals — `type` is search **mode** (`auto`, `fast`, `deep`, ...), not a category. Sending `\"type\": \"news\"` is wrong; use `\"category\": \"news\"`.\n\n**People/Profile Search Tip**: Prefer `category: \"people\"` for high-level people or profile searches. This is a fast, cheap way to find people before enriching with FullEnrich or Clado.\n\n**Domain filters:** `includeDomains` and `excludeDomains` must be **full hostnames** (e.g. `\"stanford.edu\"`, `\"github.com\"`) — bare TLDs like `\"edu\"` return errors. Do not filter to `reddit.com`, `twitter.com`, `x.com`, or `instagram.com` — Exa does not support those via domain filters; use https://stablesocial.dev for Instagram/social data, dedicated APIs for Reddit/X, or broad web search without those domains.\n\n**X/Twitter Tip**: Exa no longer supports `category: \"tweet\"`. Do not use Exa for complete timelines or reliable tweet retrieval; use a dedicated X/Twitter API for that. If Exa is used for broad web discovery, post-filter returned URLs to `x.com` or `twitter.com`.\n\nExample:\n```json\n{\n  \"query\": \"best practices for building AI agents\",\n  \"numResults\": 5\n}\n```\n\nLinkedIn profile search example:\n```json\n{\n  \"query\": \"hedge fund portfolio manager New York\",\n  \"category\": \"people\",\n  \"numResults\": 10\n}\n```\n\n---\n\n## POST /api/exa/find-similar\nFind pages similar to a given URL.\nPrice: $0.01 per request\n\nExample:\n```json\n{\n  \"url\": \"https://openai.com\",\n  \"numResults\": 5\n}\n```\n\n---\n\n## POST /api/exa/contents\nExtract content from specific URLs.\nPrice: $0.002 per request\n\nExample:\n```json\n{\n  \"urls\": [\"https://example.com\"]\n}\n```\n\n---\n\n## POST /api/exa/answer\nGet an AI-generated answer to a question based on web search.\nPrice: $0.01 per request\n\nExample:\n```json\n{\n  \"query\": \"What is the capital of France?\"\n}\n```\n\n---\n\n# Firecrawl API (Web Scraping)\n\n## POST /api/firecrawl/scrape\nScrape and extract content from a URL.\nPrice: $0.0126 per request\n\nExample:\n```json\n{\n  \"url\": \"https://example.com\"\n}\n```\n\n---\n\n## POST /api/firecrawl/search\nSearch the web and get scraped results.\nPrice: $0.0252 per request\n\n**`limit` max is 10** — requests with `limit > 10` return 400 before payment.\n\nExample:\n```json\n{\n  \"query\": \"best coffee shops\",\n  \"limit\": 5\n}\n```\n\n---\n\n# Clado API (Contact Enrichment)\n\nNote: Clado is useful as a fallback when PDL does not return personal emails or phone numbers. For LinkedIn profile data (experience, education, skills), use Minerva `/api/minerva/enrich` instead.\n\n## POST /api/clado/contacts-enrich\nEnrich contact information from LinkedIn URL, email, or phone number. Must provide exactly one of: linkedin_url, email, or phone.\nPrice: $0.20 per request\n\nExample:\n```json\n{\n  \"linkedin_url\": \"https://www.linkedin.com/in/satyanadella\"\n}\n```\n\n---\n\n# Serper API (Google Search)\n\n## POST /api/serper/news\nGoogle News search via Serper.dev.\nPrice: $0.04 per request\n\nExample:\n```json\n{\n  \"q\": \"OpenAI funding\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/shopping\nGoogle Shopping search via Serper.dev.\nPrice: $0.04 per request\n\nExample:\n```json\n{\n  \"q\": \"wireless earbuds\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/images\nGoogle Images search via Serper.dev. Generic public image discovery — products, places, screenshots, anything visual. For headshots/profile photos prefer `/api/serper/people-image-search`, which is tuned for that use case.\nPrice: $0.04 per request\n\nExample:\n```json\n{\n  \"q\": \"eiffel tower at night\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/people-image-search\nGoogle Images search tuned for finding a specific person — headshot/profile-photo candidates when LinkedIn/profile-photo APIs return null or a default avatar. Same backend as `/api/serper/images` but with calling guidance below.\nPrice: $0.04 per request\n\nHeadshot search guidance:\n- Resolve identity before ranking images when the person is ambiguous. Use FullEnrich, Exa LinkedIn profile search, or Minerva to confirm the profile slug, company, and title; do not rely on name alone.\n- LinkedIn profile photos may be limited to connections, a broader network, or LinkedIn members only. Only public photos are reliably indexable by Google. If a scraper returns `default_avatar: true` or a placeholder, use public non-LinkedIn sources tied to the confirmed identity.\n- If the first image search fails, research the confirmed profile for other disambiguating terms, such as school, city, past employers, projects, or personal sites, then retry Google Images with those terms.\n- Query syntax matters. Start with exact-name and company terms, for example: `\"Ryan Sproule\" \"Merit Systems\" LinkedIn headshot` or `\"Mason Hall\" \"Merit Systems\" profile photo`.\n- Use `num: 5-10`, `gl: \"us\"`, and `hl: \"en\"` for US business profiles unless the user gives another locale.\n- Prefer candidates whose result title/source page matches the person and company, from credible sources such as LinkedIn, the person's own website, company/team pages, RootData, Crunchbase, or news profiles.\n- Prefer square-ish, high-resolution human headshots. Reject obvious logos, default avatars, LinkedIn `videocover`, `feedshare`, cover/banner/background images, and images where the result title points to another person.\n- If no single result is clearly correct, return the top candidates with source URLs and explain the uncertainty.\n\nExample:\n```json\n{\n  \"q\": \"\\\"Ryan Sproule\\\" \\\"Merit Systems\\\" LinkedIn headshot\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/lens\nGoogle Lens reverse image search via Serper.dev. Pass a public image URL and get visually similar pages, products, and sources.\nPrice: $0.20 per request\n\nExample:\n```json\n{\n  \"url\": \"https://example.com/photo.jpg\",\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n# Whitepages API (People & Property Search)\n\n## POST /api/whitepages/person-search\nSearch for people by name, phone number, or address.\nPrice: $0.22 per request\n\nExample:\n```json\n{\n  \"first_name\": \"John\",\n  \"last_name\": \"Smith\",\n  \"state_code\": \"CA\"\n}\n```\n\n---\n\n## POST /api/whitepages/property-search\nGet property ownership, resident, and property details by address.\nPrice: $0.22 per request\n\n**Empty result is not an error:** when Whitepages has no indexed record for a valid address, the response is `200` with `{ \"result\": null }` — not 404. Commercial or newer addresses are often unindexed.\n\n**Field names:** Use `street` (aliases accepted: `address`, `street_line`, `street_line_1`, `street_address`), `state_code` (not `state`), and `zipcode` (aliases: `zip`, `zip_code`, `postal_code`). `street` must be a real address — prompts or placeholders like \"Please provide a detailed analysis\" are rejected before payment.\n\nExample:\n```json\n{\n  \"street\": \"123 Main St\",\n  \"city\": \"San Francisco\",\n  \"state_code\": \"CA\"\n}\n```\n\nWRONG (legacy names — use aliases above or canonical names):\n```json\n{\n  \"street\": \"123 Main St\",\n  \"city\": \"San Francisco\",\n  \"state\": \"CA\"\n}\n```\n\n---\n\n# Reddit API\n\nIMPORTANT - Two-step pattern for Reddit research:\n1. Use /api/reddit/search to find relevant posts. Responses are lightweight — selftext is truncated to 500 chars.\n   Posts with `selftextTruncated: true` have more content available.\n2. For any post where you need the full text or comments, call /api/reddit/post-comments with the post's permalink.\n   This returns the complete untruncated selftext plus all comments.\n\nThis pattern keeps search results small (< 2KB for 10 posts) while letting you drill into specific posts when needed.\n\n## POST /api/reddit/search\nSearch Reddit posts by query. Returns truncated previews for efficient browsing.\nPrice: $0.02 per request\n\nExample:\n```json\n{\n  \"query\": \"AI agents\",\n  \"sort\": \"top\",\n  \"timeframe\": \"week\",\n  \"maxResults\": 10\n}\n```\n\n---\n\n## POST /api/reddit/post-comments\nGet a Reddit post's full details and comments. Use this to get untruncated selftext and discussion for posts found via search.\nPrice: $0.02 per request\n\nExample:\n```json\n{\n  \"url\": \"https://www.reddit.com/r/AskReddit/comments/abc123/example_post\"\n}\n```\n\n---\n\n# Hunter API (Email Verification)\n\nIMPORTANT - Async pattern for Hunter email verification:\nMost verifications return immediately. If Hunter is still processing, the paid POST returns HTTP 202 with a jobId and pollUrl. Do not repeat the paid POST for that email. Poll the free SIWX endpoint with the same wallet until status is \"completed\" or \"failed\".\n\n## POST /api/hunter/email-verifier\nVerify email deliverability via Hunter.io. Returns either the final verification result or a pending job response.\nPrice: $0.03 per request\n\nExample:\n```json\n{\n  \"email\": \"test@stripe.com\"\n}\n```\n\nPending response:\n```json\n{\n  \"jobId\": \"3c16f7d3-8782-4a47-a033-b12bb0d7a16d\",\n  \"status\": \"pending\",\n  \"pollUrl\": \"https://stableenrich.dev/api/hunter/email-verifier/jobs/3c16f7d3-8782-4a47-a033-b12bb0d7a16d\",\n  \"retryAfterSeconds\": 5\n}\n```\n\n## GET /api/hunter/email-verifier/jobs/{jobId}\nPoll a pending Hunter verification job. This endpoint is free but requires SIWX authentication from the same wallet that paid for the POST.\nPrice: Free (SIWX)\n\nPoll every `retryAfterSeconds` while status is \"pending\". When status is \"completed\", read the final verification object from `result`.\n\n---\n\n# Cloudflare Browser Rendering API (Website Crawling)\n\nIMPORTANT - Two-step async pattern for Cloudflare crawl:\nThe crawl endpoint is long-running (up to ~2 minutes). It uses an async pattern:\n1. POST /api/cloudflare/crawl — pays and starts the crawl, returns a signed JWT token (202 response)\n2. GET /api/cloudflare/jobs?token=<jwt> — SIWX-authenticated (free), poll until job is complete\n\nPoll every 3–5 seconds. The job typically completes in 30–120 seconds depending on site size and render mode.\n\n## POST /api/cloudflare/crawl\nStart a website crawl. Returns a JWT token to poll for results.\nPrice: $0.10 per crawl job\n\nParameters:\n- `url` (string, required) — starting URL to crawl\n- `limit` (number, default 10, max 25) — maximum pages to crawl\n- `depth` (number, default 1, max 3) — maximum link depth from starting URL\n- `formats` (array, default [\"markdown\"]) — response formats: \"html\", \"markdown\", \"json\"\n- `render` (boolean, default false) — execute JavaScript when crawling (slower, costs more)\n- `source` (string, optional) — URL discovery: \"all\", \"sitemaps\", or \"links\"\n- `options` (object, optional) — crawl scope:\n  - `includeExternalLinks` (boolean) — follow links to external domains\n  - `includeSubdomains` (boolean) — follow links to subdomains\n  - `includePatterns` (string[]) — wildcard patterns for URLs to include\n  - `excludePatterns` (string[]) — wildcard patterns for URLs to exclude (higher priority)\n\nExample:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"limit\": 5,\n  \"depth\": 1,\n  \"formats\": [\"markdown\"]\n}\n```\n\nResponse (202):\n```json\n{ \"token\": \"<signed-jwt>\" }\n```\n\n---\n\n## GET /api/cloudflare/jobs?token=<jwt>\nPoll crawl job status. Requires SIWX wallet authentication (same wallet that paid). Free — no x402/MPP payment.\n\nUse `mcp__agentcash__fetch_with_auth` (not `fetch`) for this endpoint.\n\nResponse shape (Cloudflare's result returned directly):\n```json\n{\n  \"id\": \"<jobId>\",\n  \"status\": \"<cf-status-string>\",\n  \"records\": [\n    {\n      \"url\": \"https://example.com/page\",\n      \"status\": \"completed\",\n      \"markdown\": \"...\",\n      \"metadata\": { \"status\": 200, \"url\": \"...\", \"title\": \"...\" }\n    }\n  ],\n  \"total\": 10,\n  \"finished\": 8,\n  \"skipped\": 2,\n  \"browserSecondsUsed\": 45.2,\n  \"cursor\": \"...\"\n}\n```\n\nPage `status` values: `queued` | `completed` | `errored` | `disallowed` | `skipped` | `cancelled`\n\nTo determine completion, check `result.finished + result.skipped >= result.total` or poll until no pages remain `queued`.\n\nFull polling workflow:\n```\n1. token = fetch POST /api/cloudflare/crawl  →  response.token\n2. loop:\n     result = fetch_with_auth GET /api/cloudflare/jobs?token={token}\n     if result.finished + result.skipped >= result.total → done, use result.records\n     else → wait 3-5s, repeat\n```\n\n---\n\n# Minerva API (Person Identity & Enrichment)\n\nMinerva is a consumer identity graph. Use it to resolve person identities to unique Minerva PIDs, enrich profiles with demographics/work/contact data, validate emails, and infer country from contact signals.\n\n**Recommended workflow:**\n1. Use `/api/minerva/resolve` to match a person and get their Minerva PID + LinkedIn URL\n2. Use `/api/minerva/enrich` with the returned PID for instant, comprehensive enrichment\n3. Use `/api/minerva/validate-emails` to pre-screen emails before resolve/enrich\n\n**Minerva vs B2B providers:** Minerva excels at consumer profiles (demographics, income/wealth estimates, address history, life events). FullEnrich/CompanyEnrich/PDL excel at B2B/professional data. Use Minerva when you need personal contact info, financial signals, or household data.\n\n## POST /api/minerva/resolve\nResolve person identity to a Minerva PID and LinkedIn URL. Supports fuzzy matching (name + contact info) and reverse lookup (email or phone only, no name required).\nPrice: $0.02 per request\n\nStandard fuzzy match example:\n```json\n{\n  \"records\": [\n    {\n      \"record_id\": \"user_001\",\n      \"first_name\": \"John\",\n      \"last_name\": \"Smith\",\n      \"emails\": [\"[email protected]\"]\n    }\n  ]\n}\n```\n\nReverse lookup (email only, no name needed):\n```json\n{\n  \"records\": [{ \"record_id\": \"user_002\", \"emails\": [\"[email protected]\"] }]\n}\n```\n\nUse `match_condition_fields: [\"linkedin_url\"]` to only return matches that have a LinkedIn profile.\n\n---\n\n## POST /api/minerva/enrich\nEnrich person records with demographics, work history, education, contact info (emails + phones), address history, financial signals (income/wealth range), relatives, and social profiles.\nPrice: $0.05 per request\n\nThree lookup modes — by Minerva PID (fastest), by LinkedIn URL, or by name/email/phone:\n```json\n{\n  \"records\": [\n    { \"record_id\": \"user_001\", \"minerva_pid\": \"p-a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6\" },\n    { \"record_id\": \"user_002\", \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\" },\n    { \"record_id\": \"user_003\", \"first_name\": \"John\", \"last_name\": \"Smith\", \"emails\": [\"[email protected]\"] }\n  ],\n  \"return_fields\": [\"full_name\", \"personal_emails\", \"phones\", \"work_experience\"]\n}\n```\n\nUse `return_fields` to limit response size. Use `match_condition_fields` (e.g., `[\"emails\", \"phone\"]`) to only return matches that have specific data.\n\n---\n\n## POST /api/minerva/validate-emails\nCheck if email addresses exist in the Minerva database. Returns validation status and last-seen timestamp. Use before resolve/enrich to pre-screen lists.\nPrice: $0.01 per request\n\n```json\n{\n  \"records\": [\"[email protected]\", \"[email protected]\"]\n}\n```\n\n---\n\n# Common Features\n\n## Field Filtering\nMost endpoints support an `excludeFields` parameter to reduce response size by omitting specific fields. Pass an array of field paths to exclude; nested paths use a colon (`:`) separator, e.g. `[\"email\", \"organization:technologies\"]`. Google Maps endpoints default to excluding \"photos\" - pass an empty array to include them.\n\n## Pagination\n- FullEnrich **company-search**: use `search_after` cursor from `metadata` — do **not** use `page` (silently ignored on cache hits). FullEnrich **people-search**: use `limit`, `offset`, and `search_after` for deep pages.\n- Google Maps search endpoints support pagination via `pageToken` (returned as `nextPageToken` in responses). **Every page request must repeat the full original body including `textQuery`.** `pageToken` is only valid for the search that produced it — never reuse across different queries.\n- Exa search supports `numResults` up to 100.\n\n## Error Handling\nAll endpoints return standard HTTP status codes. Payment-required responses (402) include x402/MPP payment instructions in headers. On server errors (5xx), payments are not settled.\n\n---\n\n# Pricing Summary\n\n| Endpoint | Price |\n|----------|-------|\n| Google Maps Text Search (Full) | $0.08 |\n| Google Maps Text Search (Partial) | $0.02 |\n| Google Maps Nearby Search (Full) | $0.08 |\n| Google Maps Nearby Search (Partial) | $0.02 |\n| Google Maps Place Details (Full) | $0.05 |\n| Google Maps Place Details (Partial) | $0.02 |\n| Google Solar Building Insights | $0.02 |\n| Google Solar Data Layers | $0.08 |\n| Google Aerial View Lookup Video | $0.01 |\n| Google Aerial View Render Video | $0.01 |\n| FullEnrich Company Search | $0.05 |\n| FullEnrich People Search | $0.05 |\n| CompanyEnrich Org Enrich | $0.06 |\n| PDL People Enrich | $0.28 |\n| Exa Search | $0.01 |\n| Exa Find Similar | $0.01 |\n| Exa Contents | $0.002 |\n| Exa Answer | $0.01 |\n| Firecrawl Scrape | $0.0126 |\n| Firecrawl Search | $0.0252 |\n| Clado Contacts Enrich | $0.20 |\n| Serper News | $0.04 |\n| Serper Shopping | $0.04 |\n| Serper Images | $0.04 |\n| Reddit Search | $0.02 |\n| Reddit Post Comments | $0.02 |\n| Whitepages Person Search | $0.22 |\n| Whitepages Property Search | $0.22 |\n| Hunter Email Verifier (start) | $0.03 |\n| Hunter Email Verifier Jobs (poll) | Free (SIWX) |\n| Minerva Resolve | $0.02 |\n| Minerva Enrich | $0.05 |\n| Minerva Validate Emails | $0.01 |\n| Cloudflare Crawl (start) | $0.10 |\n| Cloudflare Jobs (poll) | Free (SIWX) |\n","guidance":"# StableEnrich API Reference\n## Authentication\n\nAll endpoints require micropayment. Include payment headers as per the HTTP 402 specification. Payments are processed on Base mainnet (eip155:8453), Solana, or Tempo.\n\n## Base URL\n\nhttps://stableenrich.dev\n\nAll endpoints are relative to this base URL.\n\n## Agent Workflow (Progressive)\n\n1. Discover candidate endpoints with `mcp__agentcash__discover_api_endpoints(\"https://stableenrich.dev\")`.\n2. If discovery reports `guidanceAvailable=true` but guidance is omitted, only re-run with `include_guidance=true` when domain-level methodology is needed.\n3. For selected POST/PUT/PATCH endpoints, call `mcp__agentcash__check_endpoint_schema` before first fetch.\n4. Execute with `mcp__agentcash__fetch`.\n\nIf no endpoint matches the user task, stop this origin flow and switch to another origin.\n\n## Schema Discovery\n\nAll endpoints support schema discovery via the `check_endpoint_schema` tool. Use it on the selected endpoint to confirm request schema and pricing before execution.\n\n## Web Scraping\n\nFor web scraping tasks, always start with **Firecrawl `/api/firecrawl/scrape`** ($0.0126/request). It provides comprehensive page content with clean markdown formatting.\n\nIf you need to scrape many URLs and cost is a concern, consider **Exa `/api/exa/contents`** ($0.002/request) as a cheaper alternative for bulk processing.\n\n---\n\n# Research Methodology (Fan-out / Population Tasks)\n\nUse this playbook for ambiguous, broad, or \"find many candidates\" requests (e.g., \"junior hedge fund carry-trade people who might start a company\"):\n\n1. **Detect fan-out**: If the request implies a population or list-building task, avoid single-search answers. Plan for *many* queries and a large candidate pool.\n2. **Clarify constraints**: Restate the target, must-haves, nice-to-haves, geography, seniority, timeframe, and desired output size. If unclear, make explicit assumptions and proceed.\n3. **Broad-to-narrow pipeline**:\n   - **Seed**: Use multiple discovery sources to build an initial pool (Exa `/api/exa/search` with `category: \"people\"` for people discovery, Firecrawl for web lists, Google Maps for local orgs, FullEnrich company-search for company lists).\n   - **Expand**: Generate query variants (synonyms, titles, strategies, regions) and paginate until you reach a healthy pool (aim 50–100 candidates).\n   - **Enrich**: Resolve LinkedIn URLs first (Exa `/api/exa/search` with `category: \"people\"` or FullEnrich people-search), then PDL `/api/pdl/people-enrich` by `profile` — do not default to name+domain. Use Minerva enrich for LinkedIn/demographic data or Clado contacts-enrich for email/phone when PDL is insufficient; dedupe by name + company + profile URL.\n   - **Filter**: Apply the must-haves; keep 30–50 high-confidence matches.\n4. **Tool choreography**: Use **mcp__agentcash__fetch** for all paid endpoints. Verify company domains with `/api/companyenrich/org-enrich` (when you have a domain), `/api/companyenrich/properties-enrich` (when you only have name or social URLs), or `/api/fullenrich/company-search` before large people searches to avoid wasted calls.\n5. **Evidence and transparency**: Track sources per candidate; note uncertainty; surface how the list was constructed and where gaps remain.\n\n---\n\n# Google Maps API\n\n## POST /api/google-maps/text-search/full\nSearch for places using a text query with full field details (includes ratings, reviews, contact info, and atmosphere data).\nPrice: $0.08 per request\n\nExample:\n```json\n{\n  \"textQuery\": \"coffee shops in San Francisco\",\n  \"maxResultCount\": 5\n}\n```\n\n---\n\n## POST /api/google-maps/text-search/partial\nSearch for places using a text query with partial field details (basic info only, lower cost).\nPrice: $0.02 per request. Same request body as /text-search/full.\n\n---\n\n## POST /api/google-maps/nearby-search/full\nSearch for places near a geographic location with full details.\nPrice: $0.08 per request\n\nExample:\n```json\n{\n  \"locationRestriction\": {\n    \"circle\": {\n      \"center\": { \"latitude\": 37.7749, \"longitude\": -122.4194 },\n      \"radius\": 1000\n    }\n  },\n  \"maxResultCount\": 5\n}\n```\n\n---\n\n## POST /api/google-maps/nearby-search/partial\nSearch for places near a geographic location with partial details.\nPrice: $0.02 per request. Same request body as /nearby-search/full.\n\n---\n\n## GET /api/google-maps/place-details/full\nGet full details for a specific place by ID.\nPrice: $0.05 per request\n\nExample: GET /api/google-maps/place-details/full?placeId=ChIJN1t_tDeuEmsRUsoyG83frY4\n\n---\n\n## GET /api/google-maps/place-details/partial\nGet partial details for a specific place by ID.\nPrice: $0.02 per request. Same query parameters as /place-details/full.\n\n---\n\n## GET /api/google-maps/solar/building-insights\nGoogle Solar API — closest building insights for a lat/lng. Use this as a cheap probe to confirm Solar coverage for an address and to read the imagery capture date (`imageryDate`) before fetching the full data layers.\nPrice: $0.02 per request\n\nQuery parameters:\n- `latitude` (required) — building latitude\n- `longitude` (required) — building longitude\n- `requiredQuality` (optional, default `HIGH`) — `LOW` | `MEDIUM` | `HIGH`\n\nExample:\nGET /api/google-maps/solar/building-insights?latitude=37.4220&longitude=-122.0841&requiredQuality=LOW\n\nReturns roof segments, sunshine hours, panel capacity estimates, plus `imageryDate` and `imageryProcessedDate`.\n\n---\n\n## GET /api/google-maps/solar/data-layers\nGoogle Solar API — aerial GeoTIFF data layers for a building. Returns signed URLs for the actual aerial RGB photograph (`rgbUrl`), digital surface model (`dsmUrl`), shade/flux maps, and a building mask, along with `imageryDate` (the capture date of the photo).\nPrice: $0.08 per request\n\nQuery parameters:\n- `latitude` (required)\n- `longitude` (required)\n- `radiusMeters` (optional, default `50`, max `175`) — radius around the lat/lng to include\n- `view` (optional, default `FULL_LAYERS`) — `DSM_LAYER` | `IMAGERY_LAYERS` | `IMAGERY_AND_ANNUAL_FLUX_LAYERS` | `IMAGERY_AND_ALL_FLUX_LAYERS` | `FULL_LAYERS`\n- `requiredQuality` (optional, default `HIGH`) — `LOW` | `MEDIUM` | `HIGH`\n- `pixelSizeMeters` (optional, default `0.25`) — must be one of `0.1`, `0.25`, `0.5`, `1.0`\n- `exactQualityRequired` (optional, default `false`)\n\nExample:\nGET /api/google-maps/solar/data-layers?latitude=37.4220&longitude=-122.0841&radiusMeters=50&view=IMAGERY_LAYERS\n\nThe returned URLs are signed and expire — fetch the GeoTIFFs promptly. To convert a GeoTIFF to PNG/JPEG use `gdal_translate` or any image library that reads TIFF.\n\n---\n\n## GET /api/google-maps/aerial-view/lookup-video\nGoogle Aerial View API — look up a previously rendered 3D flyover video for an address (or by `videoId`). Returns video URIs (landscape, portrait, thumbnail) and metadata. Returns `state: PROCESSING` if a video has been requested but not finished rendering.\nPrice: $0.01 per request\n\nQuery parameters (provide one):\n- `address` — street address to look up\n- `videoId` — existing video ID\n\nExample:\nGET /api/google-maps/aerial-view/lookup-video?address=1600+Amphitheatre+Parkway+Mountain+View+CA\n\n---\n\n## POST /api/google-maps/aerial-view/render-video\nGoogle Aerial View API — request rendering of a new flyover video for an address. The render is asynchronous; poll `/api/google-maps/aerial-view/lookup-video` until `state: ACTIVE` to retrieve the finished URIs.\nPrice: $0.01 per request\n\nExample:\n```json\n{\n  \"address\": \"1600 Amphitheatre Parkway, Mountain View, CA\"\n}\n```\n\n---\n\n# B2B Data (FullEnrich, CompanyEnrich, PDL)\n\n## Organization lookup workflow\n\nBefore people searches filtered by company, verify the target domain:\n\n1. Call `/api/fullenrich/company-search` with the company name (use `exact_match: true` when the name is known precisely — then verify `domain` in results; see exact_match notes below), or\n2. Call `/api/companyenrich/org-enrich` with the domain to confirm the company profile.\n3. Use the verified domain in `/api/fullenrich/people-search` via `current_company_domains`.\n\nFullEnrich returns unobfuscated names in search (~80%). Email is **not** in search results — use `/api/pdl/people-enrich` for full profile, emails, and phone ($0.28/match, free on miss). Prefer `email` input when you already have a work address.\n\nIf B2B endpoints do not return needed data, fall back to Minerva (`/api/minerva/resolve` + `/api/minerva/enrich`) or Clado (`/api/clado/contacts-enrich`).\n\n## POST /api/fullenrich/company-search\nSearch for companies by filters.\nPrice: **$0.05 per query** (flat). FullEnrich upstream is **0.25 credits per result returned** ([credit docs](https://docs.fullenrich.com/api/v2/general/credit)) — ~$0.04 upstream at default `limit=3` on Pro-tier credits. Default `limit` is 3.\n\n**Required filters:** Provide at least one of `names`, `industries`, or `headquarters_locations`. `limit`/`page` alone returns **400 before payment**.\n\n**Filter shape:** Each filter array entry must be `{ \"value\": \"...\" }` (plain strings and `{ \"name\": \"...\" }` are coerced). `headcount_min`/`headcount_max` flat fields are coerced to `headcounts: [{ min, max }]`.\n\n**`industries` values:** Must be exact FullEnrich enum strings — free-text like `\"Artificial Intelligence\"` returns **400**. There is no AI-specific industry; OpenAI, Anthropic, and similar companies index under `\"Research Services\"`, not a dedicated AI label. Common values:\n\n- `\"Software Development\"`\n- `\"Research Services\"`\n- `\"Financial Services\"`\n- `\"Technology, Information and Internet\"`\n- `\"Venture Capital and Private Equity Principals\"`\n- `\"Medical Equipment Manufacturing\"`\n- `\"Information Technology & Services\"`\n\nFull catalog (490 values): [Company Industry enum](https://docs.fullenrich.com/api/v2/general/enums#company-industry).\n\n**`exact_match`:** `exact_match: true` matches on the name string only — it does **not** resolve brand intent and does **not** guarantee a single hit. Unrelated same-name companies still appear, often ranked first.\n\nFor common-word or ambiguous brand names, filter results by `domain` or `headcount` after retrieval — do not assume rank #1 is correct:\n- `\"ElevenLabs\"` + `exact_match` → elevenlabs.com.au (health food) can rank above elevenlabs.io (AI)\n- `\"Runway\"` + `exact_match` → runway.com (FP&A finance) can rank above runwayml.com (AI video)\n\n**Legal entity vs brand:** Search by legal entity name, not product or brand name — they often differ (e.g. Cursor AI appears under `\"Anysphere\"`, not `\"Cursor\"`).\n\n**Pagination:** `page` may be **silently ignored on cached responses** — `page: 2` can return identical results to `page: 0`. **Always use `search_after`** for reliable pagination: pass the cursor token from response `metadata.search_after` on the next request.\n\nExample (first page):\n```json\n{\n  \"limit\": 3,\n  \"industries\": [{ \"value\": \"Research Services\" }],\n  \"headquarters_locations\": [{ \"value\": \"United States\" }]\n}\n```\n\nExample (next page — use cursor from prior response `metadata.search_after`):\n```json\n{\n  \"limit\": 3,\n  \"search_after\": \"<token from metadata.search_after>\",\n  \"industries\": [{ \"value\": \"Research Services\" }],\n  \"headquarters_locations\": [{ \"value\": \"United States\" }]\n}\n```\n\nConfirmed behavior: `page: 2` repeated page-0 results (Salesforce, GitHub, Airbnb); `search_after` returned the correct next page (Docker, Splunk, Zendesk).\n\n---\n\n## POST /api/fullenrich/people-search\nSearch for people/contacts matching criteria.\nPrice: **$0.05 per query** (flat). Default `limit` is 3. Upstream bills 0.25 FullEnrich credits per person returned.\n\n**`limit`/`offset` alone always returns 400** — include at least one search filter (`current_company_domains`, `current_position_seniority_level`, `person_locations`, etc.).\n\n**Filter shape:** Each filter array accepts plain strings **or** `{\"value\":\"...\"}` objects. Both are valid:\n```json\n{ \"current_company_domains\": [\"stripe.com\"], \"current_position_seniority_level\": [\"VP\"] }\n{ \"current_company_domains\": [{ \"value\": \"stripe.com\" }], \"current_position_seniority_level\": [{ \"value\": \"VP\" }] }\n```\nDo **not** send `{\"limit\":3,\"offset\":0}` with no filters. Call `check_endpoint_schema` before first use.\n\nExample:\n```json\n{\n  \"limit\": 3,\n  \"current_company_domains\": [{ \"value\": \"stripe.com\" }],\n  \"current_position_seniority_level\": [{ \"value\": \"VP\" }]\n}\n```\n\n**Seniority vs title:** Use `current_position_seniority_level` for population queries (e.g. all VPs at a company). Use `current_position_titles` only when you need an exact title match — it returns far fewer results.\n\n**Seniority enum (request filters):** Use exact FullEnrich filter values from [Seniority enum](https://docs.fullenrich.com/api/v2/general/enums#seniority) — e.g. `C-level`, `VP`, `Head`, `Founder`. Do **not** use Apollo/other-provider values like `c_suite`; FullEnrich returns **400**. Response `employment.current.seniority` labels are output-only — do not copy them into filter values.\n\n**Zero-result recovery:** Combining **3+ filters** frequently returns zero results. If `people` is empty, remove the most restrictive filter first — `current_position_titles` is usually the cause. Start with **domain + seniority**, then add title only if needed.\n\n**Filter logic:** Filters **AND across categories, OR within a category** ([filtering logic](https://docs.fullenrich.com/api/v2/general/filtering-logic-explained)). Prefer seniority enum values (`C-level`, `VP`, `Head`, `Founder`, etc.) over exact titles. Full list: [Seniority enum](https://docs.fullenrich.com/api/v2/general/enums#seniority). Avoid `\"Director\"` in domain-scoped queries — too common; domain weighting collapses. Use `VP`, `Head`, or `Founder` instead. `person_locations` without `current_company_domains` is very broad — pair location with a company domain when possible.\n\n**Domain coverage:** People search coverage varies by company domain. Some domains (e.g. `figma.com`) return zero results regardless of filters. If a domain-scoped query is empty with minimal filters, the domain may not be indexed.\n\n**`current_company_days_since_last_job_change`:** Days since the person last changed jobs in FullEnrich's graph — **not necessarily** the start date of their current role. Larger ranges (500–1000) are more reliable than tight windows. Compounds aggressively with other filters — use with **one or two other filters max**.\n\nExample (recency + domain, no title):\n```json\n{\n  \"limit\": 3,\n  \"current_company_domains\": [{ \"value\": \"stripe.com\" }],\n  \"current_company_days_since_last_job_change\": [{ \"min\": 500, \"max\": 1000 }]\n}\n```\n\nExample (seniority instead of title):\n```json\n{\n  \"limit\": 3,\n  \"current_company_domains\": [{ \"value\": \"stripe.com\" }],\n  \"current_position_seniority_level\": [{ \"value\": \"C-level\" }]\n}\n```\n\n---\n\n## POST /api/companyenrich/org-enrich\nEnrich a company profile by domain.\nPrice: $0.06 per request\n\n`employees` and `revenue` are **range strings** (e.g. `\"5K-10K\"`, `\"over-1b\"`) — do not numeric-compare them.\n\n**Known issue — `openai.com`:** Resolves to an unrelated third-party ChatGPT fan page (~18 employees, no real funding). There is currently no workaround — the correct OpenAI record is not accessible via this endpoint.\n\n**Domain resolution:** CompanyEnrich may return a different canonical `domain` than your input. Always verify the returned `domain` matches your intent before downstream people searches.\n\n**Domains not indexed:** `x.com` (Twitter/X) returns **404** — the post-rebrand domain is not in the index. Use `twitter.com` instead.\n\n**Funding data:** `total_funding` is independently sourced and may not reflect recent rounds. Prefer the `funding` array for the most current round data — it updates more frequently than the scalar. Funding reflects VC/PE rounds only; **M&A acquisitions are not included** (e.g. GitHub's Microsoft acquisition does not appear).\n\n**`expand: \"workforce\"`:** Only useful if the domain resolves correctly. Before using workforce expansion, verify the returned `domain` matches your input — if CompanyEnrich canonicalized to a different domain, workforce data reflects that company, not yours.\n\nExample:\n```json\n{\n  \"domain\": \"stripe.com\"\n}\n```\n\n---\n\n## POST /api/companyenrich/properties-enrich\nEnrich a company profile by name or social URL when you do not have a domain.\nPrice: $0.06 per request\n\nPrefer `/api/companyenrich/org-enrich` when you have a domain — domain lookups are faster and more reliable. Use this endpoint when you only have a company name, LinkedIn URL/ID, or other social profile URL.\n\nUpstream uses **best match** disambiguation — always verify the returned `domain` and `name` match your intent before downstream people searches.\n\n`employees` and `revenue` are **range strings** (e.g. `\"5K-10K\"`, `\"over-1b\"`) — do not numeric-compare them.\n\n**`expand: \"workforce\"`:** Only useful if the resolved company matches your intent. Verify the returned `domain` before trusting workforce data.\n\nExample (LinkedIn URL):\n```json\n{\n  \"linkedinUrl\": \"https://www.linkedin.com/company/stripe\"\n}\n```\n\nExample (company name):\n```json\n{\n  \"name\": \"Stripe\"\n}\n```\n\n---\n\n## POST /api/pdl/people-enrich\nEnrich a person with full career history, emails, and phone from People Data Labs.\nPrice: **$0.28 per match — free when no record is found (HTTP 200, data: null)**\n\nSupported inputs (one group required — ranked by reliability):\n1. `email` — **highest reliability**; when you have a known work email, use it as the sole input (often likelihood 9)\n2. `profile` — LinkedIn URL; good hit rate but not better than email when email is known\n3. `first_name` + `last_name` + `company_name` or `company_domain` — fallback; similar coverage to profile, not a substitute when the person is absent from PDL\n\n**Common 400:** `{ \"first_name\": \"...\", \"last_name\": \"...\" }` alone is invalid — add `email`, `profile`, or name plus `company_name`/`company_domain`.\n\nExample (email — preferred when available):\n```json\n{\n  \"email\": \"patrick@stripe.com\"\n}\n```\n\nExample (LinkedIn):\n```json\n{\n  \"profile\": \"https://www.linkedin.com/in/patrickcollison\"\n}\n```\n\nExample (name + domain — fallback):\n```json\n{\n  \"first_name\": \"Patrick\",\n  \"last_name\": \"Collison\",\n  \"company_domain\": \"stripe.com\"\n}\n```\n\n**No match:** Returns **HTTP 200** with `{ \"status\": 404, \"likelihood\": 0, \"data\": null }` when the person is not in PDL — not an HTTP error, and **not billed**. Switching from name+domain to LinkedIn URL (or vice versa) will **not** help when `data` is null.\n\n**Coverage:** Strong for startup founders and US tech professionals. Some well-known executives (e.g. Dario Amodei, Tobi Lutke, Andrej Karpathy) are absent entirely — no lookup method will find them.\n\n**`is_primary` staleness:** `is_primary: true` marks the most recently updated job in PDL's graph, not necessarily the person's current primary employer. Board seats and advisory roles updated recently rank above older full-time roles. Always verify against the full `experience` array when the top-level `job_title` looks wrong.\n\n**PII:** Responses for public figures may include personal emails, phone numbers, and home addresses. Handle output accordingly.\n\n---\n\n# Exa API (Web Search & Research)\n\n## POST /api/exa/search\nSemantic web search for finding relevant pages.\nPrice: $0.01 per request\n\nSupports an optional `category` parameter to filter results by content type: `\"company\"`, `\"people\"`, `\"research paper\"`, `\"news\"`, `\"pdf\"`, `\"personal site\"`, `\"financial report\"`. Use `category` for verticals — `type` is search **mode** (`auto`, `fast`, `deep`, ...), not a category. Sending `\"type\": \"news\"` is wrong; use `\"category\": \"news\"`.\n\n**People/Profile Search Tip**: Prefer `category: \"people\"` for high-level people or profile searches. This is a fast, cheap way to find people before enriching with FullEnrich or Clado.\n\n**Domain filters:** `includeDomains` and `excludeDomains` must be **full hostnames** (e.g. `\"stanford.edu\"`, `\"github.com\"`) — bare TLDs like `\"edu\"` return errors. Do not filter to `reddit.com`, `twitter.com`, `x.com`, or `instagram.com` — Exa does not support those via domain filters; use https://stablesocial.dev for Instagram/social data, dedicated APIs for Reddit/X, or broad web search without those domains.\n\n**X/Twitter Tip**: Exa no longer supports `category: \"tweet\"`. Do not use Exa for complete timelines or reliable tweet retrieval; use a dedicated X/Twitter API for that. If Exa is used for broad web discovery, post-filter returned URLs to `x.com` or `twitter.com`.\n\nExample:\n```json\n{\n  \"query\": \"best practices for building AI agents\",\n  \"numResults\": 5\n}\n```\n\nLinkedIn profile search example:\n```json\n{\n  \"query\": \"hedge fund portfolio manager New York\",\n  \"category\": \"people\",\n  \"numResults\": 10\n}\n```\n\n---\n\n## POST /api/exa/find-similar\nFind pages similar to a given URL.\nPrice: $0.01 per request\n\nExample:\n```json\n{\n  \"url\": \"https://openai.com\",\n  \"numResults\": 5\n}\n```\n\n---\n\n## POST /api/exa/contents\nExtract content from specific URLs.\nPrice: $0.002 per request\n\nExample:\n```json\n{\n  \"urls\": [\"https://example.com\"]\n}\n```\n\n---\n\n## POST /api/exa/answer\nGet an AI-generated answer to a question based on web search.\nPrice: $0.01 per request\n\nExample:\n```json\n{\n  \"query\": \"What is the capital of France?\"\n}\n```\n\n---\n\n# Firecrawl API (Web Scraping)\n\n## POST /api/firecrawl/scrape\nScrape and extract content from a URL.\nPrice: $0.0126 per request\n\nExample:\n```json\n{\n  \"url\": \"https://example.com\"\n}\n```\n\n---\n\n## POST /api/firecrawl/search\nSearch the web and get scraped results.\nPrice: $0.0252 per request\n\n**`limit` max is 10** — requests with `limit > 10` return 400 before payment.\n\nExample:\n```json\n{\n  \"query\": \"best coffee shops\",\n  \"limit\": 5\n}\n```\n\n---\n\n# Clado API (Contact Enrichment)\n\nNote: Clado is useful as a fallback when PDL does not return personal emails or phone numbers. For LinkedIn profile data (experience, education, skills), use Minerva `/api/minerva/enrich` instead.\n\n## POST /api/clado/contacts-enrich\nEnrich contact information from LinkedIn URL, email, or phone number. Must provide exactly one of: linkedin_url, email, or phone.\nPrice: $0.20 per request\n\nExample:\n```json\n{\n  \"linkedin_url\": \"https://www.linkedin.com/in/satyanadella\"\n}\n```\n\n---\n\n# Serper API (Google Search)\n\n## POST /api/serper/news\nGoogle News search via Serper.dev.\nPrice: $0.04 per request\n\nExample:\n```json\n{\n  \"q\": \"OpenAI funding\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/shopping\nGoogle Shopping search via Serper.dev.\nPrice: $0.04 per request\n\nExample:\n```json\n{\n  \"q\": \"wireless earbuds\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/images\nGoogle Images search via Serper.dev. Generic public image discovery — products, places, screenshots, anything visual. For headshots/profile photos prefer `/api/serper/people-image-search`, which is tuned for that use case.\nPrice: $0.04 per request\n\nExample:\n```json\n{\n  \"q\": \"eiffel tower at night\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/people-image-search\nGoogle Images search tuned for finding a specific person — headshot/profile-photo candidates when LinkedIn/profile-photo APIs return null or a default avatar. Same backend as `/api/serper/images` but with calling guidance below.\nPrice: $0.04 per request\n\nHeadshot search guidance:\n- Resolve identity before ranking images when the person is ambiguous. Use FullEnrich, Exa LinkedIn profile search, or Minerva to confirm the profile slug, company, and title; do not rely on name alone.\n- LinkedIn profile photos may be limited to connections, a broader network, or LinkedIn members only. Only public photos are reliably indexable by Google. If a scraper returns `default_avatar: true` or a placeholder, use public non-LinkedIn sources tied to the confirmed identity.\n- If the first image search fails, research the confirmed profile for other disambiguating terms, such as school, city, past employers, projects, or personal sites, then retry Google Images with those terms.\n- Query syntax matters. Start with exact-name and company terms, for example: `\"Ryan Sproule\" \"Merit Systems\" LinkedIn headshot` or `\"Mason Hall\" \"Merit Systems\" profile photo`.\n- Use `num: 5-10`, `gl: \"us\"`, and `hl: \"en\"` for US business profiles unless the user gives another locale.\n- Prefer candidates whose result title/source page matches the person and company, from credible sources such as LinkedIn, the person's own website, company/team pages, RootData, Crunchbase, or news profiles.\n- Prefer square-ish, high-resolution human headshots. Reject obvious logos, default avatars, LinkedIn `videocover`, `feedshare`, cover/banner/background images, and images where the result title points to another person.\n- If no single result is clearly correct, return the top candidates with source URLs and explain the uncertainty.\n\nExample:\n```json\n{\n  \"q\": \"\\\"Ryan Sproule\\\" \\\"Merit Systems\\\" LinkedIn headshot\",\n  \"num\": 10,\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n## POST /api/serper/lens\nGoogle Lens reverse image search via Serper.dev. Pass a public image URL and get visually similar pages, products, and sources.\nPrice: $0.20 per request\n\nExample:\n```json\n{\n  \"url\": \"https://example.com/photo.jpg\",\n  \"gl\": \"us\",\n  \"hl\": \"en\"\n}\n```\n\n---\n\n# Whitepages API (People & Property Search)\n\n## POST /api/whitepages/person-search\nSearch for people by name, phone number, or address.\nPrice: $0.22 per request\n\nExample:\n```json\n{\n  \"first_name\": \"John\",\n  \"last_name\": \"Smith\",\n  \"state_code\": \"CA\"\n}\n```\n\n---\n\n## POST /api/whitepages/property-search\nGet property ownership, resident, and property details by address.\nPrice: $0.22 per request\n\n**Empty result is not an error:** when Whitepages has no indexed record for a valid address, the response is `200` with `{ \"result\": null }` — not 404. Commercial or newer addresses are often unindexed.\n\n**Field names:** Use `street` (aliases accepted: `address`, `street_line`, `street_line_1`, `street_address`), `state_code` (not `state`), and `zipcode` (aliases: `zip`, `zip_code`, `postal_code`). `street` must be a real address — prompts or placeholders like \"Please provide a detailed analysis\" are rejected before payment.\n\nExample:\n```json\n{\n  \"street\": \"123 Main St\",\n  \"city\": \"San Francisco\",\n  \"state_code\": \"CA\"\n}\n```\n\nWRONG (legacy names — use aliases above or canonical names):\n```json\n{\n  \"street\": \"123 Main St\",\n  \"city\": \"San Francisco\",\n  \"state\": \"CA\"\n}\n```\n\n---\n\n# Reddit API\n\nIMPORTANT - Two-step pattern for Reddit research:\n1. Use /api/reddit/search to find relevant posts. Responses are lightweight — selftext is truncated to 500 chars.\n   Posts with `selftextTruncated: true` have more content available.\n2. For any post where you need the full text or comments, call /api/reddit/post-comments with the post's permalink.\n   This returns the complete untruncated selftext plus all comments.\n\nThis pattern keeps search results small (< 2KB for 10 posts) while letting you drill into specific posts when needed.\n\n## POST /api/reddit/search\nSearch Reddit posts by query. Returns truncated previews for efficient browsing.\nPrice: $0.02 per request\n\nExample:\n```json\n{\n  \"query\": \"AI agents\",\n  \"sort\": \"top\",\n  \"timeframe\": \"week\",\n  \"maxResults\": 10\n}\n```\n\n---\n\n## POST /api/reddit/post-comments\nGet a Reddit post's full details and comments. Use this to get untruncated selftext and discussion for posts found via search.\nPrice: $0.02 per request\n\nExample:\n```json\n{\n  \"url\": \"https://www.reddit.com/r/AskReddit/comments/abc123/example_post\"\n}\n```\n\n---\n\n# Hunter API (Email Verification)\n\nIMPORTANT - Async pattern for Hunter email verification:\nMost verifications return immediately. If Hunter is still processing, the paid POST returns HTTP 202 with a jobId and pollUrl. Do not repeat the paid POST for that email. Poll the free SIWX endpoint with the same wallet until status is \"completed\" or \"failed\".\n\n## POST /api/hunter/email-verifier\nVerify email deliverability via Hunter.io. Returns either the final verification result or a pending job response.\nPrice: $0.03 per request\n\nExample:\n```json\n{\n  \"email\": \"test@stripe.com\"\n}\n```\n\nPending response:\n```json\n{\n  \"jobId\": \"3c16f7d3-8782-4a47-a033-b12bb0d7a16d\",\n  \"status\": \"pending\",\n  \"pollUrl\": \"https://stableenrich.dev/api/hunter/email-verifier/jobs/3c16f7d3-8782-4a47-a033-b12bb0d7a16d\",\n  \"retryAfterSeconds\": 5\n}\n```\n\n## GET /api/hunter/email-verifier/jobs/{jobId}\nPoll a pending Hunter verification job. This endpoint is free but requires SIWX authentication from the same wallet that paid for the POST.\nPrice: Free (SIWX)\n\nPoll every `retryAfterSeconds` while status is \"pending\". When status is \"completed\", read the final verification object from `result`.\n\n---\n\n# Cloudflare Browser Rendering API (Website Crawling)\n\nIMPORTANT - Two-step async pattern for Cloudflare crawl:\nThe crawl endpoint is long-running (up to ~2 minutes). It uses an async pattern:\n1. POST /api/cloudflare/crawl — pays and starts the crawl, returns a signed JWT token (202 response)\n2. GET /api/cloudflare/jobs?token=<jwt> — SIWX-authenticated (free), poll until job is complete\n\nPoll every 3–5 seconds. The job typically completes in 30–120 seconds depending on site size and render mode.\n\n## POST /api/cloudflare/crawl\nStart a website crawl. Returns a JWT token to poll for results.\nPrice: $0.10 per crawl job\n\nParameters:\n- `url` (string, required) — starting URL to crawl\n- `limit` (number, default 10, max 25) — maximum pages to crawl\n- `depth` (number, default 1, max 3) — maximum link depth from starting URL\n- `formats` (array, default [\"markdown\"]) — response formats: \"html\", \"markdown\", \"json\"\n- `render` (boolean, default false) — execute JavaScript when crawling (slower, costs more)\n- `source` (string, optional) — URL discovery: \"all\", \"sitemaps\", or \"links\"\n- `options` (object, optional) — crawl scope:\n  - `includeExternalLinks` (boolean) — follow links to external domains\n  - `includeSubdomains` (boolean) — follow links to subdomains\n  - `includePatterns` (string[]) — wildcard patterns for URLs to include\n  - `excludePatterns` (string[]) — wildcard patterns for URLs to exclude (higher priority)\n\nExample:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"limit\": 5,\n  \"depth\": 1,\n  \"formats\": [\"markdown\"]\n}\n```\n\nResponse (202):\n```json\n{ \"token\": \"<signed-jwt>\" }\n```\n\n---\n\n## GET /api/cloudflare/jobs?token=<jwt>\nPoll crawl job status. Requires SIWX wallet authentication (same wallet that paid). Free — no x402/MPP payment.\n\nUse `mcp__agentcash__fetch_with_auth` (not `fetch`) for this endpoint.\n\nResponse shape (Cloudflare's result returned directly):\n```json\n{\n  \"id\": \"<jobId>\",\n  \"status\": \"<cf-status-string>\",\n  \"records\": [\n    {\n      \"url\": \"https://example.com/page\",\n      \"status\": \"completed\",\n      \"markdown\": \"...\",\n      \"metadata\": { \"status\": 200, \"url\": \"...\", \"title\": \"...\" }\n    }\n  ],\n  \"total\": 10,\n  \"finished\": 8,\n  \"skipped\": 2,\n  \"browserSecondsUsed\": 45.2,\n  \"cursor\": \"...\"\n}\n```\n\nPage `status` values: `queued` | `completed` | `errored` | `disallowed` | `skipped` | `cancelled`\n\nTo determine completion, check `result.finished + result.skipped >= result.total` or poll until no pages remain `queued`.\n\nFull polling workflow:\n```\n1. token = fetch POST /api/cloudflare/crawl  →  response.token\n2. loop:\n     result = fetch_with_auth GET /api/cloudflare/jobs?token={token}\n     if result.finished + result.skipped >= result.total → done, use result.records\n     else → wait 3-5s, repeat\n```\n\n---\n\n# Minerva API (Person Identity & Enrichment)\n\nMinerva is a consumer identity graph. Use it to resolve person identities to unique Minerva PIDs, enrich profiles with demographics/work/contact data, validate emails, and infer country from contact signals.\n\n**Recommended workflow:**\n1. Use `/api/minerva/resolve` to match a person and get their Minerva PID + LinkedIn URL\n2. Use `/api/minerva/enrich` with the returned PID for instant, comprehensive enrichment\n3. Use `/api/minerva/validate-emails` to pre-screen emails before resolve/enrich\n\n**Minerva vs B2B providers:** Minerva excels at consumer profiles (demographics, income/wealth estimates, address history, life events). FullEnrich/CompanyEnrich/PDL excel at B2B/professional data. Use Minerva when you need personal contact info, financial signals, or household data.\n\n## POST /api/minerva/resolve\nResolve person identity to a Minerva PID and LinkedIn URL. Supports fuzzy matching (name + contact info) and reverse lookup (email or phone only, no name required).\nPrice: $0.02 per request\n\nStandard fuzzy match example:\n```json\n{\n  \"records\": [\n    {\n      \"record_id\": \"user_001\",\n      \"first_name\": \"John\",\n      \"last_name\": \"Smith\",\n      \"emails\": [\"[email protected]\"]\n    }\n  ]\n}\n```\n\nReverse lookup (email only, no name needed):\n```json\n{\n  \"records\": [{ \"record_id\": \"user_002\", \"emails\": [\"[email protected]\"] }]\n}\n```\n\nUse `match_condition_fields: [\"linkedin_url\"]` to only return matches that have a LinkedIn profile.\n\n---\n\n## POST /api/minerva/enrich\nEnrich person records with demographics, work history, education, contact info (emails + phones), address history, financial signals (income/wealth range), relatives, and social profiles.\nPrice: $0.05 per request\n\nThree lookup modes — by Minerva PID (fastest), by LinkedIn URL, or by name/email/phone:\n```json\n{\n  \"records\": [\n    { \"record_id\": \"user_001\", \"minerva_pid\": \"p-a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6\" },\n    { \"record_id\": \"user_002\", \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\" },\n    { \"record_id\": \"user_003\", \"first_name\": \"John\", \"last_name\": \"Smith\", \"emails\": [\"[email protected]\"] }\n  ],\n  \"return_fields\": [\"full_name\", \"personal_emails\", \"phones\", \"work_experience\"]\n}\n```\n\nUse `return_fields` to limit response size. Use `match_condition_fields` (e.g., `[\"emails\", \"phone\"]`) to only return matches that have specific data.\n\n---\n\n## POST /api/minerva/validate-emails\nCheck if email addresses exist in the Minerva database. Returns validation status and last-seen timestamp. Use before resolve/enrich to pre-screen lists.\nPrice: $0.01 per request\n\n```json\n{\n  \"records\": [\"[email protected]\", \"[email protected]\"]\n}\n```\n\n---\n\n# Common Features\n\n## Field Filtering\nMost endpoints support an `excludeFields` parameter to reduce response size by omitting specific fields. Pass an array of field paths to exclude; nested paths use a colon (`:`) separator, e.g. `[\"email\", \"organization:technologies\"]`. Google Maps endpoints default to excluding \"photos\" - pass an empty array to include them.\n\n## Pagination\n- FullEnrich **company-search**: use `search_after` cursor from `metadata` — do **not** use `page` (silently ignored on cache hits). FullEnrich **people-search**: use `limit`, `offset`, and `search_after` for deep pages.\n- Google Maps search endpoints support pagination via `pageToken` (returned as `nextPageToken` in responses). **Every page request must repeat the full original body including `textQuery`.** `pageToken` is only valid for the search that produced it — never reuse across different queries.\n- Exa search supports `numResults` up to 100.\n\n## Error Handling\nAll endpoints return standard HTTP status codes. Payment-required responses (402) include x402/MPP payment instructions in headers. On server errors (5xx), payments are not settled.\n\n---\n\n# Pricing Summary\n\n| Endpoint | Price |\n|----------|-------|\n| Google Maps Text Search (Full) | $0.08 |\n| Google Maps Text Search (Partial) | $0.02 |\n| Google Maps Nearby Search (Full) | $0.08 |\n| Google Maps Nearby Search (Partial) | $0.02 |\n| Google Maps Place Details (Full) | $0.05 |\n| Google Maps Place Details (Partial) | $0.02 |\n| Google Solar Building Insights | $0.02 |\n| Google Solar Data Layers | $0.08 |\n| Google Aerial View Lookup Video | $0.01 |\n| Google Aerial View Render Video | $0.01 |\n| FullEnrich Company Search | $0.05 |\n| FullEnrich People Search | $0.05 |\n| CompanyEnrich Org Enrich | $0.06 |\n| PDL People Enrich | $0.28 |\n| Exa Search | $0.01 |\n| Exa Find Similar | $0.01 |\n| Exa Contents | $0.002 |\n| Exa Answer | $0.01 |\n| Firecrawl Scrape | $0.0126 |\n| Firecrawl Search | $0.0252 |\n| Clado Contacts Enrich | $0.20 |\n| Serper News | $0.04 |\n| Serper Shopping | $0.04 |\n| Serper Images | $0.04 |\n| Reddit Search | $0.02 |\n| Reddit Post Comments | $0.02 |\n| Whitepages Person Search | $0.22 |\n| Whitepages Property Search | $0.22 |\n| Hunter Email Verifier (start) | $0.03 |\n| Hunter Email Verifier Jobs (poll) | Free (SIWX) |\n| Minerva Resolve | $0.02 |\n| Minerva Enrich | $0.05 |\n| Minerva Validate Emails | $0.01 |\n| Cloudflare Crawl (start) | $0.10 |\n| Cloudflare Jobs (poll) | Free (SIWX) |\n","contact":{"name":"Merit Systems","url":"https://stableenrich.dev","email":"lucas@merit.systems"}},"servers":[{"url":"https://stableenrich.dev"}],"tags":[{"name":"Clado"},{"name":"Cloudflare"},{"name":"Companyenrich"},{"name":"Exa"},{"name":"Firecrawl"},{"name":"Fullenrich"},{"name":"Google Maps"},{"name":"Hunter"},{"name":"Minerva"},{"name":"Pdl"},{"name":"Reddit"},{"name":"Serper"},{"name":"Whitepages"}],"x-discovery":{"ownershipProofs":["0x0000000000000000000000008e6af8ed94e87b4402d0272c5d6b0d47f0483e7c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000124406f52fd0000000000000000000000002b4e26e1f32c7fbf076563ad49a86b69ae0182160000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000311d29fa0000000000000000000000000000000000000000000000000000000000000002bd71e7ae4046dbcd345631a04e70b360434e724d558d4dbce1a1235e0c5dbe8b7e673ff35925f52d6b485ac8fdd324d9e0ee0163e09e8c3f2b7ea44fc4f72745be445780eeddc4321ff957c7fb8ac80866d1f281f2bdac807ac00d38dc33e8403e21ca5d0d341cc94b8dcc9c79b36f691ce99d74cbf28511a1f3a3e14885eefd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001efc2614a03c63dd8f71e1d894e51b2bfe0e92bda90057cabac999faf7326518d37bb3db54c216f721045344f47892422bcb223d32b58878bc3589a80508fcd0d000000000000000000000000000000000000000000000000000000000000002506817f31b6ccc1234a424df1fff4840b8ed06f3671ea34bfbfabcb0b04a176ac1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000897b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a225148756e486d654632376730765150624a594f71436a726857543943585a655f3366506f7767674a642d77222c226f726967696e223a2268747470733a2f2f7465616d732e73706c6974732e6f7267222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492"]},"paths":{"/api/clado/contacts-enrich":{"post":{"operationId":"clado_contacts-enrich","summary":"Clado Contacts Enrichment - Enrich contact info from LinkedIn URL, email, or phone","tags":["Clado"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.200000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkedin_url":{"description":"LinkedIn profile URL to enrich","type":"string"},"email":{"description":"Email address to enrich","type":"string"},"phone":{"description":"Phone number to enrich","type":"string"},"email_enrichment":{"default":false,"description":"Request email enrichment (costs credits when found)","type":"boolean"},"phone_enrichment":{"default":false,"description":"Request phone enrichment (costs credits when found)","type":"boolean"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"error":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"contacts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["email","phone"]},"value":{"type":"string"},"rating":{"type":"number","minimum":0,"maximum":100},"subType":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","value","rating"],"additionalProperties":false}},"social":{"type":"array","items":{"type":"object","properties":{"link":{"type":"string"},"type":{"type":"string"},"rating":{"type":"number","minimum":0,"maximum":100}},"required":["link","type","rating"],"additionalProperties":false}}},"required":["contacts","social"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/firecrawl/search":{"post":{"operationId":"firecrawl_search","summary":"Firecrawl Search - Search the web","tags":["Firecrawl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.025200"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Search query to find relevant web pages"},"limit":{"default":5,"description":"Maximum number of results (max 10)","type":"number","minimum":1,"maximum":10}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"title":{"description":"Page title","type":"string"},"url":{"description":"Page URL","type":"string"},"description":{"description":"Page description/snippet","type":"string"},"snippet":{"description":"Content snippet (first 500 chars of markdown)","type":"string"}},"additionalProperties":false}},"query":{"type":"string"},"resultCount":{"type":"number"}},"required":["results","query","resultCount"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/fullenrich/company-search":{"post":{"operationId":"fullenrich_company-search","summary":"FullEnrich Company Search — filter by domain, name, LinkedIn URL/ID, industry, type, HQ, headcount, founding year, keywords, specialties, and company IDs. Requires at least one filter; limit/offset alone → 400. Paginate via search_after. Legal names not brands (Anysphere≠Cursor). Software Development not SaaS; Research Services not AI.","tags":["Fullenrich"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":3,"description":"Max companies to return. Default 3; raise when you need more (flat $0.05/query regardless of limit).","type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"description":"Number of companies to skip. Max 10,000 — use search_after beyond that. Legacy alias: page.","type":"integer","minimum":0,"maximum":10000},"search_after":{"description":"Cursor from metadata.search_after — only reliable company-search pagination method beyond offset 10,000.","type":"string"},"names":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Search by legal entity name, not product/brand name (e.g. Anysphere, not Cursor). Use exact_match for precise matching."},"domains":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by company domains (e.g. stripe.com). Exact match recommended for single-company lookup."},"professional_network_ids":{"type":"array","items":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"object","properties":{"value":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]}]},"description":"Filter by company LinkedIn numeric IDs from prior FullEnrich responses."},"professional_network_urls":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by company LinkedIn URLs (e.g. https://www.linkedin.com/company/stripe). Exact match recommended for single-company lookup."},"keywords":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by company description keywords."},"specialties":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by company specialties (e.g. AI safety)."},"industries":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string","description":"FullEnrich company industry enum. See docs.fullenrich.com/api/v2/general/enums#company-industry."},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]}]},"description":"Exact FullEnrich industry enum strings. Software Development for SaaS; Research Services for AI labs. Free-text returns 400."},"types":{"type":"array","items":{"anyOf":[{"type":"string","enum":["Partnership","Nonprofit","Educational","Privately Held","Public Company","Self-Owned","Self-Employed","Government Agency"]},{"type":"object","properties":{"value":{"type":"string","enum":["Partnership","Nonprofit","Educational","Privately Held","Public Company","Self-Owned","Self-Employed","Government Agency"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string","enum":["Partnership","Nonprofit","Educational","Privately Held","Public Company","Self-Owned","Self-Employed","Government Agency"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by company type enum (Public Company, Privately Held, etc.)."},"headquarters_locations":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by HQ location (city, region, or country)."},"founded_years":{"description":"Filter by founding year ranges [{ min?, max?, exclude? }]. Flat aliases: founded_year_min/founded_year_max.","type":"array","items":{"type":"object","properties":{"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclude":{"type":"boolean"}}}},"headcounts":{"description":"Filter by employee count ranges [{ min?, max?, exclude? }]. Flat aliases: headcount_min/headcount_max.","type":"array","items":{"type":"object","properties":{"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclude":{"type":"boolean"}}}},"company_ids":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by FullEnrich company UUIDs from prior responses."},"headcount_min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcount_max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcountMin":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcountMax":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"founded_year_min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"founded_year_max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"foundedYearMin":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"foundedYearMax":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"excludeFields":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"companies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"domain":{"type":"string"},"description":{"type":"string"},"year_founded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcount_range":{"type":"string"},"company_type":{"type":"string"},"locations":{"type":"object","properties":{"headquarters":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string"},"city":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"country_code":{"type":"string"}},"additionalProperties":{}},"offices":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string"}},"additionalProperties":{}}},{"type":"null"}]}},"additionalProperties":{}},"social_profiles":{"type":"object","properties":{"professional_network":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string"},"handle":{"type":"string"},"connection_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":{}}},"additionalProperties":{}},"specialties":{"type":"array","items":{"type":"string"}},"industry":{"type":"object","properties":{"main_industry":{"type":"string"}},"additionalProperties":{}}},"additionalProperties":{}}},"metadata":{"type":"object","properties":{"total":{"type":"number"},"credits":{"type":"number"},"offset":{"type":"number"},"search_after":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/fullenrich/people-search":{"post":{"operationId":"fullenrich_people-search","summary":"FullEnrich People Search — filter by company domain/name/LinkedIn URL, seniority, title, location, skills, industry, job function, tenure, and 20+ other FullEnrich filters. Requires at least one filter; limit/offset alone → 400.","tags":["Fullenrich"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":3,"description":"Max people to return. Default 3; raise when you need more (flat $0.05/query regardless of limit).","type":"integer","minimum":1,"maximum":100},"offset":{"default":0,"description":"Number of people to skip. Max 10,000 — use search_after beyond that.","type":"integer","minimum":0,"maximum":10000},"search_after":{"description":"Cursor token for pagination beyond offset 10,000.","type":"string"},"current_company_names":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by current company names. Use exact_match for precise matching."},"current_company_domains":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by current company domains (e.g. stripe.com). Exact match recommended."},"current_company_professional_network_ids":{"type":"array","items":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"object","properties":{"value":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]}]},"description":"Filter by current company LinkedIn numeric IDs from prior FullEnrich responses."},"current_company_professional_network_urls":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by current company LinkedIn URLs (e.g. https://www.linkedin.com/company/stripe)."},"current_company_specialties":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"current_company_industries":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string","description":"FullEnrich company industry enum. See docs.fullenrich.com/api/v2/general/enums#company-industry."},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]}]},"description":"Filter by company industry enum. Software Development for SaaS; Research Services for AI labs."},"past_company_names":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"past_company_domains":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"current_company_types":{"type":"array","items":{"anyOf":[{"type":"string","enum":["Partnership","Nonprofit","Educational","Privately Held","Public Company","Self-Owned","Self-Employed","Government Agency"]},{"type":"object","properties":{"value":{"type":"string","enum":["Partnership","Nonprofit","Educational","Privately Held","Public Company","Self-Owned","Self-Employed","Government Agency"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string","enum":["Partnership","Nonprofit","Educational","Privately Held","Public Company","Self-Owned","Self-Employed","Government Agency"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by company type enum (Public Company, Privately Held, etc.)."},"current_company_headquarters":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by company HQ location (city, region, or country)."},"current_company_headcounts":{"description":"Filter by company employee count ranges [{ min?, max?, exclude? }].","type":"array","items":{"type":"object","properties":{"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclude":{"type":"boolean"}}}},"current_company_founded_years":{"description":"Filter by company founding year ranges.","type":"array","items":{"type":"object","properties":{"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclude":{"type":"boolean"}}}},"current_company_ids":{"type":"array","items":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"object","properties":{"value":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]}]},"description":"Filter by FullEnrich internal company IDs from prior responses."},"person_ids":{"type":"array","items":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"object","properties":{"value":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]}]},"description":"Filter by FullEnrich internal person IDs from prior responses."},"person_names":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"person_professional_network_ids":{"type":"array","items":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"object","properties":{"value":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]}]},"description":"Filter by person LinkedIn numeric IDs from prior FullEnrich responses."},"person_professional_network_urls":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by person LinkedIn profile URLs — most reliable single-person lookup."},"person_locations":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by person location. Pair with current_company_domains when possible."},"person_languages":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"person_skills":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"current_position_seniority_level":{"type":"array","items":{"anyOf":[{"type":"string","enum":["Owner","Founder","C-level","Partner","VP","Head","Director","Manager","Senior"]},{"type":"object","properties":{"value":{"type":"string","enum":["Owner","Founder","C-level","Partner","VP","Head","Director","Manager","Senior"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string","enum":["Owner","Founder","C-level","Partner","VP","Head","Director","Manager","Senior"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Preferred for population queries (e.g. all VPs). Schema-enforced FullEnrich seniority enum."},"current_position_job_functions":{"type":"array","items":{"anyOf":[{"type":"string","enum":["Administrative","Agriculture & Environment","Construction & Trades","Consulting & Advisory","Customer Service","Design","Education","Energy & Utilities","Entertainment & Gaming","Executive & Leadership","Finance","Hospitality & Tourism","Human Resources","Legal","Marketing","Media & Communications","Medical & Health","Non-Profit & Government","Not Employed","Operations","Personal & Home Services","Product","Project & Program Management","Public Safety & Security","Research & Science","Retail & Consumer","Sales","Software","Traditional Engineering","Transportation & Logistics"]},{"type":"object","properties":{"value":{"type":"string","enum":["Administrative","Agriculture & Environment","Construction & Trades","Consulting & Advisory","Customer Service","Design","Education","Energy & Utilities","Entertainment & Gaming","Executive & Leadership","Finance","Hospitality & Tourism","Human Resources","Legal","Marketing","Media & Communications","Medical & Health","Non-Profit & Government","Not Employed","Operations","Personal & Home Services","Product","Project & Program Management","Public Safety & Security","Research & Science","Retail & Consumer","Sales","Software","Traditional Engineering","Transportation & Logistics"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string","enum":["Administrative","Agriculture & Environment","Construction & Trades","Consulting & Advisory","Customer Service","Design","Education","Energy & Utilities","Entertainment & Gaming","Executive & Leadership","Finance","Hospitality & Tourism","Human Resources","Legal","Marketing","Media & Communications","Medical & Health","Non-Profit & Government","Not Employed","Operations","Personal & Home Services","Product","Project & Program Management","Public Safety & Security","Research & Science","Retail & Consumer","Sales","Software","Traditional Engineering","Transportation & Logistics"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by current job function enum. See docs.fullenrich.com/api/v2/general/enums#functions-and-subfunctions."},"current_position_sub_functions":{"type":"array","items":{"anyOf":[{"type":"string","enum":["Data Entry","Executive Assistant","General Administrative","Office Management","Receptionist","Records Management","Scheduling","Virtual Assistant","Agriculture/Landscaping","ESG & Sustainability","Veterinary","Carpenter","Electrician","General Contractor","HVAC","Heavy Equipment Operators","Mason","Painter","Plumber","Roofer","Safety/HSE","Site Supervisor","Surveyor","Traditional Crafts","Welder","Advisors","Coaching","Financial Consulting","HR Consulting","IT Consulting","Independent Consulting","Management Consulting","Operations Consulting","Strategy Consulting","Call Center","Client Services","Customer Experience","Customer Operations","Customer Support","General Customer Service","Help Desk","IT Support/Help Desk","Technical Support","Architecture","Brand Design","Creative/Design","Fashion Design","Graphic Design","Illustration","Industrial Design","Interaction Design","Interior Design","Motion Design","Photography","UI/UX Design","Visual Design","Academia","Curriculum Development","Early Childhood Education","Education - Teaching","Educational Administration","Higher Education","K-12 Teaching","Library Services","Private Tutoring","Special Education","Training & Facilitation","Energy/Mining","Mining","Nuclear","Oil & Gas","Power Generation","Renewable Energy","Utilities Operations","Cultural Institutions","Sports","Video Games","Board Member","Entrepreneur","Executive/C-Level","Finance Leadership","Founder/Owner","General Manager","HR Leadership","Managing Director","Marketing Leadership","Operations Leadership","Partner","President","Product Leadership","Sales Leadership","Supervisory/Team Lead","Technical Leadership","VP/Executive","Accounting","Audit","Banking/Finance","Billing & Collections","Controllers","Corporate Finance","Credit Analysis","ESG & Sustainability","Financial Planning & Analysis","Financial Reporting","Insurance","Investment","Investor Relations","Mergers & Acquisitions","Real Estate","Risk Management","Tax","Treasury","Bartender","Chef/Culinary","Event Coordinator","Event Planning","Food Service","Front Desk","Hotel Management","Hotels/Hospitality","Housekeeping","Restaurant Management","Server/Waitstaff","Tour Guide","Travel Agent","Travel/Tourism","Compensation & Benefits","Diversity & Inclusion","Employee Relations","General HR","HR Business Partner","HR Compliance","HR Leadership","HR Operations","Learning & Development","Organizational Development","Payroll","People Analytics","Recruiting/Talent Acquisition","Talent Management","Workforce Planning","Compliance","Contracts","Corporate Law","Employment Law","General Legal","Intellectual Property","Litigation","Paralegal","Privacy & Data Protection","Regulatory Affairs","Advertising","Brand Marketing","Communications","Content Marketing","Demand Generation","Digital Marketing","Email Marketing","Event Marketing","General Marketing","Growth Marketing","Market Research","Marketing Operations","Product Marketing","Public Relations","SEO/SEM","Social Media Marketing","Audio/Sound","Broadcasting","Content Creator","Copywriting","Editing","Film/Entertainment","Journalism","Public Affairs","Social Media Management","Translation/Writing","Video Production","Allied Healthcare","Anesthesiology","Cardiology","Dental","Emergency Medicine","Healthcare Clinical","Medical Administration","Medical Research","Nursing","Oncology","Pediatrics","Pharmacy","Physical Therapy","Physicians/Doctors","Psychiatry/Psychology","Radiology","Surgery","Therapy/Mental Health","Advocacy","Community Outreach","Fundraising","Government Administration","Grant Writing","International Development","Non-Profit/Volunteer","Nonprofit Management","Public Policy","Religious","Social Services","Social Work","Career Break","Freelancer","Job Seeker","Retired","Student","Business Operations","Distribution","Facilities Management","Fleet Management","IT Procurement","Inspector/Examiner","Inventory Management","Logistics","Manufacturing/Warehouse","Operations/General Mgmt","Process Improvement","Quality Management","Supply Chain/Procurement","Vendor Management","Warehouse Management","Beauty","Childcare","Cleaning/Janitorial","Domestic/Care","Eldercare","Fitness/Wellness","Home Repair","Massage Therapy","Personal Assistant","Personal Training","Pet Services","Traditional Crafts","Product Analytics","Product Leadership","Product Management","Product Operations","Product Owner","Product Strategy","Technical Product Management","UX Research","Agile/Scrum","Business Analysis","Construction Project Management","IT Project Management","IT/Agile","PMO","Program Management","Corrections","EMT/Paramedic","Firefighter","Military","Police Officer","Police/Fire/EMT","Private Investigation","Security (Physical)","Security Guard","Clinical Research","Environmental Science","Laboratory","Policy Research","Scientific Research","Social Science","Buying/Merchandising","Cashier","E-commerce Operations","Loss Prevention","Retail Sales","Store Management","Visual Merchandising","Account Management","Business Development","Channel Sales","Customer Success","Enterprise Sales","Field Sales","General Sales","Inside Sales","Partnership Sales","Real Estate","Revenue Operations","SDR/BDR","Sales Enablement","Sales Engineering","Sales Leadership","Sales Operations","AI/Machine Learning","Backend Engineering","Cloud Engineering","Cloud Operations","Cybersecurity","Data Engineering/Analytics","Database Administration","Database Engineering","DevOps","Embedded Systems","Enterprise Architecture","Firmware Engineering","Frontend Engineering","Fullstack Engineering","IT Infrastructure","Mobile Engineering","Network Administration","Platform Engineering","QA/Quality","Security Engineering","Site Reliability Engineering","Software Engineering","Solutions Architecture","Systems Administration","Technical Leadership","Technical Writing","UI/UX Design","Video Games","Aerospace Engineering","Automotive Engineering","Biomedical Engineering","Chemical Engineering","Civil Engineering","Electrical Engineering","Environmental Engineering","Manufacturing Engineering","Materials Engineering","Mechanical Engineering","Robotics Engineering","Structural Engineering","Technician","Customs/Import-Export","Delivery Driver","Dispatcher","Freight Forwarding","Maritime","Pilot","Train Operator","Transportation","Truck Driver"]},{"type":"object","properties":{"value":{"type":"string","enum":["Data Entry","Executive Assistant","General Administrative","Office Management","Receptionist","Records Management","Scheduling","Virtual Assistant","Agriculture/Landscaping","ESG & Sustainability","Veterinary","Carpenter","Electrician","General Contractor","HVAC","Heavy Equipment Operators","Mason","Painter","Plumber","Roofer","Safety/HSE","Site Supervisor","Surveyor","Traditional Crafts","Welder","Advisors","Coaching","Financial Consulting","HR Consulting","IT Consulting","Independent Consulting","Management Consulting","Operations Consulting","Strategy Consulting","Call Center","Client Services","Customer Experience","Customer Operations","Customer Support","General Customer Service","Help Desk","IT Support/Help Desk","Technical Support","Architecture","Brand Design","Creative/Design","Fashion Design","Graphic Design","Illustration","Industrial Design","Interaction Design","Interior Design","Motion Design","Photography","UI/UX Design","Visual Design","Academia","Curriculum Development","Early Childhood Education","Education - Teaching","Educational Administration","Higher Education","K-12 Teaching","Library Services","Private Tutoring","Special Education","Training & Facilitation","Energy/Mining","Mining","Nuclear","Oil & Gas","Power Generation","Renewable Energy","Utilities Operations","Cultural Institutions","Sports","Video Games","Board Member","Entrepreneur","Executive/C-Level","Finance Leadership","Founder/Owner","General Manager","HR Leadership","Managing Director","Marketing Leadership","Operations Leadership","Partner","President","Product Leadership","Sales Leadership","Supervisory/Team Lead","Technical Leadership","VP/Executive","Accounting","Audit","Banking/Finance","Billing & Collections","Controllers","Corporate Finance","Credit Analysis","ESG & Sustainability","Financial Planning & Analysis","Financial Reporting","Insurance","Investment","Investor Relations","Mergers & Acquisitions","Real Estate","Risk Management","Tax","Treasury","Bartender","Chef/Culinary","Event Coordinator","Event Planning","Food Service","Front Desk","Hotel Management","Hotels/Hospitality","Housekeeping","Restaurant Management","Server/Waitstaff","Tour Guide","Travel Agent","Travel/Tourism","Compensation & Benefits","Diversity & Inclusion","Employee Relations","General HR","HR Business Partner","HR Compliance","HR Leadership","HR Operations","Learning & Development","Organizational Development","Payroll","People Analytics","Recruiting/Talent Acquisition","Talent Management","Workforce Planning","Compliance","Contracts","Corporate Law","Employment Law","General Legal","Intellectual Property","Litigation","Paralegal","Privacy & Data Protection","Regulatory Affairs","Advertising","Brand Marketing","Communications","Content Marketing","Demand Generation","Digital Marketing","Email Marketing","Event Marketing","General Marketing","Growth Marketing","Market Research","Marketing Operations","Product Marketing","Public Relations","SEO/SEM","Social Media Marketing","Audio/Sound","Broadcasting","Content Creator","Copywriting","Editing","Film/Entertainment","Journalism","Public Affairs","Social Media Management","Translation/Writing","Video Production","Allied Healthcare","Anesthesiology","Cardiology","Dental","Emergency Medicine","Healthcare Clinical","Medical Administration","Medical Research","Nursing","Oncology","Pediatrics","Pharmacy","Physical Therapy","Physicians/Doctors","Psychiatry/Psychology","Radiology","Surgery","Therapy/Mental Health","Advocacy","Community Outreach","Fundraising","Government Administration","Grant Writing","International Development","Non-Profit/Volunteer","Nonprofit Management","Public Policy","Religious","Social Services","Social Work","Career Break","Freelancer","Job Seeker","Retired","Student","Business Operations","Distribution","Facilities Management","Fleet Management","IT Procurement","Inspector/Examiner","Inventory Management","Logistics","Manufacturing/Warehouse","Operations/General Mgmt","Process Improvement","Quality Management","Supply Chain/Procurement","Vendor Management","Warehouse Management","Beauty","Childcare","Cleaning/Janitorial","Domestic/Care","Eldercare","Fitness/Wellness","Home Repair","Massage Therapy","Personal Assistant","Personal Training","Pet Services","Traditional Crafts","Product Analytics","Product Leadership","Product Management","Product Operations","Product Owner","Product Strategy","Technical Product Management","UX Research","Agile/Scrum","Business Analysis","Construction Project Management","IT Project Management","IT/Agile","PMO","Program Management","Corrections","EMT/Paramedic","Firefighter","Military","Police Officer","Police/Fire/EMT","Private Investigation","Security (Physical)","Security Guard","Clinical Research","Environmental Science","Laboratory","Policy Research","Scientific Research","Social Science","Buying/Merchandising","Cashier","E-commerce Operations","Loss Prevention","Retail Sales","Store Management","Visual Merchandising","Account Management","Business Development","Channel Sales","Customer Success","Enterprise Sales","Field Sales","General Sales","Inside Sales","Partnership Sales","Real Estate","Revenue Operations","SDR/BDR","Sales Enablement","Sales Engineering","Sales Leadership","Sales Operations","AI/Machine Learning","Backend Engineering","Cloud Engineering","Cloud Operations","Cybersecurity","Data Engineering/Analytics","Database Administration","Database Engineering","DevOps","Embedded Systems","Enterprise Architecture","Firmware Engineering","Frontend Engineering","Fullstack Engineering","IT Infrastructure","Mobile Engineering","Network Administration","Platform Engineering","QA/Quality","Security Engineering","Site Reliability Engineering","Software Engineering","Solutions Architecture","Systems Administration","Technical Leadership","Technical Writing","UI/UX Design","Video Games","Aerospace Engineering","Automotive Engineering","Biomedical Engineering","Chemical Engineering","Civil Engineering","Electrical Engineering","Environmental Engineering","Manufacturing Engineering","Materials Engineering","Mechanical Engineering","Robotics Engineering","Structural Engineering","Technician","Customs/Import-Export","Delivery Driver","Dispatcher","Freight Forwarding","Maritime","Pilot","Train Operator","Transportation","Truck Driver"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string","enum":["Data Entry","Executive Assistant","General Administrative","Office Management","Receptionist","Records Management","Scheduling","Virtual Assistant","Agriculture/Landscaping","ESG & Sustainability","Veterinary","Carpenter","Electrician","General Contractor","HVAC","Heavy Equipment Operators","Mason","Painter","Plumber","Roofer","Safety/HSE","Site Supervisor","Surveyor","Traditional Crafts","Welder","Advisors","Coaching","Financial Consulting","HR Consulting","IT Consulting","Independent Consulting","Management Consulting","Operations Consulting","Strategy Consulting","Call Center","Client Services","Customer Experience","Customer Operations","Customer Support","General Customer Service","Help Desk","IT Support/Help Desk","Technical Support","Architecture","Brand Design","Creative/Design","Fashion Design","Graphic Design","Illustration","Industrial Design","Interaction Design","Interior Design","Motion Design","Photography","UI/UX Design","Visual Design","Academia","Curriculum Development","Early Childhood Education","Education - Teaching","Educational Administration","Higher Education","K-12 Teaching","Library Services","Private Tutoring","Special Education","Training & Facilitation","Energy/Mining","Mining","Nuclear","Oil & Gas","Power Generation","Renewable Energy","Utilities Operations","Cultural Institutions","Sports","Video Games","Board Member","Entrepreneur","Executive/C-Level","Finance Leadership","Founder/Owner","General Manager","HR Leadership","Managing Director","Marketing Leadership","Operations Leadership","Partner","President","Product Leadership","Sales Leadership","Supervisory/Team Lead","Technical Leadership","VP/Executive","Accounting","Audit","Banking/Finance","Billing & Collections","Controllers","Corporate Finance","Credit Analysis","ESG & Sustainability","Financial Planning & Analysis","Financial Reporting","Insurance","Investment","Investor Relations","Mergers & Acquisitions","Real Estate","Risk Management","Tax","Treasury","Bartender","Chef/Culinary","Event Coordinator","Event Planning","Food Service","Front Desk","Hotel Management","Hotels/Hospitality","Housekeeping","Restaurant Management","Server/Waitstaff","Tour Guide","Travel Agent","Travel/Tourism","Compensation & Benefits","Diversity & Inclusion","Employee Relations","General HR","HR Business Partner","HR Compliance","HR Leadership","HR Operations","Learning & Development","Organizational Development","Payroll","People Analytics","Recruiting/Talent Acquisition","Talent Management","Workforce Planning","Compliance","Contracts","Corporate Law","Employment Law","General Legal","Intellectual Property","Litigation","Paralegal","Privacy & Data Protection","Regulatory Affairs","Advertising","Brand Marketing","Communications","Content Marketing","Demand Generation","Digital Marketing","Email Marketing","Event Marketing","General Marketing","Growth Marketing","Market Research","Marketing Operations","Product Marketing","Public Relations","SEO/SEM","Social Media Marketing","Audio/Sound","Broadcasting","Content Creator","Copywriting","Editing","Film/Entertainment","Journalism","Public Affairs","Social Media Management","Translation/Writing","Video Production","Allied Healthcare","Anesthesiology","Cardiology","Dental","Emergency Medicine","Healthcare Clinical","Medical Administration","Medical Research","Nursing","Oncology","Pediatrics","Pharmacy","Physical Therapy","Physicians/Doctors","Psychiatry/Psychology","Radiology","Surgery","Therapy/Mental Health","Advocacy","Community Outreach","Fundraising","Government Administration","Grant Writing","International Development","Non-Profit/Volunteer","Nonprofit Management","Public Policy","Religious","Social Services","Social Work","Career Break","Freelancer","Job Seeker","Retired","Student","Business Operations","Distribution","Facilities Management","Fleet Management","IT Procurement","Inspector/Examiner","Inventory Management","Logistics","Manufacturing/Warehouse","Operations/General Mgmt","Process Improvement","Quality Management","Supply Chain/Procurement","Vendor Management","Warehouse Management","Beauty","Childcare","Cleaning/Janitorial","Domestic/Care","Eldercare","Fitness/Wellness","Home Repair","Massage Therapy","Personal Assistant","Personal Training","Pet Services","Traditional Crafts","Product Analytics","Product Leadership","Product Management","Product Operations","Product Owner","Product Strategy","Technical Product Management","UX Research","Agile/Scrum","Business Analysis","Construction Project Management","IT Project Management","IT/Agile","PMO","Program Management","Corrections","EMT/Paramedic","Firefighter","Military","Police Officer","Police/Fire/EMT","Private Investigation","Security (Physical)","Security Guard","Clinical Research","Environmental Science","Laboratory","Policy Research","Scientific Research","Social Science","Buying/Merchandising","Cashier","E-commerce Operations","Loss Prevention","Retail Sales","Store Management","Visual Merchandising","Account Management","Business Development","Channel Sales","Customer Success","Enterprise Sales","Field Sales","General Sales","Inside Sales","Partnership Sales","Real Estate","Revenue Operations","SDR/BDR","Sales Enablement","Sales Engineering","Sales Leadership","Sales Operations","AI/Machine Learning","Backend Engineering","Cloud Engineering","Cloud Operations","Cybersecurity","Data Engineering/Analytics","Database Administration","Database Engineering","DevOps","Embedded Systems","Enterprise Architecture","Firmware Engineering","Frontend Engineering","Fullstack Engineering","IT Infrastructure","Mobile Engineering","Network Administration","Platform Engineering","QA/Quality","Security Engineering","Site Reliability Engineering","Software Engineering","Solutions Architecture","Systems Administration","Technical Leadership","Technical Writing","UI/UX Design","Video Games","Aerospace Engineering","Automotive Engineering","Biomedical Engineering","Chemical Engineering","Civil Engineering","Electrical Engineering","Environmental Engineering","Manufacturing Engineering","Materials Engineering","Mechanical Engineering","Robotics Engineering","Structural Engineering","Technician","Customs/Import-Export","Delivery Driver","Dispatcher","Freight Forwarding","Maritime","Pilot","Train Operator","Transportation","Truck Driver"]},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter by current job sub function enum."},"current_position_titles":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Exact title match only — far fewer results than seniority."},"past_position_titles":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"current_position_years_in":{"description":"Filter by years in current position [{ min?, max?, exclude? }].","type":"array","items":{"type":"object","properties":{"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclude":{"type":"boolean"}}}},"current_company_years_at":{"description":"Filter by years at current company (tenure).","type":"array","items":{"type":"object","properties":{"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclude":{"type":"boolean"}}}},"person_universities":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"value":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["value"]},{"type":"object","properties":{"name":{"type":"string"},"exact_match":{"type":"boolean"},"exclude":{"type":"boolean"}},"required":["name"]}]},"description":"Filter list. Plain strings and {\"value\":\"...\"} objects are both accepted."},"current_company_days_since_last_job_change":{"description":"Days since last job change in FullEnrich graph. Prefer wider ranges (500-1000).","type":"array","items":{"type":"object","properties":{"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclude":{"type":"boolean"}}}},"excludeFields":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"people":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"full_name":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"location":{"type":"object","properties":{"country":{"type":"string"},"country_code":{"type":"string"},"city":{"type":"string"},"region":{"type":"string"}},"additionalProperties":{}},"social_profiles":{"type":"object","properties":{"professional_network":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string"},"handle":{"type":"string"},"connection_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":{}}},"additionalProperties":{}},"educations":{"type":"array","items":{"type":"object","properties":{"school_name":{"type":"string"},"degree":{"type":"string"},"start_at":{"type":"string"},"end_at":{"type":"string"}},"additionalProperties":{}}},"languages":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string"},"proficiency":{"type":"string"}},"additionalProperties":{}}},"skills":{"type":"array","items":{"type":"string"}},"employment":{"type":"object","properties":{"current":{"type":"object","properties":{"title":{"type":"string"},"seniority":{"type":"string"},"job_functions":{"type":"array","items":{"type":"object","properties":{"function":{"type":"string"},"sub_function":{"type":"string"}},"additionalProperties":{}}},"description":{"type":"string"},"company":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"domain":{"type":"string"},"description":{"type":"string"},"year_founded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcount_range":{"type":"string"},"company_type":{"type":"string"},"specialties":{"type":"array","items":{"type":"string"}},"locations":{"type":"object","properties":{"headquarters":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string"},"city":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"country_code":{"type":"string"}},"additionalProperties":{}},"offices":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string"}},"additionalProperties":{}}},{"type":"null"}]}},"additionalProperties":{}},"industry":{"type":"object","properties":{"main_industry":{"type":"string"}},"additionalProperties":{}},"social_profiles":{"type":"object","properties":{"professional_network":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string"},"handle":{"type":"string"},"connection_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":{}}},"additionalProperties":{}}},"additionalProperties":{}},"is_current":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string"}},"additionalProperties":{}},"all":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"seniority":{"type":"string"},"job_functions":{"type":"array","items":{"type":"object","properties":{"function":{"type":"string"},"sub_function":{"type":"string"}},"additionalProperties":{}}},"description":{"type":"string"},"company":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"domain":{"type":"string"},"description":{"type":"string"},"year_founded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"headcount_range":{"type":"string"},"company_type":{"type":"string"},"specialties":{"type":"array","items":{"type":"string"}},"locations":{"type":"object","properties":{"headquarters":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string"},"city":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"country_code":{"type":"string"}},"additionalProperties":{}},"offices":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string"}},"additionalProperties":{}}},{"type":"null"}]}},"additionalProperties":{}},"industry":{"type":"object","properties":{"main_industry":{"type":"string"}},"additionalProperties":{}},"social_profiles":{"type":"object","properties":{"professional_network":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string"},"handle":{"type":"string"},"connection_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":{}}},"additionalProperties":{}}},"additionalProperties":{}},"is_current":{"type":"boolean"},"start_at":{"type":"string"},"end_at":{"type":"string"}},"additionalProperties":{}}}},"additionalProperties":{}}},"additionalProperties":{}}},"metadata":{"type":"object","properties":{"total":{"type":"number"},"credits":{"type":"number"},"offset":{"type":"number"},"limit":{"type":"number"},"search_after":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/companyenrich/org-enrich":{"post":{"operationId":"companyenrich_org-enrich","summary":"CompanyEnrich Organization Enrich — full company profile by domain. employees/revenue are range strings. Known issue: openai.com resolves to wrong entity. x.com returns 404 — use twitter.com. total_funding may lag funding array; M&A not included. Verify domain before expand: workforce.","tags":["Companyenrich"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.060000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Company domain, e.g. 'stripe.com'. openai.com is a known bad resolve; x.com returns 404 — use twitter.com."},"expand":{"description":"Optional workforce breakdown (+5 upstream credits). Verify returned domain matches input before trusting workforce data.","type":"string","enum":["workforce"]},"excludeFields":{"type":"array","items":{"type":"string"}}},"required":["domain"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"industry":{"type":"string"},"employees":{"type":"string"},"revenue":{"type":"string"},"founded_year":{"type":"number"},"technologies":{"type":"array","items":{"type":"string"}},"keywords":{"type":"array","items":{"type":"string"}},"naics_codes":{"type":"array","items":{"type":"string"}},"page_rank":{"type":"number"},"socials":{"type":"object","properties":{"linkedin_url":{"type":"string"},"github_url":{"type":"string"},"crunchbase_url":{"type":"string"},"g2_url":{"type":"string"},"youtube_url":{"type":"string"},"instagram_url":{"type":"string"},"angellist_url":{"type":"string"}},"additionalProperties":{}},"financial":{"type":"object","properties":{"total_funding":{"type":"number"},"funding":{"type":"array","items":{"type":"object","properties":{"round":{"type":"string"},"amount":{"type":"number"},"date":{"type":"string"},"investors":{"type":"array","items":{"type":"string"}}},"additionalProperties":{}}}},"additionalProperties":{}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/companyenrich/properties-enrich":{"post":{"operationId":"companyenrich_properties-enrich","summary":"CompanyEnrich Enrich by properties — match by name or social URL when domain is unknown. Best-match disambiguation; verify returned domain before downstream people searches. employees/revenue are range strings. expand: workforce adds +5 upstream credits.","tags":["Companyenrich"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.060000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Company name. Best-match disambiguation when ambiguous.","type":"string"},"linkedinUrl":{"description":"LinkedIn company page URL.","type":"string"},"linkedinId":{"description":"LinkedIn company ID.","type":"string"},"twitterUrl":{"description":"Twitter/X company URL.","type":"string"},"facebookUrl":{"description":"Facebook company URL.","type":"string"},"instagramUrl":{"description":"Instagram company URL.","type":"string"},"youTubeUrl":{"description":"YouTube channel URL.","type":"string"},"expand":{"description":"Optional workforce breakdown (+5 upstream credits). Verify returned domain matches intent before trusting workforce data.","type":"string","enum":["workforce"]},"excludeFields":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"industry":{"type":"string"},"employees":{"type":"string"},"revenue":{"type":"string"},"founded_year":{"type":"number"},"technologies":{"type":"array","items":{"type":"string"}},"keywords":{"type":"array","items":{"type":"string"}},"naics_codes":{"type":"array","items":{"type":"string"}},"page_rank":{"type":"number"},"socials":{"type":"object","properties":{"linkedin_url":{"type":"string"},"github_url":{"type":"string"},"crunchbase_url":{"type":"string"},"g2_url":{"type":"string"},"youtube_url":{"type":"string"},"instagram_url":{"type":"string"},"angellist_url":{"type":"string"}},"additionalProperties":{}},"financial":{"type":"object","properties":{"total_funding":{"type":"number"},"funding":{"type":"array","items":{"type":"object","properties":{"round":{"type":"string"},"amount":{"type":"number"},"date":{"type":"string"},"investors":{"type":"array","items":{"type":"string"}}},"additionalProperties":{}}}},"additionalProperties":{}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/pdl/people-enrich":{"post":{"operationId":"pdl_people-enrich","summary":"PDL Person Enrich — career history, emails, phone. Requires one of: `email`, `profile` (LinkedIn URL), or `first_name` + `last_name` + (`company_name` OR `company_domain`). `{ first_name, last_name }` alone returns 400. Prefer `email` when known, then `profile`. No match: HTTP 200, status 404, data null — not billed. Match: $0.28.","tags":["Pdl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.280000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"profile":{"description":"LinkedIn or other social profile URL. Similar coverage to name+domain — not a fallback when person is absent (data: null).","type":"string"},"email":{"description":"Email address — highest-reliability input; prefer over profile/name when known.","type":"string"},"first_name":{"description":"First name.","type":"string"},"last_name":{"description":"Last name.","type":"string"},"company_name":{"description":"Company name (with first_name + last_name). Fallback; similar coverage to profile.","type":"string"},"company_domain":{"description":"Company domain (with first_name + last_name). Fallback; similar coverage to profile.","type":"string"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","description":"PDL match status. 200 = record found; 404 = no record in PDL (HTTP response is still 200 with data: null)."},"likelihood":{"type":"number"},"data":{"description":"Person record when found; null when status is 404.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["status"],"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/exa/search":{"post":{"operationId":"exa_search","summary":"Exa Search - Neural search across the web","tags":["Exa"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numResults":{"default":5,"type":"number","minimum":1,"maximum":100},"includeDomains":{"description":"Restrict results to these hostnames. Use full hostnames (e.g. \"stanford.edu\"), not bare TLDs like \"edu\". Do not use reddit.com, twitter.com, x.com, instagram.com, facebook.com, ebay.com, nytimes.com, cnn.com, reuters.com, or craigslist.org — Exa does not support those via domain filters.","type":"array","items":{"type":"string"}},"excludeDomains":{"description":"Exclude these hostnames from results. Use full hostnames (e.g. \"stanford.edu\"), not bare TLDs like \"edu\". Do not use reddit.com, twitter.com, x.com, instagram.com, facebook.com, ebay.com, nytimes.com, cnn.com, reuters.com, or craigslist.org — Exa does not support those via domain filters.","type":"array","items":{"type":"string"}},"startCrawlDate":{"type":"string"},"endCrawlDate":{"type":"string"},"startPublishedDate":{"type":"string"},"endPublishedDate":{"type":"string"},"contents":{"type":"object","properties":{"text":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"maxCharacters":{"type":"number"},"includeHtmlTags":{"type":"boolean"},"verbosity":{"type":"string","enum":["compact","standard","full"]},"includeSections":{"type":"array","items":{"type":"string","enum":["header","navigation","banner","body","sidebar","footer","metadata"]}},"excludeSections":{"type":"array","items":{"type":"string","enum":["header","navigation","banner","body","sidebar","footer","metadata"]}}}}]},"highlights":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"query":{"type":"string"},"maxCharacters":{"type":"number"}}}]},"summary":{"description":"Summary options object. Use {} or true to request summaries, { query: \"...\" } for guided summaries, or false to omit summaries.","type":"object","properties":{"query":{"type":"string"},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"livecrawl":{"type":"string","enum":["never","fallback","always","preferred"]},"livecrawlTimeout":{"type":"number"},"maxAgeHours":{"type":"number","minimum":-1,"maximum":720},"subpages":{"type":"number"},"subpageTarget":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"extras":{"type":"object","properties":{"links":{"type":"number"},"imageLinks":{"type":"number"}}}},"required":["summary"]},"query":{"type":"string","minLength":1,"description":"The query string for the search. Do not use site: reddit.com, twitter.com, x.com, instagram.com, facebook.com, ebay.com, nytimes.com, cnn.com, reuters.com, or craigslist.org — Exa does not support those."},"additionalQueries":{"type":"array","items":{"type":"string"}},"stream":{"default":false,"type":"boolean"},"moderation":{"default":false,"type":"boolean"},"systemPrompt":{"type":"string"},"outputSchema":{"description":"JSON schema for synthesized search output","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"compliance":{"type":"string","enum":["hipaa"]},"type":{"description":"Search mode/latency strategy (auto, fast, deep, ...). Do not put content verticals here — use category.","type":"string"},"category":{"description":"A data category to focus on. Known categories: company, people, research paper, news, pdf, personal site, financial report. Other strings are used as category hints.","type":"string","minLength":1},"userLocation":{"description":"ISO 3166-1 alpha-2 country code for search localization, e.g. \"US\" or \"GB\". Common country names and aliases are coerced.","type":"string"}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string"},"resolvedSearchType":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"publishedDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"image":{"type":"string"},"favicon":{"type":"string"},"text":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"highlightScores":{"type":"array","items":{"type":"number"}},"summary":{"type":"string"},"extras":{"type":"object","properties":{"links":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"subpages":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"publishedDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"image":{"type":"string"},"favicon":{"type":"string"},"text":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"highlightScores":{"type":"array","items":{"type":"number"}},"summary":{"type":"string"},"extras":{"type":"object","properties":{"links":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false}},"output":{"type":"object","properties":{"content":{"anyOf":[{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}]},"grounding":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"citations":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false}},"confidence":{"type":"string","enum":["low","medium","high"]}},"additionalProperties":false}}},"additionalProperties":false},"searchType":{"type":"string"},"context":{"type":"string"},"costDollars":{"type":"object","properties":{"total":{"type":"number"}},"additionalProperties":false}},"required":["results"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/exa/find-similar":{"post":{"operationId":"exa_find-similar","summary":"Exa Find Similar - Find pages similar to a given URL","tags":["Exa"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numResults":{"default":5,"type":"number","minimum":1,"maximum":100},"includeDomains":{"description":"Restrict results to these hostnames. Use full hostnames (e.g. \"stanford.edu\"), not bare TLDs like \"edu\". Do not use reddit.com, twitter.com, x.com, instagram.com, facebook.com, ebay.com, nytimes.com, cnn.com, reuters.com, or craigslist.org — Exa does not support those via domain filters.","type":"array","items":{"type":"string"}},"excludeDomains":{"description":"Exclude these hostnames from results. Use full hostnames (e.g. \"stanford.edu\"), not bare TLDs like \"edu\". Do not use reddit.com, twitter.com, x.com, instagram.com, facebook.com, ebay.com, nytimes.com, cnn.com, reuters.com, or craigslist.org — Exa does not support those via domain filters.","type":"array","items":{"type":"string"}},"startCrawlDate":{"type":"string"},"endCrawlDate":{"type":"string"},"startPublishedDate":{"type":"string"},"endPublishedDate":{"type":"string"},"contents":{"type":"object","properties":{"text":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"maxCharacters":{"type":"number"},"includeHtmlTags":{"type":"boolean"},"verbosity":{"type":"string","enum":["compact","standard","full"]},"includeSections":{"type":"array","items":{"type":"string","enum":["header","navigation","banner","body","sidebar","footer","metadata"]}},"excludeSections":{"type":"array","items":{"type":"string","enum":["header","navigation","banner","body","sidebar","footer","metadata"]}}}}]},"highlights":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"query":{"type":"string"},"maxCharacters":{"type":"number"}}}]},"summary":{"description":"Summary options object. Use {} or true to request summaries, { query: \"...\" } for guided summaries, or false to omit summaries.","type":"object","properties":{"query":{"type":"string"},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"livecrawl":{"type":"string","enum":["never","fallback","always","preferred"]},"livecrawlTimeout":{"type":"number"},"maxAgeHours":{"type":"number","minimum":-1,"maximum":720},"subpages":{"type":"number"},"subpageTarget":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"extras":{"type":"object","properties":{"links":{"type":"number"},"imageLinks":{"type":"number"}}}},"required":["summary"]},"url":{"type":"string","format":"uri","description":"The URL to find similar links to"}},"required":["url"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"publishedDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"image":{"type":"string"},"favicon":{"type":"string"},"text":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"highlightScores":{"type":"array","items":{"type":"number"}},"summary":{"type":"string"},"extras":{"type":"object","properties":{"links":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"subpages":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"publishedDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"image":{"type":"string"},"favicon":{"type":"string"},"text":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"highlightScores":{"type":"array","items":{"type":"number"}},"summary":{"type":"string"},"extras":{"type":"object","properties":{"links":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false}},"context":{"type":"string"},"costDollars":{"type":"object","properties":{"total":{"type":"number"}},"additionalProperties":false}},"required":["results"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/exa/contents":{"post":{"operationId":"exa_contents","summary":"Exa Contents - Retrieve content from URLs","tags":["Exa"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"maxCharacters":{"type":"number"},"includeHtmlTags":{"type":"boolean"},"verbosity":{"type":"string","enum":["compact","standard","full"]},"includeSections":{"type":"array","items":{"type":"string","enum":["header","navigation","banner","body","sidebar","footer","metadata"]}},"excludeSections":{"type":"array","items":{"type":"string","enum":["header","navigation","banner","body","sidebar","footer","metadata"]}}}}]},"highlights":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"query":{"type":"string"},"maxCharacters":{"type":"number"}}}]},"summary":{"description":"Summary options object. Use {} or true to request summaries, { query: \"...\" } for guided summaries, or false to omit summaries.","type":"object","properties":{"query":{"type":"string"},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"livecrawl":{"type":"string","enum":["never","fallback","always","preferred"]},"livecrawlTimeout":{"type":"number"},"maxAgeHours":{"type":"number","minimum":-1,"maximum":720},"subpages":{"type":"number"},"subpageTarget":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"extras":{"type":"object","properties":{"links":{"type":"number"},"imageLinks":{"type":"number"}}},"urls":{"description":"Array of URLs to crawl","type":"array","items":{"type":"string"}},"ids":{"description":"Array of Exa document IDs to retrieve content for","type":"array","items":{"type":"string"}}},"required":["summary"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"publishedDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"image":{"type":"string"},"favicon":{"type":"string"},"text":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"highlightScores":{"type":"array","items":{"type":"number"}},"summary":{"type":"string"},"extras":{"type":"object","properties":{"links":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"subpages":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"publishedDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"image":{"type":"string"},"favicon":{"type":"string"},"text":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"highlightScores":{"type":"array","items":{"type":"number"}},"summary":{"type":"string"},"extras":{"type":"object","properties":{"links":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false}},"context":{"type":"string"},"statuses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["success","error"]},"error":{"anyOf":[{"type":"object","properties":{"tag":{"type":"string","enum":["CRAWL_NOT_FOUND","CRAWL_TIMEOUT","CRAWL_LIVECRAWL_TIMEOUT","SOURCE_NOT_AVAILABLE","UNSUPPORTED_URL","CRAWL_UNKNOWN_ERROR"]},"httpStatusCode":{"anyOf":[{"type":"number"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]}},"additionalProperties":false}},"costDollars":{"type":"object","properties":{"total":{"type":"number"}},"additionalProperties":false}},"required":["results"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/exa/answer":{"post":{"operationId":"exa_answer","summary":"Exa Answer - Get AI-generated answers with citations","tags":["Exa"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"The question or query to answer"},"stream":{"default":false,"type":"boolean"},"text":{"default":false,"type":"boolean"},"outputSchema":{"description":"JSON Schema Draft 7 object for structured answer output","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"answer":{"anyOf":[{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}],"description":"The generated answer based on search results"},"citations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"publishedDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string"},"image":{"type":"string"},"favicon":{"type":"string"}},"additionalProperties":false}},"costDollars":{"type":"object","properties":{"total":{"type":"number"}},"additionalProperties":false}},"required":["answer"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/firecrawl/scrape":{"post":{"operationId":"firecrawl_scrape","summary":"Firecrawl Scrape - Scrape a URL with full JavaScript rendering. Use as a fallback when WebFetch returns empty/JS-only content or 403s.","tags":["Firecrawl"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.012600"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"URL to scrape and extract content from"}},"required":["url"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"Final URL after redirects","type":"string"},"title":{"description":"Page title","type":"string"},"content":{"description":"Page content as markdown","type":"string"}},"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/text-search/partial":{"post":{"operationId":"google-maps_text-search_partial","summary":"Google Maps Text Search (Partial). Pagination: repeat the full original body including textQuery on every page; pageToken is only valid for the search that produced it.","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"textQuery":{"type":"string","minLength":1},"excludeFields":{"default":["photos"],"type":"array","items":{"type":"string"}},"pageToken":{"type":"string"},"locationBias":{"type":"object","properties":{"circle":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"description":"Latitude/longitude center point for the nearby search circle."},"radius":{"type":"number","minimum":0,"maximum":50000,"description":"Radius in meters. Google Places caps this at 50000."}},"required":["center","radius"]}},"required":["circle"]},"includedType":{"type":"string"},"maxResultCount":{"default":5,"type":"number","minimum":1,"maximum":5},"languageCode":{"default":"en","type":"string"},"openNow":{"type":"boolean"},"minRating":{"type":"number","minimum":0,"maximum":5},"priceLevels":{"type":"array","items":{"type":"string","enum":["PRICE_LEVEL_FREE","PRICE_LEVEL_INEXPENSIVE","PRICE_LEVEL_MODERATE","PRICE_LEVEL_EXPENSIVE","PRICE_LEVEL_VERY_EXPENSIVE"]}}},"required":["textQuery","maxResultCount"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"formattedAddress":{"type":"string"},"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"type":"array","items":{"type":"string"}},"primaryType":{"type":"string"},"photos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"widthPx":{"type":"number"},"heightPx":{"type":"number"}},"required":["name","widthPx","heightPx"],"additionalProperties":false}},"googleMapsUri":{"type":"string"},"businessStatus":{"type":"string"},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}},"additionalProperties":false},"rating":{"type":"number"},"userRatingCount":{"type":"number"},"priceLevel":{"type":"string"},"priceRange":{"type":"object","properties":{"startPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false},"endPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false}},"additionalProperties":false},"websiteUri":{"type":"string"},"nationalPhoneNumber":{"type":"string"},"internationalPhoneNumber":{"type":"string"},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"currentOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"reviews":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"rating":{"type":"number"},"text":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"originalText":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"authorAttribution":{"type":"object","properties":{"displayName":{"type":"string"},"uri":{"type":"string"},"photoUri":{"type":"string"}},"required":["displayName"],"additionalProperties":false},"publishTime":{"type":"string"},"relativePublishTimeDescription":{"type":"string"}},"additionalProperties":false}},"editorialSummary":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"delivery":{"type":"boolean"},"dineIn":{"type":"boolean"},"takeout":{"type":"boolean"},"curbsidePickup":{"type":"boolean"},"reservable":{"type":"boolean"},"outdoorSeating":{"type":"boolean"},"restroom":{"type":"boolean"},"liveMusic":{"type":"boolean"},"allowsDogs":{"type":"boolean"},"goodForChildren":{"type":"boolean"},"goodForGroups":{"type":"boolean"},"goodForWatchingSports":{"type":"boolean"},"servesBreakfast":{"type":"boolean"},"servesBrunch":{"type":"boolean"},"servesLunch":{"type":"boolean"},"servesDinner":{"type":"boolean"},"servesDessert":{"type":"boolean"},"servesCoffee":{"type":"boolean"},"servesVegetarianFood":{"type":"boolean"},"servesBeer":{"type":"boolean"},"servesWine":{"type":"boolean"},"servesCocktails":{"type":"boolean"},"parkingOptions":{"type":"object","properties":{"paidParkingLot":{"type":"boolean"},"paidStreetParking":{"type":"boolean"},"valetParking":{"type":"boolean"},"freeStreetParking":{"type":"boolean"},"freeParkingLot":{"type":"boolean"},"freeGarageParking":{"type":"boolean"},"paidGarageParking":{"type":"boolean"}},"additionalProperties":false},"paymentOptions":{"type":"object","properties":{"acceptsCreditCards":{"type":"boolean"},"acceptsDebitCards":{"type":"boolean"},"acceptsCashOnly":{"type":"boolean"},"acceptsNfc":{"type":"boolean"}},"additionalProperties":false}},"required":["id"],"additionalProperties":false}},"nextPageToken":{"type":"string"}},"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/text-search/full":{"post":{"operationId":"google-maps_text-search_full","summary":"Google Maps Text Search (Full). Pagination: repeat the full original body including textQuery on every page; pageToken is only valid for the search that produced it.","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.080000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"textQuery":{"type":"string","minLength":1},"excludeFields":{"default":["photos"],"type":"array","items":{"type":"string"}},"pageToken":{"type":"string"},"locationBias":{"type":"object","properties":{"circle":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"description":"Latitude/longitude center point for the nearby search circle."},"radius":{"type":"number","minimum":0,"maximum":50000,"description":"Radius in meters. Google Places caps this at 50000."}},"required":["center","radius"]}},"required":["circle"]},"includedType":{"type":"string"},"maxResultCount":{"default":5,"type":"number","minimum":1,"maximum":5},"languageCode":{"default":"en","type":"string"},"openNow":{"type":"boolean"},"minRating":{"type":"number","minimum":0,"maximum":5},"priceLevels":{"type":"array","items":{"type":"string","enum":["PRICE_LEVEL_FREE","PRICE_LEVEL_INEXPENSIVE","PRICE_LEVEL_MODERATE","PRICE_LEVEL_EXPENSIVE","PRICE_LEVEL_VERY_EXPENSIVE"]}}},"required":["textQuery","maxResultCount"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"formattedAddress":{"type":"string"},"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"type":"array","items":{"type":"string"}},"primaryType":{"type":"string"},"photos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"widthPx":{"type":"number"},"heightPx":{"type":"number"}},"required":["name","widthPx","heightPx"],"additionalProperties":false}},"googleMapsUri":{"type":"string"},"businessStatus":{"type":"string"},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}},"additionalProperties":false},"rating":{"type":"number"},"userRatingCount":{"type":"number"},"priceLevel":{"type":"string"},"priceRange":{"type":"object","properties":{"startPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false},"endPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false}},"additionalProperties":false},"websiteUri":{"type":"string"},"nationalPhoneNumber":{"type":"string"},"internationalPhoneNumber":{"type":"string"},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"currentOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"reviews":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"rating":{"type":"number"},"text":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"originalText":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"authorAttribution":{"type":"object","properties":{"displayName":{"type":"string"},"uri":{"type":"string"},"photoUri":{"type":"string"}},"required":["displayName"],"additionalProperties":false},"publishTime":{"type":"string"},"relativePublishTimeDescription":{"type":"string"}},"additionalProperties":false}},"editorialSummary":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"delivery":{"type":"boolean"},"dineIn":{"type":"boolean"},"takeout":{"type":"boolean"},"curbsidePickup":{"type":"boolean"},"reservable":{"type":"boolean"},"outdoorSeating":{"type":"boolean"},"restroom":{"type":"boolean"},"liveMusic":{"type":"boolean"},"allowsDogs":{"type":"boolean"},"goodForChildren":{"type":"boolean"},"goodForGroups":{"type":"boolean"},"goodForWatchingSports":{"type":"boolean"},"servesBreakfast":{"type":"boolean"},"servesBrunch":{"type":"boolean"},"servesLunch":{"type":"boolean"},"servesDinner":{"type":"boolean"},"servesDessert":{"type":"boolean"},"servesCoffee":{"type":"boolean"},"servesVegetarianFood":{"type":"boolean"},"servesBeer":{"type":"boolean"},"servesWine":{"type":"boolean"},"servesCocktails":{"type":"boolean"},"parkingOptions":{"type":"object","properties":{"paidParkingLot":{"type":"boolean"},"paidStreetParking":{"type":"boolean"},"valetParking":{"type":"boolean"},"freeStreetParking":{"type":"boolean"},"freeParkingLot":{"type":"boolean"},"freeGarageParking":{"type":"boolean"},"paidGarageParking":{"type":"boolean"}},"additionalProperties":false},"paymentOptions":{"type":"object","properties":{"acceptsCreditCards":{"type":"boolean"},"acceptsDebitCards":{"type":"boolean"},"acceptsCashOnly":{"type":"boolean"},"acceptsNfc":{"type":"boolean"}},"additionalProperties":false}},"required":["id"],"additionalProperties":false}},"nextPageToken":{"type":"string"}},"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/nearby-search/partial":{"post":{"operationId":"google-maps_nearby-search_partial","summary":"Google Maps Nearby Search (Partial). Finds places near a latitude/longitude using Google Places supported type filters. Use google-maps/text-search/partial for natural-language searches like \"wedding planner\" or \"event planner\".","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"excludeFields":{"default":["photos"],"type":"array","items":{"type":"string"}},"locationRestriction":{"type":"object","properties":{"circle":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"description":"Latitude/longitude center point for the nearby search circle."},"radius":{"type":"number","minimum":0,"maximum":50000,"description":"Radius in meters. Google Places caps this at 50000."}},"required":["center","radius"]}},"required":["circle"],"description":"Required search area. Use locationRestriction.circle.center and locationRestriction.circle.radius; do not send top-level center or radius fields."},"includedTypes":{"description":"Optional Google Places Table A place types only, e.g. restaurant, bar, store, real_estate_agency. Do not use natural-language categories like wedding_planner or event_planner; use google-maps/text-search/full for text queries.","maxItems":50,"type":"array","items":{"type":"string"}},"excludedTypes":{"description":"Optional Google Places Table A place types to exclude.","maxItems":50,"type":"array","items":{"type":"string"}},"maxResultCount":{"default":5,"type":"number","minimum":1,"maximum":5},"languageCode":{"default":"en","type":"string"},"rankPreference":{"default":"POPULARITY","type":"string","enum":["POPULARITY","DISTANCE"]}},"required":["locationRestriction"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"formattedAddress":{"type":"string"},"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"type":"array","items":{"type":"string"}},"primaryType":{"type":"string"},"photos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"widthPx":{"type":"number"},"heightPx":{"type":"number"}},"required":["name","widthPx","heightPx"],"additionalProperties":false}},"googleMapsUri":{"type":"string"},"businessStatus":{"type":"string"},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}},"additionalProperties":false},"rating":{"type":"number"},"userRatingCount":{"type":"number"},"priceLevel":{"type":"string"},"priceRange":{"type":"object","properties":{"startPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false},"endPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false}},"additionalProperties":false},"websiteUri":{"type":"string"},"nationalPhoneNumber":{"type":"string"},"internationalPhoneNumber":{"type":"string"},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"currentOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"reviews":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"rating":{"type":"number"},"text":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"originalText":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"authorAttribution":{"type":"object","properties":{"displayName":{"type":"string"},"uri":{"type":"string"},"photoUri":{"type":"string"}},"required":["displayName"],"additionalProperties":false},"publishTime":{"type":"string"},"relativePublishTimeDescription":{"type":"string"}},"additionalProperties":false}},"editorialSummary":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"delivery":{"type":"boolean"},"dineIn":{"type":"boolean"},"takeout":{"type":"boolean"},"curbsidePickup":{"type":"boolean"},"reservable":{"type":"boolean"},"outdoorSeating":{"type":"boolean"},"restroom":{"type":"boolean"},"liveMusic":{"type":"boolean"},"allowsDogs":{"type":"boolean"},"goodForChildren":{"type":"boolean"},"goodForGroups":{"type":"boolean"},"goodForWatchingSports":{"type":"boolean"},"servesBreakfast":{"type":"boolean"},"servesBrunch":{"type":"boolean"},"servesLunch":{"type":"boolean"},"servesDinner":{"type":"boolean"},"servesDessert":{"type":"boolean"},"servesCoffee":{"type":"boolean"},"servesVegetarianFood":{"type":"boolean"},"servesBeer":{"type":"boolean"},"servesWine":{"type":"boolean"},"servesCocktails":{"type":"boolean"},"parkingOptions":{"type":"object","properties":{"paidParkingLot":{"type":"boolean"},"paidStreetParking":{"type":"boolean"},"valetParking":{"type":"boolean"},"freeStreetParking":{"type":"boolean"},"freeParkingLot":{"type":"boolean"},"freeGarageParking":{"type":"boolean"},"paidGarageParking":{"type":"boolean"}},"additionalProperties":false},"paymentOptions":{"type":"object","properties":{"acceptsCreditCards":{"type":"boolean"},"acceptsDebitCards":{"type":"boolean"},"acceptsCashOnly":{"type":"boolean"},"acceptsNfc":{"type":"boolean"}},"additionalProperties":false}},"required":["id"],"additionalProperties":false}},"nextPageToken":{"type":"string"}},"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/nearby-search/full":{"post":{"operationId":"google-maps_nearby-search_full","summary":"Google Maps Nearby Search (Full). Finds places near a latitude/longitude using Google Places supported type filters. Use google-maps/text-search/full for natural-language searches like \"wedding planner\" or \"event planner\".","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.080000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"excludeFields":{"default":["photos"],"type":"array","items":{"type":"string"}},"locationRestriction":{"type":"object","properties":{"circle":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"description":"Latitude/longitude center point for the nearby search circle."},"radius":{"type":"number","minimum":0,"maximum":50000,"description":"Radius in meters. Google Places caps this at 50000."}},"required":["center","radius"]}},"required":["circle"],"description":"Required search area. Use locationRestriction.circle.center and locationRestriction.circle.radius; do not send top-level center or radius fields."},"includedTypes":{"description":"Optional Google Places Table A place types only, e.g. restaurant, bar, store, real_estate_agency. Do not use natural-language categories like wedding_planner or event_planner; use google-maps/text-search/full for text queries.","maxItems":50,"type":"array","items":{"type":"string"}},"excludedTypes":{"description":"Optional Google Places Table A place types to exclude.","maxItems":50,"type":"array","items":{"type":"string"}},"maxResultCount":{"default":5,"type":"number","minimum":1,"maximum":5},"languageCode":{"default":"en","type":"string"},"rankPreference":{"default":"POPULARITY","type":"string","enum":["POPULARITY","DISTANCE"]}},"required":["locationRestriction"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"formattedAddress":{"type":"string"},"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"type":"array","items":{"type":"string"}},"primaryType":{"type":"string"},"photos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"widthPx":{"type":"number"},"heightPx":{"type":"number"}},"required":["name","widthPx","heightPx"],"additionalProperties":false}},"googleMapsUri":{"type":"string"},"businessStatus":{"type":"string"},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}},"additionalProperties":false},"rating":{"type":"number"},"userRatingCount":{"type":"number"},"priceLevel":{"type":"string"},"priceRange":{"type":"object","properties":{"startPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false},"endPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false}},"additionalProperties":false},"websiteUri":{"type":"string"},"nationalPhoneNumber":{"type":"string"},"internationalPhoneNumber":{"type":"string"},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"currentOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"reviews":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"rating":{"type":"number"},"text":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"originalText":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"authorAttribution":{"type":"object","properties":{"displayName":{"type":"string"},"uri":{"type":"string"},"photoUri":{"type":"string"}},"required":["displayName"],"additionalProperties":false},"publishTime":{"type":"string"},"relativePublishTimeDescription":{"type":"string"}},"additionalProperties":false}},"editorialSummary":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"delivery":{"type":"boolean"},"dineIn":{"type":"boolean"},"takeout":{"type":"boolean"},"curbsidePickup":{"type":"boolean"},"reservable":{"type":"boolean"},"outdoorSeating":{"type":"boolean"},"restroom":{"type":"boolean"},"liveMusic":{"type":"boolean"},"allowsDogs":{"type":"boolean"},"goodForChildren":{"type":"boolean"},"goodForGroups":{"type":"boolean"},"goodForWatchingSports":{"type":"boolean"},"servesBreakfast":{"type":"boolean"},"servesBrunch":{"type":"boolean"},"servesLunch":{"type":"boolean"},"servesDinner":{"type":"boolean"},"servesDessert":{"type":"boolean"},"servesCoffee":{"type":"boolean"},"servesVegetarianFood":{"type":"boolean"},"servesBeer":{"type":"boolean"},"servesWine":{"type":"boolean"},"servesCocktails":{"type":"boolean"},"parkingOptions":{"type":"object","properties":{"paidParkingLot":{"type":"boolean"},"paidStreetParking":{"type":"boolean"},"valetParking":{"type":"boolean"},"freeStreetParking":{"type":"boolean"},"freeParkingLot":{"type":"boolean"},"freeGarageParking":{"type":"boolean"},"paidGarageParking":{"type":"boolean"}},"additionalProperties":false},"paymentOptions":{"type":"object","properties":{"acceptsCreditCards":{"type":"boolean"},"acceptsDebitCards":{"type":"boolean"},"acceptsCashOnly":{"type":"boolean"},"acceptsNfc":{"type":"boolean"}},"additionalProperties":false}},"required":["id"],"additionalProperties":false}},"nextPageToken":{"type":"string"}},"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/place-details/partial":{"get":{"operationId":"google-maps_place-details_partial","summary":"Google Maps Place Details (Partial)","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"parameters":[{"in":"query","name":"placeId","schema":{"type":"string","minLength":1},"required":true},{"in":"query","name":"excludeFields","schema":{"default":["photos"],"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"in":"query","name":"languageCode","schema":{"default":"en","type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"formattedAddress":{"type":"string"},"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"type":"array","items":{"type":"string"}},"primaryType":{"type":"string"},"photos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"widthPx":{"type":"number"},"heightPx":{"type":"number"}},"required":["name","widthPx","heightPx"],"additionalProperties":false}},"googleMapsUri":{"type":"string"},"businessStatus":{"type":"string"},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}},"additionalProperties":false},"rating":{"type":"number"},"userRatingCount":{"type":"number"},"priceLevel":{"type":"string"},"priceRange":{"type":"object","properties":{"startPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false},"endPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false}},"additionalProperties":false},"websiteUri":{"type":"string"},"nationalPhoneNumber":{"type":"string"},"internationalPhoneNumber":{"type":"string"},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"currentOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"reviews":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"rating":{"type":"number"},"text":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"originalText":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"authorAttribution":{"type":"object","properties":{"displayName":{"type":"string"},"uri":{"type":"string"},"photoUri":{"type":"string"}},"required":["displayName"],"additionalProperties":false},"publishTime":{"type":"string"},"relativePublishTimeDescription":{"type":"string"}},"additionalProperties":false}},"editorialSummary":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"delivery":{"type":"boolean"},"dineIn":{"type":"boolean"},"takeout":{"type":"boolean"},"curbsidePickup":{"type":"boolean"},"reservable":{"type":"boolean"},"outdoorSeating":{"type":"boolean"},"restroom":{"type":"boolean"},"liveMusic":{"type":"boolean"},"allowsDogs":{"type":"boolean"},"goodForChildren":{"type":"boolean"},"goodForGroups":{"type":"boolean"},"goodForWatchingSports":{"type":"boolean"},"servesBreakfast":{"type":"boolean"},"servesBrunch":{"type":"boolean"},"servesLunch":{"type":"boolean"},"servesDinner":{"type":"boolean"},"servesDessert":{"type":"boolean"},"servesCoffee":{"type":"boolean"},"servesVegetarianFood":{"type":"boolean"},"servesBeer":{"type":"boolean"},"servesWine":{"type":"boolean"},"servesCocktails":{"type":"boolean"},"parkingOptions":{"type":"object","properties":{"paidParkingLot":{"type":"boolean"},"paidStreetParking":{"type":"boolean"},"valetParking":{"type":"boolean"},"freeStreetParking":{"type":"boolean"},"freeParkingLot":{"type":"boolean"},"freeGarageParking":{"type":"boolean"},"paidGarageParking":{"type":"boolean"}},"additionalProperties":false},"paymentOptions":{"type":"object","properties":{"acceptsCreditCards":{"type":"boolean"},"acceptsDebitCards":{"type":"boolean"},"acceptsCashOnly":{"type":"boolean"},"acceptsNfc":{"type":"boolean"}},"additionalProperties":false}},"required":["id"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/place-details/full":{"get":{"operationId":"google-maps_place-details_full","summary":"Google Maps Place Details (Full)","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"parameters":[{"in":"query","name":"placeId","schema":{"type":"string","minLength":1},"required":true},{"in":"query","name":"excludeFields","schema":{"default":["photos"],"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"in":"query","name":"languageCode","schema":{"default":"en","type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"formattedAddress":{"type":"string"},"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"type":"array","items":{"type":"string"}},"primaryType":{"type":"string"},"photos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"widthPx":{"type":"number"},"heightPx":{"type":"number"}},"required":["name","widthPx","heightPx"],"additionalProperties":false}},"googleMapsUri":{"type":"string"},"businessStatus":{"type":"string"},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}},"additionalProperties":false},"rating":{"type":"number"},"userRatingCount":{"type":"number"},"priceLevel":{"type":"string"},"priceRange":{"type":"object","properties":{"startPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false},"endPrice":{"type":"object","properties":{"currencyCode":{"type":"string"},"units":{"type":"string"}},"required":["currencyCode","units"],"additionalProperties":false}},"additionalProperties":false},"websiteUri":{"type":"string"},"nationalPhoneNumber":{"type":"string"},"internationalPhoneNumber":{"type":"string"},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"currentOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"type":"array","items":{"type":"string"}},"periods":{"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false},"close":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"minute":{"type":"number"}},"required":["day","hour","minute"],"additionalProperties":false}},"additionalProperties":false}}},"additionalProperties":false},"reviews":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"rating":{"type":"number"},"text":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"originalText":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"authorAttribution":{"type":"object","properties":{"displayName":{"type":"string"},"uri":{"type":"string"},"photoUri":{"type":"string"}},"required":["displayName"],"additionalProperties":false},"publishTime":{"type":"string"},"relativePublishTimeDescription":{"type":"string"}},"additionalProperties":false}},"editorialSummary":{"type":"object","properties":{"text":{"type":"string"},"languageCode":{"type":"string"}},"required":["text","languageCode"],"additionalProperties":false},"delivery":{"type":"boolean"},"dineIn":{"type":"boolean"},"takeout":{"type":"boolean"},"curbsidePickup":{"type":"boolean"},"reservable":{"type":"boolean"},"outdoorSeating":{"type":"boolean"},"restroom":{"type":"boolean"},"liveMusic":{"type":"boolean"},"allowsDogs":{"type":"boolean"},"goodForChildren":{"type":"boolean"},"goodForGroups":{"type":"boolean"},"goodForWatchingSports":{"type":"boolean"},"servesBreakfast":{"type":"boolean"},"servesBrunch":{"type":"boolean"},"servesLunch":{"type":"boolean"},"servesDinner":{"type":"boolean"},"servesDessert":{"type":"boolean"},"servesCoffee":{"type":"boolean"},"servesVegetarianFood":{"type":"boolean"},"servesBeer":{"type":"boolean"},"servesWine":{"type":"boolean"},"servesCocktails":{"type":"boolean"},"parkingOptions":{"type":"object","properties":{"paidParkingLot":{"type":"boolean"},"paidStreetParking":{"type":"boolean"},"valetParking":{"type":"boolean"},"freeStreetParking":{"type":"boolean"},"freeParkingLot":{"type":"boolean"},"freeGarageParking":{"type":"boolean"},"paidGarageParking":{"type":"boolean"}},"additionalProperties":false},"paymentOptions":{"type":"object","properties":{"acceptsCreditCards":{"type":"boolean"},"acceptsDebitCards":{"type":"boolean"},"acceptsCashOnly":{"type":"boolean"},"acceptsNfc":{"type":"boolean"}},"additionalProperties":false}},"required":["id"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/solar/building-insights":{"get":{"operationId":"google-maps_solar_building-insights","summary":"Google Solar API - Closest building roof insights including imageryDate","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"parameters":[{"in":"query","name":"latitude","schema":{"type":"number","minimum":-90,"maximum":90},"required":true},{"in":"query","name":"longitude","schema":{"type":"number","minimum":-180,"maximum":180},"required":true},{"in":"query","name":"requiredQuality","schema":{"default":"HIGH","type":"string","enum":["LOW","MEDIUM","HIGH"]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"center":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"imageryDate":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"}},"required":["year","month","day"],"additionalProperties":{}},"imageryProcessedDate":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"}},"required":["year","month","day"],"additionalProperties":{}},"postalCode":{"type":"string"},"administrativeArea":{"type":"string"},"statisticalArea":{"type":"string"},"regionCode":{"type":"string"},"imageryQuality":{"type":"string"},"boundingBox":{"type":"object","properties":{"sw":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"ne":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false}},"additionalProperties":{}},"solarPotential":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/solar/data-layers":{"get":{"operationId":"google-maps_solar_data-layers","summary":"Google Solar API - Aerial GeoTIFF data layers (rgbUrl, dsmUrl, fluxUrl) with imageryDate","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.080000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"parameters":[{"in":"query","name":"latitude","schema":{"type":"number","minimum":-90,"maximum":90},"required":true},{"in":"query","name":"longitude","schema":{"type":"number","minimum":-180,"maximum":180},"required":true},{"in":"query","name":"radiusMeters","schema":{"default":50,"type":"number","minimum":0.1,"maximum":175}},{"in":"query","name":"view","schema":{"default":"FULL_LAYERS","type":"string","enum":["DSM_LAYER","IMAGERY_LAYERS","IMAGERY_AND_ANNUAL_FLUX_LAYERS","IMAGERY_AND_ALL_FLUX_LAYERS","FULL_LAYERS"]}},{"in":"query","name":"requiredQuality","schema":{"default":"HIGH","type":"string","enum":["LOW","MEDIUM","HIGH"]}},{"in":"query","name":"pixelSizeMeters","schema":{"default":0.25,"type":"number"}},{"in":"query","name":"exactQualityRequired","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"imageryDate":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"}},"required":["year","month","day"],"additionalProperties":{}},"imageryProcessedDate":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"}},"required":["year","month","day"],"additionalProperties":{}},"dsmUrl":{"type":"string"},"rgbUrl":{"type":"string"},"maskUrl":{"type":"string"},"annualFluxUrl":{"type":"string"},"monthlyFluxUrl":{"type":"string"},"hourlyShadeUrls":{"type":"array","items":{"type":"string"}},"imageryQuality":{"type":"string"}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/solar/rgb-image":{"get":{"operationId":"google-maps_solar_rgb-image","summary":"Google Solar API - Render a Solar GeoTIFF layer (rgb, dsm, flux, shade, or mask) as PNG/JPEG. Pass either a GeoTIFF id or latitude/longitude. Returns JSON with a public image url and metadata. monthlyFlux supports one month or a 4x3 grid; hourlyShade supports one hour or a 6x4 grid.","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"parameters":[{"in":"query","name":"id","schema":{"description":"GeoTIFF asset id (Mode A). Required if latitude/longitude are not provided.","type":"string"},"description":"GeoTIFF asset id (Mode A). Required if latitude/longitude are not provided."},{"in":"query","name":"latitude","schema":{"description":"Latitude (Mode B). Required with longitude if id is not provided.","type":"number","minimum":-90,"maximum":90},"description":"Latitude (Mode B). Required with longitude if id is not provided."},{"in":"query","name":"longitude","schema":{"description":"Longitude (Mode B). Required with latitude if id is not provided.","type":"number","minimum":-180,"maximum":180},"description":"Longitude (Mode B). Required with latitude if id is not provided."},{"in":"query","name":"radiusMeters","schema":{"default":30,"type":"number","minimum":0.1,"maximum":100}},{"in":"query","name":"layer","schema":{"default":"rgb","type":"string","enum":["rgb","dsm","annualFlux","monthlyFlux","hourlyShade","mask"]}},{"in":"query","name":"month","schema":{"description":"Month (1-12). For monthlyFlux: selects one band (omit for 4×3 grid). For hourlyShade in Mode B: required.","type":"integer","minimum":1,"maximum":12},"description":"Month (1-12). For monthlyFlux: selects one band (omit for 4×3 grid). For hourlyShade in Mode B: required."},{"in":"query","name":"hour","schema":{"description":"Hour (0-23). For hourlyShade: selects one band (omit for 6×4 grid).","type":"integer","minimum":0,"maximum":23},"description":"Hour (0-23). For hourlyShade: selects one band (omit for 6×4 grid)."},{"in":"query","name":"format","schema":{"default":"png","type":"string","enum":["png","jpeg"]}},{"in":"query","name":"scale","schema":{"default":1,"type":"integer","minimum":1,"maximum":2}},{"in":"query","name":"crop","schema":{"default":false,"type":"boolean"}},{"in":"query","name":"quality","schema":{"default":85,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful response"},"402":{"description":"Payment Required"}}}},"/api/google-maps/aerial-view/lookup-video":{"get":{"operationId":"google-maps_aerial-view_lookup-video","summary":"Google Aerial View - Look up a previously rendered flyover video by address or videoId","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"parameters":[{"in":"query","name":"address","schema":{"description":"Street address. Required if videoId is not provided.","type":"string","minLength":1},"description":"Street address. Required if videoId is not provided."},{"in":"query","name":"videoId","schema":{"description":"Video ID from a previous render. Required if address is not provided.","type":"string","minLength":1},"description":"Video ID from a previous render. Required if address is not provided."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"videoId":{"type":"string"},"metadata":{"type":"object","properties":{"videoId":{"type":"string"},"captureDate":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"}},"additionalProperties":{}},"duration":{"type":"string"},"frameRate":{"type":"number"},"viewCount":{"type":"string"}},"additionalProperties":{}},"uris":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"landscapeUri":{"type":"string"},"portraitUri":{"type":"string"},"thumbnailUri":{"type":"string"},"imageSize":{"type":"object","properties":{"widthPixels":{"type":"number"},"heightPixels":{"type":"number"}},"additionalProperties":{}}},"additionalProperties":{}}},"error":{"type":"object","properties":{"code":{"type":"number"},"message":{"type":"string"},"status":{"type":"string"}},"additionalProperties":{}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/google-maps/aerial-view/render-video":{"post":{"operationId":"google-maps_aerial-view_render-video","summary":"Google Aerial View - Request rendering of a new aerial flyover video for an address","tags":["Google Maps"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":1}},"required":["address"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"videoId":{"type":"string"},"metadata":{"type":"object","properties":{"videoId":{"type":"string"},"captureDate":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"}},"additionalProperties":{}},"duration":{"type":"string"},"frameRate":{"type":"number"},"viewCount":{"type":"string"}},"additionalProperties":{}},"uris":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"landscapeUri":{"type":"string"},"portraitUri":{"type":"string"},"thumbnailUri":{"type":"string"},"imageSize":{"type":"object","properties":{"widthPixels":{"type":"number"},"heightPixels":{"type":"number"}},"additionalProperties":{}}},"additionalProperties":{}}},"error":{"type":"object","properties":{"code":{"type":"number"},"message":{"type":"string"},"status":{"type":"string"}},"additionalProperties":{}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/serper/news":{"post":{"operationId":"serper_news","summary":"Serper - Google News search","tags":["Serper"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.040000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"description":"Google search query"},"num":{"description":"Number of results to return (Serper `num`)","type":"integer","minimum":1,"maximum":100},"gl":{"description":"Country code (e.g. 'us')","type":"string","minLength":2,"maxLength":2},"hl":{"description":"Language code (e.g. 'en')","type":"string","minLength":2},"location":{"description":"Location (e.g. 'New York, NY')","type":"string","minLength":1}},"required":["q"],"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"searchParameters":{"type":"object","properties":{"q":{"type":"string"},"gl":{"type":"string"},"hl":{"type":"string"},"num":{"type":"number"},"type":{"type":"string"}},"additionalProperties":{}},"news":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"link":{"type":"string"},"snippet":{"type":"string"},"date":{"type":"string"},"source":{"type":"string"},"imageUrl":{"type":"string"}},"additionalProperties":{}}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/serper/shopping":{"post":{"operationId":"serper_shopping","summary":"Serper - Google Shopping search","tags":["Serper"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.040000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"description":"Google search query"},"num":{"description":"Number of results to return (Serper `num`)","type":"integer","minimum":1,"maximum":100},"gl":{"description":"Country code (e.g. 'us')","type":"string","minLength":2,"maxLength":2},"hl":{"description":"Language code (e.g. 'en')","type":"string","minLength":2},"location":{"description":"Location (e.g. 'New York, NY')","type":"string","minLength":1}},"required":["q"],"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"searchParameters":{"type":"object","properties":{"q":{"type":"string"},"gl":{"type":"string"},"hl":{"type":"string"},"num":{"type":"number"},"type":{"type":"string"}},"additionalProperties":{}},"shopping":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"link":{"type":"string"},"snippet":{"type":"string"}},"additionalProperties":{}}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/serper/images":{"post":{"operationId":"serper_images","summary":"Serper - Google Images search","tags":["Serper"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.040000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"description":"Google search query"},"num":{"description":"Number of results to return (Serper `num`)","type":"integer","minimum":1,"maximum":100},"gl":{"description":"Country code (e.g. 'us')","type":"string","minLength":2,"maxLength":2},"hl":{"description":"Language code (e.g. 'en')","type":"string","minLength":2},"location":{"description":"Location (e.g. 'New York, NY')","type":"string","minLength":1}},"required":["q"],"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"searchParameters":{"type":"object","properties":{"q":{"type":"string"},"gl":{"type":"string"},"hl":{"type":"string"},"num":{"type":"number"},"type":{"type":"string"}},"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"imageUrl":{"type":"string"},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"thumbnailUrl":{"type":"string"},"thumbnailWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"thumbnailHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"domain":{"type":"string"},"link":{"type":"string"},"googleUrl":{"type":"string"}},"additionalProperties":{}}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/serper/people-image-search":{"post":{"operationId":"serper_people-image-search","summary":"Serper - Google Images search tuned for people/headshots. For ambiguous people, resolve the profile slug/company/title first. LinkedIn photos may be non-public; if LinkedIn reports a default avatar or the first search fails, research the profile for alternate disambiguators and retry with public non-LinkedIn source terms.","tags":["Serper"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.040000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"description":"Exact-name + company/context query, e.g. `\"Jane Doe\" \"Acme\" LinkedIn headshot`. For ambiguous people, resolve the profile slug/company/title first. LinkedIn photos may be non-public; if a scraper returns default_avatar: true or the first search fails, research the profile for alternate disambiguators and retry with public non-LinkedIn source terms."},"num":{"description":"Number of results to return (Serper `num`)","type":"integer","minimum":1,"maximum":100},"gl":{"description":"Country code (e.g. 'us')","type":"string","minLength":2,"maxLength":2},"hl":{"description":"Language code (e.g. 'en')","type":"string","minLength":2},"location":{"description":"Location (e.g. 'New York, NY')","type":"string","minLength":1}},"required":["q"],"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"searchParameters":{"type":"object","properties":{"q":{"type":"string"},"gl":{"type":"string"},"hl":{"type":"string"},"num":{"type":"number"},"type":{"type":"string"}},"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"imageUrl":{"type":"string"},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"thumbnailUrl":{"type":"string"},"thumbnailWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"thumbnailHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"domain":{"type":"string"},"link":{"type":"string"},"googleUrl":{"type":"string"}},"additionalProperties":{}}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/serper/lens":{"post":{"operationId":"serper_lens","summary":"Serper - Google Lens reverse image search","tags":["Serper"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.200000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public URL of the image to reverse-search with Google Lens"},"gl":{"description":"Country code (e.g. 'us')","type":"string","minLength":2,"maxLength":2},"hl":{"description":"Language code (e.g. 'en')","type":"string","minLength":2}},"required":["url"],"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"searchParameters":{"type":"object","properties":{"q":{"type":"string"},"gl":{"type":"string"},"hl":{"type":"string"},"num":{"type":"number"},"type":{"type":"string"}},"additionalProperties":{}},"organic":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"link":{"type":"string"},"source":{"type":"string"},"imageUrl":{"type":"string"},"thumbnailUrl":{"type":"string"},"price":{"type":"string"},"priceRange":{"type":"string"},"snippet":{"type":"string"}},"additionalProperties":{}}}},"additionalProperties":{}}}}},"402":{"description":"Payment Required"}}}},"/api/whitepages/person-search":{"post":{"operationId":"whitepages_person-search","summary":"Whitepages Person Search - Find people by name, phone, address","tags":["Whitepages"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.220000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Full name to search for","type":"string"},"first_name":{"description":"First name","type":"string"},"last_name":{"description":"Last name","type":"string"},"phone":{"description":"Phone number","type":"string"},"street":{"description":"Street address","type":"string"},"city":{"description":"City name","type":"string"},"state_code":{"description":"Two-letter state code","type":"string"},"zipcode":{"description":"ZIP code","type":"string"},"min_age":{"description":"Minimum age filter","type":"number"},"max_age":{"description":"Maximum age filter","type":"number"},"radius":{"description":"Radius in miles from address (max 100)","type":"number","maximum":100},"include_historical_locations":{"description":"Include historical addresses in radius search","type":"boolean"},"excludeFields":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"persons":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"aliases":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_dead":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"current_addresses":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"line1":{"anyOf":[{"type":"string"},{"type":"null"}]},"line2":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"zip":{"anyOf":[{"type":"string"},{"type":"null"}]},"house":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"street_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"county":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"historic_addresses":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"line1":{"anyOf":[{"type":"string"},{"type":"null"}]},"line2":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"zip":{"anyOf":[{"type":"string"},{"type":"null"}]},"house":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"street_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"county":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"owned_properties":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"line1":{"anyOf":[{"type":"string"},{"type":"null"}]},"line2":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"zip":{"anyOf":[{"type":"string"},{"type":"null"}]},"house":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"street_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"county":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"phones":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"number":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"emails":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"date_of_birth":{"anyOf":[{"type":"string"},{"type":"null"}]},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"relatives":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]}},"additionalProperties":{}}}},"required":["persons"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/whitepages/property-search":{"post":{"operationId":"whitepages_property-search","summary":"Whitepages Property Search — property ownership and residents by address. Use street (aliases: address, street_line, street_address), state_code (not state), zipcode (not zip/postal_code). No indexed property record returns 200 { result: null }, not 404.","tags":["Whitepages"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.220000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"street":{"type":"string","description":"Street address"},"city":{"description":"City name","type":"string"},"state_code":{"description":"Two-letter state code. This must be a valid two-letter state code such as CA, NY, etc.","type":"string"},"zipcode":{"description":"ZIP code","type":"string"},"excludeFields":{"type":"array","items":{"type":"string"}}},"required":["street"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"anyOf":[{"type":"object","properties":{"property_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"apn":{"anyOf":[{"type":"string"},{"type":"null"}]},"property_address":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"line1":{"anyOf":[{"type":"string"},{"type":"null"}]},"line2":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"zip":{"anyOf":[{"type":"string"},{"type":"null"}]},"house":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"street_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"county":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"mailing_address":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"line1":{"anyOf":[{"type":"string"},{"type":"null"}]},"line2":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"zip":{"anyOf":[{"type":"string"},{"type":"null"}]},"house":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"street_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"county":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"geolocation":{"anyOf":[{"type":"object","properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lng":{"anyOf":[{"type":"number"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"ownership_info":{"anyOf":[{"type":"object","properties":{"owner_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"business_owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"person_owners":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_addresses":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"line1":{"anyOf":[{"type":"string"},{"type":"null"}]},"line2":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"zip":{"anyOf":[{"type":"string"},{"type":"null"}]},"house":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"street_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"county":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"phones":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"number":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"emails":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"residents":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"phones":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"number":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"emails":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"property_details":{"anyOf":[{"type":"object","properties":{"year_built":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"}]},{"type":"null"}]},"bedrooms":{"anyOf":[{"type":"number"},{"type":"null"}]},"bathrooms":{"anyOf":[{"type":"number"},{"type":"null"}]},"building_area":{"anyOf":[{"type":"number"},{"type":"null"}]},"lot_size":{"anyOf":[{"type":"number"},{"type":"null"}]},"property_use":{"anyOf":[{"type":"string"},{"type":"null"}]},"building_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"rooms":{"anyOf":[{"type":"number"},{"type":"null"}]},"pool":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"fireplace":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"air_conditioning":{"anyOf":[{"type":"string"},{"type":"null"}]},"heating":{"anyOf":[{"type":"string"},{"type":"null"}]},"basement":{"anyOf":[{"type":"string"},{"type":"null"}]},"garage_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"parking_spaces":{"anyOf":[{"type":"number"},{"type":"null"}]},"stories":{"anyOf":[{"type":"number"},{"type":"null"}]},"construction_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"roof_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"exterior_walls":{"anyOf":[{"type":"string"},{"type":"null"}]},"flooring":{"anyOf":[{"type":"string"},{"type":"null"}]},"water_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"sewer":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"market_value":{"anyOf":[{"type":"object","properties":{"estimated_value":{"anyOf":[{"type":"number"},{"type":"null"}]},"estimated_value_range_low":{"anyOf":[{"type":"number"},{"type":"null"}]},"estimated_value_range_high":{"anyOf":[{"type":"number"},{"type":"null"}]},"value_date":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"sale_history":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"sale_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"sale_price":{"anyOf":[{"type":"number"},{"type":"null"}]},"buyer_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"seller_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"document_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"tax_info":{"anyOf":[{"type":"object","properties":{"assessed_value":{"anyOf":[{"type":"number"},{"type":"null"}]},"assessment_year":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"}]},{"type":"null"}]},"market_value":{"anyOf":[{"type":"number"},{"type":"null"}]},"tax_amount":{"anyOf":[{"type":"number"},{"type":"null"}]},"tax_year":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"}]},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]}},"required":["result"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/reddit/search":{"post":{"operationId":"reddit_search","summary":"Reddit Search - Search Reddit posts","tags":["Reddit"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Search term for Reddit posts"},"sort":{"default":"relevance","description":"Sort order for results","type":"string","enum":["relevance","new","top","comment_count"]},"timeframe":{"default":"all","description":"Time range filter","type":"string","enum":["all","day","week","month","year"]},"after":{"description":"Pagination cursor","type":"string"},"maxResults":{"default":10,"description":"Maximum results to return","type":"number","minimum":1,"maximum":25}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"posts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"subreddit":{"type":"string"},"score":{"type":"number"},"numComments":{"type":"number"},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"selftext":{"anyOf":[{"type":"string"},{"type":"null"}]},"selftextTruncated":{"type":"boolean"},"permalink":{"type":"string"}},"required":["id","title","author","subreddit","score","numComments","createdAt","selftext","selftextTruncated","permalink"],"additionalProperties":false}},"after":{"anyOf":[{"type":"string"},{"type":"null"}]},"searchContext":{"type":"object","properties":{"query":{"type":"string"},"resultCount":{"type":"number"}},"required":["query","resultCount"],"additionalProperties":false}},"required":["posts","after","searchContext"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/reddit/post-comments":{"post":{"operationId":"reddit_post-comments","summary":"Reddit Post Comments - Get post details and comments","tags":["Reddit"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Full Reddit post URL"},"cursor":{"description":"Pagination cursor for more comments","type":"string"}},"required":["url"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"subreddit":{"type":"string"},"score":{"type":"number"},"numComments":{"type":"number"},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"selftext":{"anyOf":[{"type":"string"},{"type":"null"}]},"permalink":{"type":"string"}},"required":["id","title","author","subreddit","score","numComments","createdAt","selftext","permalink"],"additionalProperties":false},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"author":{"type":"string"},"body":{"type":"string"},"bodyTruncated":{"type":"boolean"},"score":{"type":"number"},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","author","body","bodyTruncated","score","createdAt"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["post","comments","hasMore","cursor"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/hunter/email-verifier":{"post":{"operationId":"hunter_email-verifier","summary":"Hunter - Verify email deliverability. Fast and cached verifications return the final result immediately; Hunter pending responses return a job id to poll with SIWX.","tags":["Hunter"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.030000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Email address to verify"}},"required":["email"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["valid","invalid","accept_all","webmail","disposable","unknown"]},"score":{"type":"number"},"email":{"type":"string"},"regexp":{"type":"boolean"},"gibberish":{"type":"boolean"},"disposable":{"type":"boolean"},"webmail":{"type":"boolean"},"mx_records":{"type":"boolean"},"smtp_server":{"type":"boolean"},"smtp_check":{"type":"boolean"},"accept_all":{"type":"boolean"},"block":{"type":"boolean"},"sources":{"default":[],"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"uri":{"type":"string"},"extracted_on":{"type":"string"},"last_seen_on":{"type":"string"},"still_on_page":{"type":"boolean"}},"required":["domain","uri","extracted_on","last_seen_on","still_on_page"],"additionalProperties":false}}},"required":["status","score","email","regexp","gibberish","disposable","webmail","mx_records","smtp_server","smtp_check","accept_all","block","sources"],"additionalProperties":false},{"type":"object","properties":{"jobId":{"type":"string","description":"StableEnrich job id for the pending verification"},"status":{"type":"string","const":"pending"},"pollUrl":{"type":"string","format":"uri","description":"SIWX-authenticated URL to poll"},"retryAfterSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["jobId","status","pollUrl","retryAfterSeconds"],"additionalProperties":false}]}}}},"402":{"description":"Payment Required"}}}},"/api/hunter/email-verifier/jobs/{jobId}":{"get":{"operationId":"hunter_email-verifier_jobs_status","summary":"Poll Hunter email verifier job status. Requires SIWX wallet auth from the same wallet that paid for the verification.","tags":["Hunter"],"security":[{"siwx":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["pending","completed","failed"]},"pollUrl":{"type":"string","format":"uri"},"retryAfterSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"result":{"type":"object","properties":{"status":{"type":"string","enum":["valid","invalid","accept_all","webmail","disposable","unknown"]},"score":{"type":"number"},"email":{"type":"string"},"regexp":{"type":"boolean"},"gibberish":{"type":"boolean"},"disposable":{"type":"boolean"},"webmail":{"type":"boolean"},"mx_records":{"type":"boolean"},"smtp_server":{"type":"boolean"},"smtp_check":{"type":"boolean"},"accept_all":{"type":"boolean"},"block":{"type":"boolean"},"sources":{"default":[],"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"uri":{"type":"string"},"extracted_on":{"type":"string"},"last_seen_on":{"type":"string"},"still_on_page":{"type":"boolean"}},"required":["domain","uri","extracted_on","last_seen_on","still_on_page"],"additionalProperties":false}}},"required":["status","score","email","regexp","gibberish","disposable","webmail","mx_records","smtp_server","smtp_check","accept_all","block","sources"],"additionalProperties":false},"error":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["jobId","status","pollUrl","createdAt","updatedAt"],"additionalProperties":false}}}},"402":{"description":"Authentication Required"}}}},"/api/minerva/resolve":{"post":{"operationId":"minerva_resolve","summary":"Minerva Resolve - Resolve person identity to a Minerva PID and LinkedIn URL. Supports fuzzy matching and reverse lookup by email or phone only.","tags":["Minerva"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"records":{"minItems":1,"type":"array","items":{"type":"object","properties":{"record_id":{"description":"Your unique identifier for this record","type":"string"},"first_name":{"description":"Person's first name","type":"string"},"middle_name":{"description":"Person's middle name","type":"string"},"last_name":{"description":"Person's last name","type":"string"},"full_name":{"description":"Person's full name","type":"string"},"name_suffix":{"description":"Name suffix (e.g., \"Jr.\", \"Sr.\", \"III\")","type":"string"},"emails":{"description":"Array of email addresses","type":"array","items":{"type":"string"}},"phones":{"description":"Array of phone numbers","type":"array","items":{"type":"string"}}}},"description":"Array of person records to resolve. Maximum 1000 per request."},"match_condition_fields":{"description":"Fields that must be present for a match to be returned. Valid options: \"minerva_pid\", \"linkedin_url\"","type":"array","items":{"type":"string"}}},"required":["records"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"api_request_id":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"record_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_match":{"type":"boolean"},"minerva_pid":{"anyOf":[{"type":"string"},{"type":"null"}]},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"match_score":{"anyOf":[{"type":"number"},{"type":"null"}]},"is_resolvable_record":{"type":"boolean"},"validation_errors":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["is_match"],"additionalProperties":false}},"request_completed_at":{"type":"string"}},"required":["api_request_id","results","request_completed_at"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/minerva/enrich":{"post":{"operationId":"minerva_enrich","summary":"Minerva Enrich - Enrich person records with demographics, work history, education, contact info, addresses, and financial signals. Supports lookup by Minerva PID, LinkedIn URL, or name/email/phone. Field aliases: email→emails in match_condition_fields, education→education_experience in return_fields.","tags":["Minerva"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.050000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"records":{"minItems":1,"type":"array","items":{"type":"object","properties":{"record_id":{"description":"Your unique identifier for this record","type":"string"},"first_name":{"description":"Person's first name","type":"string"},"middle_name":{"description":"Person's middle name","type":"string"},"last_name":{"description":"Person's last name","type":"string"},"full_name":{"description":"Person's full name","type":"string"},"name_suffix":{"description":"Name suffix (e.g., \"Jr.\", \"Sr.\", \"III\")","type":"string"},"emails":{"description":"Array of email addresses","type":"array","items":{"type":"string"}},"phones":{"description":"Array of phone numbers","type":"array","items":{"type":"string"}},"minerva_pid":{"description":"Direct Minerva Person ID lookup for instant enrichment","type":"string"},"linkedin_url":{"description":"LinkedIn profile URL for direct enrichment","type":"string"}}},"description":"Array of person records to enrich. Maximum 500 per request."},"match_condition_fields":{"description":"Fields that must be present for a match to be returned. Alias: \"email\" → \"emails\". Valid options include \"emails\", \"linkedin_url\", \"gender\", \"estimated_income_range\", \"estimated_wealth_range\", \"personal_email\", \"professional_email\", \"phone\", \"mobile_phone\", \"home_ownership_status\".","type":"array","items":{"type":"string"}},"return_fields":{"description":"Fields to return beyond base fields. Alias: \"education\" → \"education_experience\". Omit to return all fields. Example: [\"full_name\", \"personal_emails\", \"phones\", \"work_experience\"].","type":"array","items":{"type":"string"}}},"required":["records"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"api_request_id":{"type":"string"},"request_completed_at":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"record_id":{"type":"string"},"is_match":{"type":"boolean"},"minerva_pid":{"anyOf":[{"type":"string"},{"type":"null"}]},"match_score":{"anyOf":[{"type":"number"},{"type":"null"}]},"validation_errors":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"name_suffix":{"anyOf":[{"type":"string"},{"type":"null"}]},"gender":{"anyOf":[{"type":"string"},{"type":"null"}]},"dob":{"anyOf":[{"type":"string"},{"type":"null"}]},"age":{"anyOf":[{"type":"number"},{"type":"null"}]},"marital_status":{"anyOf":[{"type":"string"},{"type":"null"}]},"minerva_household_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"minerva_spouse_pid":{"anyOf":[{"type":"string"},{"type":"null"}]},"number_of_children":{"anyOf":[{"type":"number"},{"type":"null"}]},"is_retired":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"estimated_income_range":{"anyOf":[{"type":"string"},{"type":"null"}]},"estimated_wealth_range":{"anyOf":[{"type":"string"},{"type":"null"}]},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"linkedin_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"linkedin_industry":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_likely_remote_worker":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"facebook_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"personal_emails":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"email_rank":{"type":"number"},"email_address":{"type":"string"}},"required":["email_rank","email_address"],"additionalProperties":false}},{"type":"null"}]},"professional_emails":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"email_rank":{"type":"number"},"email_address":{"type":"string"}},"required":["email_rank","email_address"],"additionalProperties":false}},{"type":"null"}]},"phones":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"phone_rank":{"type":"number"},"phone_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone_number":{"type":"string"}},"required":["phone_rank","phone_number"],"additionalProperties":false}},{"type":"null"}]},"relatives":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"relative_minerva_pid":{"anyOf":[{"type":"string"},{"type":"null"}]},"relative_first_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"relative_last_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"relationship_label":{"anyOf":[{"type":"string"},{"type":"null"}]},"relationship_sublabel":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":false}},{"type":"null"}]},"work_experience":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"experience_rank":{"type":"number"},"minerva_experience_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_website":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_industry":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_naics_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_naics_description":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_sic_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_company_sic_description":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"standard_work_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_seniority_level":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_department":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_employment_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_status":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_start_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_end_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_city":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_state":{"anyOf":[{"type":"string"},{"type":"null"}]},"work_country":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["experience_rank"],"additionalProperties":false}},{"type":"null"}]},"education_experience":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"experience_rank":{"type":"number"},"minerva_experience_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"institution_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"institution_linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"education_information":{"anyOf":[{"type":"string"},{"type":"null"}]},"education_level":{"anyOf":[{"type":"string"},{"type":"null"}]},"education_majors":{"type":"array","items":{"type":"string"}},"education_minors":{"type":"array","items":{"type":"string"}},"education_start_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"education_end_date":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["experience_rank"],"additionalProperties":false}},{"type":"null"}]}},"required":["record_id","is_match"],"additionalProperties":false}}},"required":["api_request_id","request_completed_at","results"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/minerva/validate-emails":{"post":{"operationId":"minerva_validate-emails","summary":"Minerva Validate Emails - Check if email addresses exist in the Minerva database and retrieve validation status and last seen timestamps.","tags":["Minerva"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"records":{"minItems":1,"maxItems":2000,"type":"array","items":{"type":"string"},"description":"Array of email address strings to validate. Maximum 2000 per request."}},"required":["records"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"api_request_id":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"email_address":{"type":"string"},"is_match":{"type":"boolean"},"email_validation_status":{"anyOf":[{"type":"string"},{"type":"null"}]},"email_last_seen":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["email_address","is_match"],"additionalProperties":false}},"request_completed_at":{"type":"string"}},"required":["api_request_id","results","request_completed_at"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/cloudflare/crawl":{"post":{"operationId":"cloudflare_crawl","summary":"Cloudflare Browser Rendering Crawl - Start a crawl job and return a token to poll for results. Respects robots.txt and supports pattern-based URL filtering.","tags":["Cloudflare"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.100000"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"The starting URL to crawl"},"limit":{"default":10,"description":"Maximum number of pages to crawl (max 25)","type":"number","minimum":1,"maximum":25},"depth":{"default":1,"description":"Maximum link depth from the starting URL (max 3)","type":"number","minimum":1,"maximum":3},"formats":{"default":["markdown"],"description":"Response formats for crawled pages","type":"array","items":{"type":"string","enum":["html","markdown","json"]}},"render":{"default":false,"description":"Execute JavaScript when crawling (true = handles JS-rendered content, slower and costs more)","type":"boolean"},"source":{"description":"URL discovery source: all, sitemaps only, or links only","type":"string","enum":["all","sitemaps","links"]},"options":{"description":"Crawl scope options","type":"object","properties":{"includeExternalLinks":{"description":"Follow links to external domains","type":"boolean"},"includeSubdomains":{"description":"Follow links to subdomains","type":"boolean"},"includePatterns":{"description":"Wildcard patterns for URLs to include","type":"array","items":{"type":"string"}},"excludePatterns":{"description":"Wildcard patterns for URLs to exclude (higher priority than include patterns)","type":"array","items":{"type":"string"}}}}},"required":["url"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Signed JWT to poll /api/cloudflare/jobs"}},"required":["token"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/cloudflare/jobs":{"get":{"operationId":"cloudflare_jobs","summary":"Poll Cloudflare crawl job status and retrieve results. Requires SIWX wallet auth — only the wallet that paid can poll.","tags":["Cloudflare"],"security":[{"siwx":[]}],"parameters":[{"in":"query","name":"token","schema":{"type":"string","minLength":1,"description":"Signed JWT job token from a 202 response"},"required":true,"description":"Signed JWT job token from a 202 response"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"records":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"string","enum":["queued","completed","errored","disallowed","skipped","cancelled"]},"html":{"type":"string"},"markdown":{"type":"string"},"json":{},"metadata":{"type":"object","properties":{"status":{"type":"number"},"url":{"type":"string"},"title":{"type":"string"}},"required":["status","url","title"],"additionalProperties":{}}},"required":["url","status"],"additionalProperties":false}},"browserSecondsUsed":{"type":"number"},"total":{"type":"number"},"finished":{"type":"number"},"skipped":{"type":"number"},"cursor":{"type":"string"}},"required":["id","status"],"additionalProperties":false}}}},"402":{"description":"Authentication Required"}}}}},"components":{"securitySchemes":{"siwx":{"type":"apiKey","in":"header","name":"SIGN-IN-WITH-X"}}}}