{
  "network": "base",
  "currency": "USDC",
  "scheme": "exact",
  "agentId": 47167,
  "identityRegistry": "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
  "generatedAt": "2026-05-18T01:59:43.988Z",
  "totalServices": 243,
  "services": {
    "13f-deltas": {
      "slug": "13f-deltas",
      "price": "0.05",
      "cluster": "edge-finance",
      "description": "13F-HR position-delta computation — diff the two most recent 13F-HR filings for an institutional CIK. Returns added/exited/increased/reduced positions with dollar deltas.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "cik": {
            "type": "string",
            "description": "Institutional manager's SEC CIK (e.g. '0001067983' for Berkshire Hathaway). Required — 13F filings are by CIK only, no ticker."
          },
          "limit_holdings": {
            "type": "number",
            "description": "Max positions to include in each bucket (added/exited/increased/reduced). 1-50. Default 20."
          },
          "min_change_usd": {
            "type": "number",
            "description": "Filter out moves smaller than this dollar magnitude. Default 0 (no filter)."
          }
        },
        "required": [
          "cik"
        ]
      },
      "outputProperties": {
        "summary": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/13f-deltas"
    },
    "address-geocode": {
      "slug": "address-geocode",
      "price": "0.02",
      "cluster": "locale",
      "description": "Geocoder / address-to-lat-lng / location resolver. Address or place-name → coords + structured parts (road, city, state, postcode, country). Powered by OpenStreetMap Nominatim (free public).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "geocode",
        "location",
        "maps",
        "osm",
        "nominatim"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Free-form address, postal code, place name, or POI. Examples: '1600 Amphitheatre Parkway, Mountain View, CA', '10115 Berlin', 'Eiffel Tower'."
          },
          "country_codes": {
            "type": "array",
            "description": "Optional ISO 3166-1 alpha-2 filter, e.g. ['us','ca']."
          },
          "limit": {
            "type": "number",
            "description": "1-10. Default 5."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string"
        },
        "match_count": {
          "type": "number"
        },
        "results": {
          "type": "array"
        },
        "best_match": {
          "type": "object"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/address-geocode"
    },
    "agent-card-resolve": {
      "slug": "agent-card-resolve",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Agent card resolver / ERC-8004 Identity Registry lookup / Trustless Agents / agentId → owner + agentURI / A2A identity / agent.json fetch / on-chain agent metadata. Pass an ERC-8004 agentId (uint256 on Base) — returns the on-chain owner address, the agentURI from the Identity Registry, and the resolved agent card JSON (set fetch_card=false to skip the HTTP follow-up). Reads from Base mainnet Identity Registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 via a static eth_call (no gas, no wallet). Useful for agents discovering peers in the A2A ecosystem.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "erc-8004",
        "agent",
        "identity",
        "registry",
        "trustless-agents",
        "a2a",
        "base"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "agent_id": {
            "type": [
              "integer",
              "string"
            ],
            "description": "ERC-8004 agentId on Base — non-negative integer. Accepted as number or decimal string."
          },
          "fetch_card": {
            "type": "boolean",
            "description": "If true (default), also fetches the resolved agentURI and embeds the JSON agent card in the response. Set false to skip the HTTP fetch."
          }
        },
        "required": [
          "agent_id"
        ]
      },
      "outputProperties": {
        "agent_id": {
          "type": "number"
        },
        "network": {
          "type": "string"
        },
        "identity_registry": {
          "type": "string"
        },
        "owner": {
          "type": "string"
        },
        "agent_uri": {
          "type": "string"
        },
        "agent_card": {
          "type": "object"
        },
        "agent_card_fetch_error": {
          "type": [
            "string",
            "null"
          ]
        },
        "rpc_used": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/agent-card-resolve"
    },
    "ai-content-detector": {
      "slug": "ai-content-detector",
      "price": "0.03",
      "cluster": "prooflayer",
      "description": "AI content detector / GPT detector / ChatGPT plagiarism checker. Calibrated probability (0-1), verdict, suspicious phrases, per-axis style signals (em-dash overuse, hedge phrases, formulaic transitions).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "ai-detection",
        "content",
        "moderation",
        "llm",
        "classify"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "100-20,000 chars."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "probability_ai_generated": {
          "type": "number"
        },
        "verdict": {
          "type": "string"
        },
        "confidence": {
          "type": "number"
        },
        "reasoning": {
          "type": "array"
        },
        "suspicious_phrases": {
          "type": "array"
        },
        "style_signals": {
          "type": "object"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/ai-content-detector"
    },
    "ai-to-human-text": {
      "slug": "ai-to-human-text",
      "price": "0.01",
      "cluster": "textkit",
      "description": "AI text humanizer / GPT detector bypass. Strips telltale LLM patterns (formulaic transitions, em-dash overuse, 'delve' / 'tapestry' / 'navigate the landscape'). 4 tones.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "humanize",
        "rewriter",
        "ai-detection",
        "paraphrase",
        "text"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text to humanize. Max 12,000 characters."
          },
          "tone": {
            "type": "string",
            "enum": [
              "neutral",
              "casual",
              "professional",
              "academic"
            ],
            "description": "'neutral' (default), 'casual', 'professional', or 'academic'."
          },
          "preserve_length": {
            "type": "boolean",
            "description": "If true (default), keep within ±15% of source length. If false, tighten freely."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string",
          "description": "Rewritten text."
        },
        "tone": {
          "type": "string",
          "description": "Tone applied."
        },
        "input_chars": {
          "type": "number",
          "description": "Source character count."
        },
        "output_chars": {
          "type": "number",
          "description": "Rewritten character count."
        },
        "model": {
          "type": "string",
          "description": "Model used for the rewrite."
        }
      },
      "url": "https://x402.org/v1/ai-to-human-text"
    },
    "airport-delays": {
      "slug": "airport-delays",
      "price": "0.02",
      "cluster": "locale",
      "description": "FAA NAS Status — current US airport delays, ground stops, ground delay programs, weather-driven program changes. Federal public, no auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "airport": {
            "type": "string",
            "description": "IATA-3 (e.g. 'JFK')."
          },
          "event_type": {
            "type": "string",
            "enum": [
              "delay",
              "ground_stop",
              "ground_delay",
              "closure",
              "all"
            ],
            "description": "Filter event class. 'ground_stop' = full traffic halt, 'ground_delay' = GDP metering, 'delay' = arrival/departure delay, 'closure' = airport/runway closed, 'all' = no filter (default)."
          }
        }
      },
      "outputProperties": {
        "matched": {
          "type": "string",
          "description": ""
        },
        "summary": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/airport-delays"
    },
    "arbitrage-spread": {
      "slug": "arbitrage-spread",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Cross-exchange arbitrage spread / max-min price / CEX price dispersion / spread % calculator. For any CoinGecko-listed coin, pulls every tracked exchange ticker, computes the lowest and highest USD-converted prices, the spread %, and identifies which exchanges sit at each extreme plus the highest-volume venue. Filters out stale or anomalous tickers.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "coingecko_id": {
            "type": "string",
            "description": "CoinGecko coin id (e.g. 'ethereum', 'bitcoin')."
          },
          "target": {
            "type": "string",
            "description": "Quote currency to filter for (e.g. 'USDT'). Optional — converted USD prices are used regardless."
          }
        },
        "required": [
          "coingecko_id"
        ]
      },
      "outputProperties": {
        "coingecko_id": {
          "type": "string",
          "description": ""
        },
        "ticker_count": {
          "type": "string",
          "description": ""
        },
        "min_price_usd": {
          "type": "string",
          "description": ""
        },
        "max_price_usd": {
          "type": "string",
          "description": ""
        },
        "spread_pct": {
          "type": "string",
          "description": ""
        },
        "lowest_price_exchange": {
          "type": "string",
          "description": ""
        },
        "highest_price_exchange": {
          "type": "string",
          "description": ""
        },
        "top_exchange_by_volume": {
          "type": "string",
          "description": ""
        },
        "top_volume_usd": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/arbitrage-spread"
    },
    "archive-snapshot": {
      "slug": "archive-snapshot",
      "price": "0.02",
      "cluster": "web-probe",
      "description": "Wayback Machine API / archive.org wrapper. Returns closest archived snapshot URL + timestamp. Optionally fetches and cleans the archived page text. For historical content + reference rot fixes.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "archive",
        "wayback",
        "history",
        "monitor"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601, YYYY-MM-DD, YYYYMMDD, or YYYYMMDDhhmmss."
          },
          "fetch_text": {
            "type": "boolean",
            "description": "Also fetch + clean the archived page. Default false."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "requested_url": {
          "type": "string"
        },
        "snapshot_url": {
          "type": "string"
        },
        "snapshot_timestamp": {
          "type": "string"
        },
        "snapshot_iso_timestamp": {
          "type": "string"
        },
        "snapshot_status": {
          "type": "string"
        },
        "archived_text": {
          "type": "string"
        },
        "archived_text_chars": {
          "type": "number"
        },
        "archive_fetch_status": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/archive-snapshot"
    },
    "arxiv-bibtex": {
      "slug": "arxiv-bibtex",
      "price": "0.002",
      "cluster": "web-probe",
      "description": "arXiv to BibTeX / arxiv citation generator / paper bibtex / LaTeX citation builder / academic citation lookup. Pulls a paper's title, authors, year, abstract, and DOI from the arXiv API and generates a properly-formatted BibTeX entry with an auto-derived cite key (or your own). Free public arXiv API. Pure XML parse — no upstream auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "arxiv_id": {
            "type": "string",
            "description": "arXiv ID. New-style (e.g. '1706.03762', '1706.03762v3') or old-style ('cs.AI/0602099'). 'arXiv:' prefix is stripped."
          },
          "cite_key": {
            "type": "string",
            "description": "Override the cite key. Default is auto-derived from first author surname + year + arxiv id."
          }
        },
        "required": [
          "arxiv_id"
        ]
      },
      "outputProperties": {
        "arxiv_id": {
          "type": "string",
          "description": ""
        },
        "cite_key": {
          "type": "string",
          "description": ""
        },
        "title": {
          "type": "string",
          "description": ""
        },
        "authors": {
          "type": "string",
          "description": ""
        },
        "year": {
          "type": "string",
          "description": ""
        },
        "abstract": {
          "type": "string",
          "description": ""
        },
        "doi": {
          "type": "string",
          "description": ""
        },
        "bibtex": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/arxiv-bibtex"
    },
    "arxiv-search": {
      "slug": "arxiv-search",
      "price": "0.03",
      "cluster": "web-probe",
      "description": "arXiv full-text search. Search by query / author / category / id-list. Returns title, authors, abstract, primary category, dates, PDF URL, DOI. Public arXiv API.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "id_list": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "limit": {
            "type": "number"
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "relevance",
              "lastUpdatedDate",
              "submittedDate"
            ]
          },
          "sort_order": {
            "type": "string",
            "enum": [
              "ascending",
              "descending"
            ]
          },
          "include_abstract": {
            "type": "boolean"
          }
        }
      },
      "outputProperties": {
        "total_results": {
          "type": "string",
          "description": ""
        },
        "returned": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/arxiv-search"
    },
    "arxiv-summarize": {
      "slug": "arxiv-summarize",
      "price": "0.04",
      "cluster": "web-probe",
      "description": "arXiv paper summarizer / research-paper TLDR. Given an arXiv ID or URL, fetches the abstract via arXiv API and produces structured summary: TLDR, key findings, methods, limitations, so-what, keywords. Plus authors, categories, DOI, PDF URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "arxiv",
        "research",
        "summarize",
        "papers",
        "science"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "arxiv_id_or_url": {
            "type": "string"
          },
          "include_abstract": {
            "type": "boolean",
            "description": "Include the raw abstract in response. Default true."
          }
        },
        "required": [
          "arxiv_id_or_url"
        ]
      },
      "outputProperties": {
        "arxiv_id": {
          "type": "string"
        },
        "arxiv_url": {
          "type": "string"
        },
        "pdf_url": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "authors": {
          "type": "array"
        },
        "primary_category": {
          "type": "string"
        },
        "categories": {
          "type": "array"
        },
        "published": {
          "type": "string"
        },
        "updated": {
          "type": "string"
        },
        "doi": {
          "type": "string"
        },
        "summary": {
          "type": "object"
        },
        "abstract": {
          "type": "string"
        },
        "abstract_chars": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/arxiv-summarize"
    },
    "astro-times": {
      "slug": "astro-times",
      "price": "0.002",
      "cluster": "locale",
      "description": "sunrise-sunset / golden-hour / civil twilight / nautical dusk / day-length / solar-noon / dawn-dusk / astronomy times. Computes sunrise, sunset, solar noon, day length (seconds), and civil / nautical / astronomical twilight begin & end for any latitude/longitude on any date. UTC ISO8601 strings. Wraps sunrise-sunset.org's public API — no auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Decimal degrees, range [-90, 90]. Positive north."
          },
          "longitude": {
            "type": "number",
            "description": "Decimal degrees, range [-180, 180]. Positive east."
          },
          "date": {
            "type": "string",
            "description": "Date in YYYY-MM-DD. Defaults to today (UTC) if omitted."
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "outputProperties": {
        "date": {
          "type": "string",
          "description": ""
        },
        "location": {
          "type": "string",
          "description": ""
        },
        "times": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/astro-times"
    },
    "audio-loudnorm": {
      "slug": "audio-loudnorm",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "Audio loudness normalizer (EBU R128 LUFS). Podcast / Spotify / YouTube target presets (-23 / -16 / -14). Two-pass dynamic mode. Returns hosted MP3.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "audio",
        "loudnorm",
        "podcast",
        "normalization",
        "ebu-r128"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "audio_url": {
            "type": "string",
            "description": "Public URL of an audio or video file to normalize. Must be HTTPS-accessible."
          },
          "target_lufs": {
            "type": "number",
            "description": "Target integrated loudness in LUFS. Defaults to -16 (podcast/Spotify standard). Range: -30 to -10. Common targets: -23 (broadcast/EBU R128), -16 (podcast), -14 (YouTube/Apple Music)."
          },
          "true_peak": {
            "type": "number",
            "description": "Maximum true peak in dBTP. Defaults to -1.5. Range: -9 to 0."
          }
        },
        "required": [
          "audio_url"
        ]
      },
      "outputProperties": {
        "audio_url": {
          "type": "string",
          "description": "URL of the normalized audio file (hosted by fal.ai)"
        },
        "duration_seconds": {
          "type": "number",
          "description": "Duration of the source audio in seconds"
        },
        "target_lufs": {
          "type": "number",
          "description": "The LUFS target that was applied"
        },
        "true_peak": {
          "type": "number",
          "description": "The true peak limit that was applied"
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL"
        }
      },
      "url": "https://x402.org/v1/audio-loudnorm"
    },
    "audio-transcribe": {
      "slug": "audio-transcribe",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "Audio transcribe / speech-to-text / Whisper-large / multi-language ASR / OpenAI Whisper API compat. Server-side fetches the audio URL (max 25 MB), relays to Venice's audio/transcriptions endpoint with whisper-large-v3, and returns the transcript with detected language, duration, and per-segment timestamps when response_format='verbose_json' (default). Also supports raw text, SRT, and VTT outputs.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "audio_url": {
            "type": "string",
            "description": "Public http(s) URL of the audio file (mp3, wav, m4a, ogg, flac, webm). Up to 25 MB."
          },
          "language": {
            "type": "string",
            "description": "BCP-47 language hint (e.g. 'en', 'es'). 'auto' or omitted = auto-detect."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Default 'openai/whisper-large-v3'."
          },
          "response_format": {
            "type": "string",
            "enum": [
              "json",
              "text",
              "verbose_json",
              "srt",
              "vtt"
            ],
            "description": "Output format. Default 'verbose_json' (transcript + segments)."
          }
        },
        "required": [
          "audio_url"
        ]
      },
      "outputProperties": {
        "transcript": {
          "type": "string",
          "description": ""
        },
        "language_detected": {
          "type": "string",
          "description": ""
        },
        "duration_seconds": {
          "type": "string",
          "description": ""
        },
        "segments": {
          "type": "string",
          "description": ""
        },
        "response_format": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "bytes_in": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/audio-transcribe"
    },
    "basename-resolve": {
      "slug": "basename-resolve",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Basename resolver / Coinbase Basenames / .base.eth lookup / Base name service / on-chain name resolution. Forward: pass a basename like 'alice.base.eth' (bare names are auto-suffixed with .base.eth) → returns the registered Ethereum address. Reverse: pass a 0x address → returns the primary basename, if any. Also returns avatar / url / com.twitter / com.github / email / com.discord text records on forward lookups (override with `text_records`). Reads from Base mainnet L2 Resolver 0xC6d566A56A1aFf6508b41f6c90ff131615583BCD via a static eth_call (no gas, no wallet, no API key). Useful for agent-payment flows that need to translate human names to Base addresses.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "basename",
        "base",
        "ens",
        "name-service",
        "coinbase",
        "resolver",
        "address"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "A basename ('alice.base.eth' or bare 'alice') for forward, OR a 0x address for reverse."
          },
          "text_records": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional text-record keys to fetch on forward lookups. Default: avatar/url/description/com.twitter/com.github/email/com.discord. Cap 12 keys."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "mode": {
          "type": "string",
          "enum": [
            "forward",
            "reverse"
          ]
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "address": {
          "type": [
            "string",
            "null"
          ]
        },
        "text_records": {
          "type": "object"
        },
        "network": {
          "type": "string"
        },
        "resolver": {
          "type": "string"
        },
        "rpc_used": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/basename-resolve"
    },
    "bin-lookup": {
      "slug": "bin-lookup",
      "price": "0.02",
      "cluster": "locale",
      "description": "Credit card BIN / IIN lookup. First 6-8 digits identify issuing bank, country, brand (Visa/Mastercard/Amex), card type (debit/credit/prepaid). Fraud screening, payment routing, geo-risk. Powered by binlist.net.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "bin",
        "iin",
        "credit-card",
        "fraud",
        "payments",
        "kyc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "bin": {
            "type": "string",
            "description": "6-8 digit BIN. NEVER pass full card numbers — PCI scope risk."
          }
        },
        "required": [
          "bin"
        ]
      },
      "outputProperties": {
        "bin": {
          "type": "string"
        },
        "scheme": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "brand": {
          "type": "string"
        },
        "prepaid": {
          "type": "boolean"
        },
        "card_number": {
          "type": "object"
        },
        "country": {
          "type": "object"
        },
        "issuer": {
          "type": "object"
        },
        "source": {
          "type": "string"
        },
        "note": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/bin-lookup"
    },
    "bls-occupational-stats": {
      "slug": "bls-occupational-stats",
      "price": "0.02",
      "cluster": "edge-finance",
      "description": "BLS Public Data API — wages, employment levels, growth by series ID. Federal public, free. Optional BLS_API_KEY for higher rate-limits.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "series_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "start_year": {
            "type": "string"
          },
          "end_year": {
            "type": "string"
          },
          "include_calculations": {
            "type": "boolean"
          }
        },
        "required": [
          "series_ids"
        ]
      },
      "outputProperties": {
        "series_returned": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/bls-occupational-stats"
    },
    "brand-clearance": {
      "slug": "brand-clearance",
      "price": "0.25",
      "cluster": "prooflayer",
      "description": "Brand clearance aggregator / name screening / product-name vetting / startup-brand pre-flight. Given a candidate brand name, returns a single composite clearance signal an agent can act on. Calls four checks in parallel (in-process, no x402 self-billing): USPTO TM name search, domain availability across requested TLDs (default .com .ai .dev .io .co), Wikipedia presence, Hacker News mention scan. Returns risk_level (clear|soft|moderate|hard), risk_score 0-100, sub-scores per signal, the raw hits, and a one-line recommendation. Designed for AI agents self-screening project / product / startup names before committing. Screening tool only — not legal advice.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Candidate brand name (1-60 chars). Used as-is for USPTO + HN search; lowercased + alphanumeric-stripped for domain construction."
          },
          "tlds": {
            "type": "array",
            "description": "TLDs to check, without dots. Default ['com','ai','dev','io','co']. Allowlist: com, ai, dev, io, co, app, xyz, org, net, tech, tools, page, studio, shop. Max 6."
          },
          "max_tm_hits": {
            "type": "number",
            "description": "Max trademark hits to include in the response. Default 5, hard cap 25."
          }
        },
        "required": [
          "name"
        ]
      },
      "outputProperties": {
        "name": {
          "type": "string",
          "description": ""
        },
        "risk_level": {
          "type": "string",
          "description": ""
        },
        "risk_score": {
          "type": "string",
          "description": ""
        },
        "recommendation": {
          "type": "string",
          "description": ""
        },
        "sub_scores": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/brand-clearance"
    },
    "bridge-rates": {
      "slug": "bridge-rates",
      "price": "0.03",
      "cluster": "edge-market",
      "description": "Cross-chain bridge rate aggregator. LiFi public quote API aggregates Across, Stargate, Hop, deBridge, Synapse, CCTP. Free, commercial-OK with attribution.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "from_chain": {
            "type": "number",
            "description": "Source chain id. EVM chain id (1=Ethereum, 8453=Base, 42161=Arbitrum One, 10=Optimism, 137=Polygon, 56=BNB Chain)."
          },
          "to_chain": {
            "type": "number",
            "description": "Destination chain id (same id space as from_chain)."
          },
          "from_token": {
            "type": "string",
            "description": "Source token contract address. Use '0x0000000000000000000000000000000000000000' for the chain's native gas token (ETH, MATIC, BNB)."
          },
          "to_token": {
            "type": "string",
            "description": "Destination token contract address. Same '0x000...' convention for native."
          },
          "amount": {
            "type": "string",
            "description": "Source amount in the token's smallest unit (e.g. wei for ETH, '1000000000000000000' = 1 ETH; '1000000' = 1 USDC at 6 decimals)."
          },
          "from_address": {
            "type": "string",
            "description": "Optional EVM address of the sender. Required for slippage-checked + ready-to-sign quotes."
          },
          "to_address": {
            "type": "string",
            "description": "Optional EVM destination address. Defaults to from_address."
          },
          "slippage": {
            "type": "number",
            "description": "Max slippage as decimal fraction (0.01 = 1%). Default 0.005."
          },
          "limit": {
            "type": "number",
            "description": "Max routes to return. 1-10. Default 5."
          }
        },
        "required": [
          "from_chain",
          "to_chain",
          "from_token",
          "to_token",
          "amount"
        ]
      },
      "outputProperties": {
        "route_count": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/bridge-rates"
    },
    "building-permits": {
      "slug": "building-permits",
      "price": "0.03",
      "cluster": "locale",
      "description": "Building permits multi-city open-data lookup. NYC, SF, Chicago, LA, Seattle, Austin. Filter by address substring, status, type, recency. Each city normalized to common shape (id, type, status, description, address, dates, cost). Real-estate / construction primitive.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "real-estate",
        "permits",
        "construction",
        "open-data",
        "building",
        "nyc",
        "sf",
        "chicago",
        "la",
        "seattle",
        "austin",
        "due-diligence",
        "property"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "One of: 'nyc', 'sf', 'chicago', 'la', 'seattle', 'austin'."
          },
          "address": {
            "type": "string",
            "description": "Street name or address substring (case-insensitive). Optional."
          },
          "status": {
            "type": "string",
            "description": "Filter on permit status (city-specific values, e.g. 'ISSUED'). Optional."
          },
          "permit_type": {
            "type": "string",
            "description": "Filter on permit type (city-specific). Optional."
          },
          "days": {
            "type": "number",
            "description": "Restrict to permits within last N days. Optional."
          },
          "limit": {
            "type": "number",
            "description": "Max records to return (1-100). Default 20."
          }
        },
        "required": [
          "city"
        ]
      },
      "outputProperties": {
        "city": {
          "type": "string"
        },
        "city_name": {
          "type": "string"
        },
        "dataset": {
          "type": "string"
        },
        "source_portal": {
          "type": "string"
        },
        "total": {
          "type": "number"
        },
        "permits": {
          "type": "array"
        }
      },
      "url": "https://x402.org/v1/building-permits"
    },
    "card-bin-lookup": {
      "slug": "card-bin-lookup",
      "price": "0.02",
      "cluster": "locale",
      "description": "Credit card BIN lookup / IIN lookup / card-issuer lookup. First 6-8 digits to issuer bank, country, brand (Visa/Mastercard/Amex/Discover/JCB/UnionPay), card type (debit/credit/prepaid). Use for fraud screening, payment routing, geo-risk.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "bin-lookup",
      "inputSchema": {
        "type": "object",
        "properties": {
          "bin": {
            "type": "string"
          }
        },
        "required": [
          "bin"
        ]
      },
      "outputProperties": {
        "scheme": {
          "type": "string",
          "description": ""
        },
        "type": {
          "type": "string",
          "description": ""
        },
        "country": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/card-bin-lookup"
    },
    "citation-verify": {
      "slug": "citation-verify",
      "price": "0.01",
      "cluster": "textkit",
      "description": "Citation verifier / fact-check against URL / does-this-source-support-this-claim / hallucination detector. Fetches a source URL (HTML stripped, 100KB cap), and asks Venice claude-sonnet-4-6 whether a given claim is supported, contradicted, or absent. Returns verdict, confidence (0-1), and the strongest evidence quote when available.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "claim": {
            "type": "string",
            "description": "The claim to verify."
          },
          "source_url": {
            "type": "string",
            "description": "Public http(s) URL of the source to check against. Up to 100KB read."
          }
        },
        "required": [
          "claim",
          "source_url"
        ]
      },
      "outputProperties": {
        "claim": {
          "type": "string",
          "description": ""
        },
        "source_url": {
          "type": "string",
          "description": ""
        },
        "source_chars": {
          "type": "string",
          "description": ""
        },
        "source_bytes_total": {
          "type": "string",
          "description": ""
        },
        "truncated": {
          "type": "string",
          "description": ""
        },
        "verdict": {
          "type": "string",
          "description": ""
        },
        "confidence": {
          "type": "string",
          "description": ""
        },
        "evidence_quote": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/citation-verify"
    },
    "classify": {
      "slug": "classify",
      "price": "0.02",
      "cluster": "textkit",
      "description": "Zero-shot text classifier. Caller supplies labels. Multi-label mode. Calibrated confidences + reasoning.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "classify",
        "categorize",
        "moderation",
        "routing",
        "ai",
        "llm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text. Max 15,000 chars."
          },
          "labels": {
            "type": "array",
            "description": "Array of 2-25 candidate labels (strings, ≤80 chars each)."
          },
          "multi_label": {
            "type": "boolean",
            "description": "If true, returns all labels that meaningfully apply. Default false (single best)."
          },
          "label_descriptions": {
            "type": "object",
            "description": "Optional { label: description } mapping for finer control."
          }
        },
        "required": [
          "text",
          "labels"
        ]
      },
      "outputProperties": {
        "results": {
          "type": "array",
          "description": "Array of {label, confidence}."
        },
        "top_label": {
          "type": "string"
        },
        "reasoning": {
          "type": "string"
        },
        "multi_label": {
          "type": "boolean"
        },
        "labels": {
          "type": "array"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/classify"
    },
    "classify-text": {
      "slug": "classify-text",
      "price": "0.02",
      "cluster": "textkit",
      "description": "Text classifier / zero-shot classifier / category sorter. Caller supplies labels (2-25). Multi-label mode. Calibrated confidences + reasoning. Mistral powered.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "classify",
        "categorize",
        "moderation",
        "routing",
        "ai",
        "llm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text. Max 15,000 chars."
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of 2-25 candidate labels (strings, ≤80 chars each)."
          },
          "multi_label": {
            "type": "boolean",
            "description": "If true, returns all labels that meaningfully apply. Default false (single best)."
          },
          "label_descriptions": {
            "type": "object",
            "description": "Optional { label: description } mapping for finer control."
          }
        },
        "required": [
          "text",
          "labels"
        ]
      },
      "outputProperties": {
        "results": {
          "type": "array",
          "description": "Array of {label, confidence}."
        },
        "top_label": {
          "type": "string"
        },
        "reasoning": {
          "type": "string"
        },
        "multi_label": {
          "type": "boolean"
        },
        "labels": {
          "type": "array"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/classify-text"
    },
    "commit-message-from-diff": {
      "slug": "commit-message-from-diff",
      "price": "0.01",
      "cluster": "textkit",
      "description": "Git commit message generator / Conventional Commits / AI commit-msg. Type, scope, subject, body, breaking_change flag. Ready for git commit -m.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "git",
        "commit",
        "developer",
        "conventional-commits"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "diff": {
            "type": "string",
            "description": "Git diff text."
          },
          "style": {
            "type": "string",
            "enum": [
              "conventional",
              "plain"
            ]
          },
          "scope": {
            "type": "string"
          }
        },
        "required": [
          "diff"
        ]
      },
      "outputProperties": {
        "type": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "subject": {
          "type": "string"
        },
        "body": {
          "type": "string"
        },
        "breaking_change": {
          "type": "boolean"
        },
        "full_message": {
          "type": "string"
        },
        "style": {
          "type": "string"
        },
        "diff_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/commit-message-from-diff"
    },
    "compress-pdf": {
      "slug": "compress-pdf",
      "price": "0.005",
      "cluster": "mediakit",
      "description": "PDF compressor / PDF size reducer. CloudConvert optimize task. Profiles: web (default), print, archive, mrc (scanned), max. Reports % saved.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "pdf",
        "compress",
        "optimize",
        "shrink"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of the PDF to compress."
          },
          "profile": {
            "type": "string",
            "enum": [
              "web",
              "print",
              "archive",
              "mrc",
              "max"
            ],
            "description": "'web' (default), 'print', 'archive', 'mrc', 'max'."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "pdf_url": {
          "type": "string"
        },
        "original_size_bytes": {
          "type": "number"
        },
        "compressed_size_bytes": {
          "type": "number"
        },
        "saved_percent": {
          "type": "number"
        },
        "profile": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/compress-pdf"
    },
    "content-simhash": {
      "slug": "content-simhash",
      "price": "0.001",
      "cluster": "textkit",
      "description": "SimHash / 64-bit content fingerprint / near-duplicate detection / dedup hashing / locality-sensitive hash. Pure-local 64-bit SimHash over token-level k-shingles (default k=3) using FNV-1a. Two SimHashes are 'close' (small Hamming distance) iff the underlying texts share many shingles. Returns hex + decimal forms plus token + shingle counts. Useful for content dedup pipelines, plagiarism detection, and bot-content clustering.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to hash. Up to 500,000 chars."
          },
          "shingle_size": {
            "type": "number",
            "description": "k-gram size for shingles. Range [1, 8]. Default 3."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "hash_hex": {
          "type": "string",
          "description": ""
        },
        "hash_int": {
          "type": "string",
          "description": ""
        },
        "bit_count": {
          "type": "string",
          "description": ""
        },
        "token_count": {
          "type": "string",
          "description": ""
        },
        "shingle_count": {
          "type": "string",
          "description": ""
        },
        "shingle_size": {
          "type": "string",
          "description": ""
        },
        "text_chars": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/content-simhash"
    },
    "contract-source": {
      "slug": "contract-source",
      "price": "0.01",
      "cluster": "edge-market",
      "description": "Verified contract source code / Etherscan source / contract ABI fetcher / Solidity source lookup. For any deployed contract on Ethereum, Base, Optimism, Arbitrum, or Polygon: returns is_verified, contract name, compiler version, parsed ABI, full source, license, optimizer settings, constructor args, and proxy implementation address.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "contract-source-verified",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "0x-prefixed 20-byte EVM contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'. Other supported: 'ethereum', 'polygon', 'arbitrum', 'optimism'."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputProperties": {
        "address": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "is_verified": {
          "type": "string",
          "description": ""
        },
        "name": {
          "type": "string",
          "description": ""
        },
        "compiler_version": {
          "type": "string",
          "description": ""
        },
        "abi": {
          "type": "string",
          "description": ""
        },
        "source_code": {
          "type": "string",
          "description": ""
        },
        "license": {
          "type": "string",
          "description": ""
        },
        "optimization": {
          "type": "string",
          "description": ""
        },
        "constructor_arguments": {
          "type": "string",
          "description": ""
        },
        "proxy": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/contract-source"
    },
    "contract-source-verified": {
      "slug": "contract-source-verified",
      "price": "0.01",
      "cluster": "edge-market",
      "description": "Verified contract source code / Etherscan source / Basescan ABI / Solidity source lookup / contract verification check / ABI fetcher / Etherscan-getsourcecode wrapper. For a deployed contract on Ethereum, Optimism, Polygon, Base, or Arbitrum, returns whether the source is verified, the contract name, compiler version, parsed ABI (as a JSON array, not a string), full Solidity source code (multi-file sources reassembled with '// File: ...' separators), license type, optimizer settings, constructor arguments, and — for proxy contracts — the implementation address. Wraps Etherscan v2's multichain getsourcecode endpoint.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "0x-prefixed 20-byte EVM contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'. Other supported: 'ethereum', 'polygon', 'arbitrum', 'optimism'."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputProperties": {
        "address": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "is_verified": {
          "type": "string",
          "description": ""
        },
        "name": {
          "type": "string",
          "description": ""
        },
        "compiler_version": {
          "type": "string",
          "description": ""
        },
        "abi": {
          "type": "string",
          "description": ""
        },
        "source_code": {
          "type": "string",
          "description": ""
        },
        "license": {
          "type": "string",
          "description": ""
        },
        "optimization": {
          "type": "string",
          "description": ""
        },
        "constructor_arguments": {
          "type": "string",
          "description": ""
        },
        "proxy": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/contract-source-verified"
    },
    "convert-html-to-markdown": {
      "slug": "convert-html-to-markdown",
      "price": "0.005",
      "cluster": "mediakit",
      "description": "Convert HTML to Markdown. Strips nav, scripts, ads, and other boilerplate. Preserves headings, lists, tables, code blocks, links, and images. Accepts raw HTML or a URL. Returns clean Markdown ideal for LLM context windows or RAG ingestion.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "html-to-markdown",
      "inputSchema": {
        "type": "object",
        "properties": {
          "html": {
            "type": "string",
            "description": "Raw HTML to convert. Mutually exclusive with 'url' — supply one."
          },
          "url": {
            "type": "string",
            "description": "Page URL to fetch and convert. Server follows redirects. Mutually exclusive with 'html'."
          },
          "include_links": {
            "type": "boolean",
            "description": "Keep hyperlinks as Markdown [text](href). Default true. Set false for prose-only output."
          },
          "include_images": {
            "type": "boolean",
            "description": "Keep images as Markdown ![alt](src). Default true."
          },
          "user_agent": {
            "type": "string",
            "description": "Optional User-Agent header sent when fetching 'url'. Default is a generic browser UA."
          }
        }
      },
      "outputProperties": {
        "source_url": {
          "type": "string",
          "description": ""
        },
        "title": {
          "type": "string",
          "description": ""
        },
        "markdown": {
          "type": "string",
          "description": ""
        },
        "markdown_chars": {
          "type": "string",
          "description": ""
        },
        "html_chars": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/convert-html-to-markdown"
    },
    "convert-pdf": {
      "slug": "convert-pdf",
      "price": "0.20",
      "cluster": "mediakit",
      "description": "Convert PDF to Markdown, HTML, JSON, or structured text via Datalab Marker. AI-powered, layout-aware, best-in-class for tables / equations / multi-column docs. For PDF→JPG/PNG see pdf-to-jpg; for PDF merge see pdf-merge; for PDF split see pdf-split; for PDF compression see compress-pdf. 30 pages max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "pdf-to-markdown",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of a PDF file."
          },
          "output_format": {
            "type": "string",
            "enum": [
              "markdown",
              "html",
              "json"
            ],
            "description": "'markdown' (default), 'html', or 'json'."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "markdown": {
          "type": "string",
          "description": ""
        },
        "page_count": {
          "type": "string",
          "description": ""
        },
        "source_url": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/convert-pdf"
    },
    "country-info": {
      "slug": "country-info",
      "price": "0.002",
      "cluster": "locale",
      "description": "Country info / ISO 3166 / country code lookup / capital city lookup / currencies by country / population / region resolver. Resolves country metadata by common name, ISO 3166 alpha-2/alpha-3 code, or capital city, returning name, codes, capital, region, subregion, population, area (km²), currencies, languages, timezones, flag emoji, neighboring-country codes, and international calling code. Wraps the public REST Countries v3.1 API — no auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search string — country name (e.g. 'Germany'), ISO code (e.g. 'DE'), or capital city (e.g. 'Berlin'), depending on query_type."
          },
          "query_type": {
            "type": "string",
            "enum": [
              "name",
              "code",
              "capital"
            ],
            "description": "How to interpret 'query'. Default 'name'."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "matches": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/country-info"
    },
    "cron-explain": {
      "slug": "cron-explain",
      "price": "0.002",
      "cluster": "textkit",
      "description": "Cron expression explainer / cron parser / scheduling translator. Takes 5/6/7-field cron OR @yearly/@monthly/@daily macros. Returns plain English, frequency bucket, per-field breakdown, validation notes, runs-per-day estimate.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "cron",
        "schedule",
        "developer",
        "explain",
        "sysadmin"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "expression": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "expression"
        ]
      },
      "outputProperties": {
        "expression": {
          "type": "string"
        },
        "timezone": {
          "type": "string"
        },
        "explanation": {
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "fields": {
          "type": "object"
        },
        "field_explanations": {
          "type": "object"
        },
        "is_valid": {
          "type": "boolean"
        },
        "validation_notes": {
          "type": "array"
        },
        "estimated_runs_per_day": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/cron-explain"
    },
    "cron-parse": {
      "slug": "cron-parse",
      "price": "0.002",
      "cluster": "textkit",
      "description": "Cron parser. Parses any 5 / 6 / 7-field cron expression or @yearly / @monthly / @weekly / @daily / @hourly macro and returns a plain-English explanation, frequency bucket, validation flag, and runs-per-day estimate. Same backend as cron-explain under a clearer slug.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "expression": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "expression"
        ]
      },
      "outputProperties": {
        "explanation": {
          "type": "string",
          "description": ""
        },
        "frequency": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/cron-parse"
    },
    "crypto-tx-explainer": {
      "slug": "crypto-tx-explainer",
      "price": "0.04",
      "cluster": "edge-market",
      "description": "Ethereum/Base/Arbitrum/Optimism/Polygon transaction explainer. Returns receipt + ERC20/ERC721 transfers + contracts + fees + plain-English explanation (Venice).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tx_hash": {
            "type": "string"
          },
          "chain": {
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon"
            ]
          },
          "explain": {
            "type": "boolean"
          }
        },
        "required": [
          "tx_hash"
        ]
      },
      "outputProperties": {
        "status": {
          "type": "string",
          "description": ""
        },
        "explanation": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/crypto-tx-explainer"
    },
    "csv-to-ics": {
      "slug": "csv-to-ics",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "CSV calendar to ICS / iCal file generator. RFC 5545 compliant. Auto-detects column mapping (summary/date/time/location). All-day + timed events. Up to 1000 rows.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "csv",
        "ics",
        "calendar",
        "ical",
        "convert",
        "events"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "csv": {
            "type": "string",
            "description": "CSV content as a string. First row must be a header. Max 200,000 chars / 1000 events."
          },
          "columns": {
            "type": "object",
            "description": "Optional explicit column-name mapping with keys: summary, start_date, end_date, start_time, end_time, location, description, url. Each value is the matching CSV header."
          },
          "calendar_name": {
            "type": "string",
            "description": "X-WR-CALNAME for the .ics output. Default 'Imported Events'."
          },
          "default_duration_minutes": {
            "type": "number",
            "description": "Used when only start_time is given. Default 60."
          },
          "delimiter": {
            "type": "string",
            "description": "Single-character delimiter. Default ','. Use ';' for European CSVs or '\\t' for TSV."
          }
        },
        "required": [
          "csv"
        ]
      },
      "outputProperties": {
        "ics": {
          "type": "string",
          "description": "Full .ics file as a string."
        },
        "mime_type": {
          "type": "string"
        },
        "event_count": {
          "type": "number"
        },
        "skipped_rows": {
          "type": "number"
        },
        "errors": {
          "type": "array"
        },
        "calendar_name": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/csv-to-ics"
    },
    "csv-to-jsonl": {
      "slug": "csv-to-jsonl",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "CSV to JSON / CSV to JSONL converter / data pipeline preprocessor. RFC 4180 parser. Type inference (booleans, integers, floats, ISO dates, null). Configurable delimiter, quote, header, rename, drop columns.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "csv",
        "json",
        "jsonl",
        "data",
        "convert"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "csv": {
            "type": "string",
            "description": "Raw CSV / TSV text. Up to ~1MB recommended."
          },
          "format": {
            "type": "string",
            "enum": [
              "jsonl",
              "json",
              "ndarray"
            ],
            "description": "Output shape. 'jsonl' (default, newline-delimited JSON objects), 'json' (single JSON array), 'ndarray' (column-oriented arrays)."
          },
          "delimiter": {
            "type": "string",
            "description": "Field delimiter. Default ','. Use '\\t' for TSV, ';' for European CSV, '|' for pipe-delimited."
          },
          "quote_char": {
            "type": "string",
            "description": "Quote character for fields containing the delimiter or newlines. Default '\"'."
          },
          "has_header": {
            "type": "boolean",
            "description": "Whether the first row is the header. Default true. If false, columns are named c1, c2, ..."
          },
          "rename": {
            "type": "object",
            "description": "Optional column-rename map, e.g. { 'first name': 'first_name', 'DOB': 'date_of_birth' }."
          },
          "drop_columns": {
            "type": "array",
            "description": "Column names to drop from the output."
          },
          "infer_types": {
            "type": "boolean",
            "description": "If true (default), parse booleans, integers, floats, ISO-8601 dates, and null tokens. If false, every value stays a string."
          },
          "null_values": {
            "type": "array",
            "description": "Strings to coerce to JSON null. Default ['', 'null', 'NULL', 'NA', 'N/A']."
          },
          "trim": {
            "type": "boolean",
            "description": "Trim leading/trailing whitespace from each field. Default true."
          }
        },
        "required": [
          "csv"
        ]
      },
      "outputProperties": {
        "jsonl": {
          "type": "string"
        },
        "data": {
          "type": "array"
        },
        "mime_type": {
          "type": "string"
        },
        "row_count": {
          "type": "number"
        },
        "column_count": {
          "type": "number"
        },
        "columns": {
          "type": "array"
        },
        "format": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/csv-to-jsonl"
    },
    "cve": {
      "slug": "cve",
      "price": "0.005",
      "cluster": "prooflayer",
      "description": "CVE lookup / vulnerability database. NIST NVD-backed. CVSS v3.1+v2 scores, severity, affected CPEs, CWE, exploit indicators + LLM summary.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "cve",
        "vulnerability",
        "security",
        "nvd",
        "exploit"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "cve_id": {
            "type": "string",
            "description": "e.g. 'CVE-2021-44228'."
          }
        },
        "required": [
          "cve_id"
        ]
      },
      "outputProperties": {
        "cve_id": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "published": {
          "type": "string"
        },
        "cvss_v3_1": {
          "type": "object"
        },
        "cvss_v2": {
          "type": "object"
        },
        "score": {
          "type": "number"
        },
        "severity": {
          "type": "string"
        },
        "cwe": {
          "type": "array"
        },
        "affected_cpes": {
          "type": "array"
        },
        "exploit_summary": {
          "type": "string"
        },
        "public_exploit_known": {
          "type": "boolean"
        },
        "exploit_references": {
          "type": "array"
        },
        "references": {
          "type": "array"
        }
      },
      "url": "https://x402.org/v1/cve"
    },
    "cve-lookup": {
      "slug": "cve-lookup",
      "price": "0.005",
      "cluster": "prooflayer",
      "description": "CVE lookup / vulnerability database. NIST NVD-backed. CVSS v3.1 + v2 scores, severity, affected CPEs, CWE class, references, public-exploit indicators. Plus LLM exploitability summary.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "cve",
        "vulnerability",
        "security",
        "nvd",
        "exploit"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "cve_id": {
            "type": "string",
            "description": "e.g. 'CVE-2021-44228'."
          }
        },
        "required": [
          "cve_id"
        ]
      },
      "outputProperties": {
        "cve_id": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "published": {
          "type": "string"
        },
        "cvss_v3_1": {
          "type": "object"
        },
        "cvss_v2": {
          "type": "object"
        },
        "score": {
          "type": "number"
        },
        "severity": {
          "type": "string"
        },
        "cwe": {
          "type": "array"
        },
        "affected_cpes": {
          "type": "array"
        },
        "exploit_summary": {
          "type": "string"
        },
        "public_exploit_known": {
          "type": "boolean"
        },
        "exploit_references": {
          "type": "array"
        },
        "references": {
          "type": "array"
        }
      },
      "url": "https://x402.org/v1/cve-lookup"
    },
    "dao-proposal-monitor": {
      "slug": "dao-proposal-monitor",
      "price": "0.03",
      "cluster": "edge-market",
      "description": "Snapshot.org DAO proposal monitor. Recent proposals + vote tallies + voter counts for any Snapshot space. Optional Venice TLDR.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "space": {
            "type": "string",
            "description": "Snapshot space (e.g. 'aave.eth')."
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "closed",
              "pending",
              "all"
            ],
            "description": "Filter by proposal state. Default 'all'."
          },
          "limit": {
            "type": "number",
            "description": "Max proposals to return. 1-50. Default 10 (most-recent-first)."
          },
          "summarize": {
            "type": "boolean",
            "description": "If true, generates a Venice-LLM TLDR per proposal (extra latency). Default false."
          }
        },
        "required": [
          "space"
        ]
      },
      "outputProperties": {
        "proposal_count": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/dao-proposal-monitor"
    },
    "db-migration-risk": {
      "slug": "db-migration-risk",
      "price": "0.02",
      "cluster": "prooflayer",
      "description": "DB migration risk audit / SQL migration safety check / DROP COLUMN detector / unsafe ALTER TABLE detector / Postgres CREATE INDEX CONCURRENTLY check / Alembic op.drop_* detector / TRUNCATE/DELETE WHERE detector / foreign key NOT VALID check / pre-deploy DB gate. Walks `migrations/`, `prisma/migrations/`, `db/migrate/`, `supabase/migrations/`, `alembic/versions/` and flags destructive DDL, lock-heavy ALTER TABLE, NOT NULL without DEFAULT, plain CREATE INDEX (vs CONCURRENTLY), unbounded TRUNCATE/DELETE, and FK validation without NOT VALID. Returns 0-100 score, per-finding kind/severity/path/line/evidence/recommendation, and a Venice plain-English verdict. Dual input: {repo: 'owner/name'} for public GitHub or {files: [{path, content}, …]} for private / agent-workspace use.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "security",
        "database",
        "migrations",
        "sql",
        "alembic",
        "postgres",
        "prooflayer"
      ],
      "inputSchema": {
        "type": "object"
      },
      "outputProperties": {
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "findings": {
          "type": "array"
        },
        "signals": {
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/db-migration-risk"
    },
    "defi-llama-protocol": {
      "slug": "defi-llama-protocol",
      "price": "0.02",
      "cluster": "edge-market",
      "description": "DefiLlama protocol lookup — TVL, chain breakdown, current TVL, 24h/7d/30d changes, audits, parent protocol, categories. Free public API with attribution.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "description": "DefiLlama slug (e.g. 'aave', 'lido')."
          },
          "include_tvl_series": {
            "type": "boolean",
            "description": "If true, attach the full historical TVL time-series under tvl_summary.series. Adds significant payload size. Default false."
          }
        },
        "required": [
          "protocol"
        ]
      },
      "outputProperties": {
        "current_tvl_usd": {
          "type": "string",
          "description": ""
        },
        "name": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/defi-llama-protocol"
    },
    "defi-yield-pools": {
      "slug": "defi-yield-pools",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "DeFi yield pools / APY aggregator / yield-farming opportunities / DeFiLlama yields / cross-protocol APY ranking / stablecoin yields / LP pool returns. Filter and rank thousands of DeFi yield-bearing pools across every chain DeFiLlama tracks. Filters: chain, project, asset symbol, stablecoin-only, single-vs-LP exposure, TVL minimum, APY range, impermanent-loss risk. Returns pool ID, chain, project, symbol, current APY (base + reward), 30-day mean APY, day/week/month APY change, TVL, exposure, IL risk, and predicted-class. Differentiates from defi-llama-protocol (single-protocol TVL) — this is the yield-discovery surface.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string",
            "description": "e.g. 'Ethereum', 'Base', 'Arbitrum'. Exact-case match against DeFiLlama's chain field."
          },
          "project": {
            "type": "string",
            "description": "e.g. 'aave-v3', 'lido', 'uniswap-v3'. Exact match against DeFiLlama project slug."
          },
          "symbol": {
            "type": "string",
            "description": "Substring match against pool symbol, e.g. 'USDC'."
          },
          "stablecoin_only": {
            "type": "boolean",
            "description": "Only stablecoin pools."
          },
          "single_only": {
            "type": "boolean",
            "description": "Only single-asset exposure (excludes LP pairs)."
          },
          "min_tvl_usd": {
            "type": "number",
            "description": "Minimum TVL in USD."
          },
          "min_apy": {
            "type": "number",
            "description": "Minimum APY %."
          },
          "max_apy": {
            "type": "number",
            "description": "Maximum APY % (filters out outliers)."
          },
          "il_risk": {
            "type": "string",
            "enum": [
              "no",
              "yes"
            ],
            "description": "Filter by impermanent-loss risk classification."
          },
          "order_by": {
            "type": "string",
            "enum": [
              "apy",
              "tvlUsd",
              "apyBase",
              "apyReward"
            ],
            "description": "Default 'apy'."
          },
          "limit": {
            "type": "number",
            "description": "1-500. Default 50."
          }
        }
      },
      "outputProperties": {
        "pools": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "matched_count": {
          "type": "string",
          "description": ""
        },
        "universe_count": {
          "type": "string",
          "description": ""
        },
        "summary": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/defi-yield-pools"
    },
    "dep-risk-summary": {
      "slug": "dep-risk-summary",
      "price": "0.03",
      "cluster": "prooflayer",
      "description": "repo dependency risk audit / package.json + lockfile vetter / unpinned dep detector / transitive dep counter / requirements.txt audit / pyproject dep risk / repo-level supply-chain risk score / Snyk-adjacent / deprecated dep detector / install-script dep detector. Best-effort scan of package.json, pnpm-lock.yaml, package-lock.json, yarn.lock, bun.lock (JS); requirements.txt, pyproject.toml, poetry.lock (Python); go.mod, go.sum (Go). Samples 10 alphabetically-first direct deps via npm/PyPI registry for deprecation + install-script signals. Returns 0-100 score, per-finding kind/severity/path/evidence/recommendation, and a Venice plain-English verdict. Dual input: {repo: 'owner/name'} or {files: [{path, content}, …]}.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "security",
        "dependencies",
        "supply-chain",
        "npm",
        "pypi",
        "lockfile",
        "prooflayer"
      ],
      "inputSchema": {
        "type": "object"
      },
      "outputProperties": {
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "findings": {
          "type": "array"
        },
        "signals": {
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/dep-risk-summary"
    },
    "deploy-config-risk": {
      "slug": "deploy-config-risk",
      "price": "0.02",
      "cluster": "prooflayer",
      "description": "deploy config audit / Dockerfile lint / vercel.json hardening / wrangler.toml review / docker-compose.yml safety / fly.toml secrets check / netlify deploy gate / open CORS detector / exposed admin port detector / plaintext secret in env detector / production-readiness deploy gate. Fetches deploy config files (Dockerfile, wrangler.toml, vercel.json, netlify.toml, fly.toml, docker-compose.yml, serverless.yml) and flags open CORS with credentials, exposed admin ports (22/5432/6379/etc), plaintext secrets in inline env, dev/debug mode left enabled, missing healthchecks. Returns 0-100 score, per-finding kind/severity/path/line/redacted-evidence/recommendation, and a Venice plain-English verdict. Dual input: {repo: 'owner/name'} for public GitHub or {files: [{path, content}, …]} for private / agent-workspace use.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "security",
        "deploy",
        "dockerfile",
        "cors",
        "secrets",
        "prooflayer"
      ],
      "inputSchema": {
        "type": "object"
      },
      "outputProperties": {
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "findings": {
          "type": "array"
        },
        "signals": {
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/deploy-config-risk"
    },
    "describe-image": {
      "slug": "describe-image",
      "price": "0.02",
      "cluster": "textkit",
      "description": "AI image descriptor / vision LLM. Modes: describe, alt_text (accessibility, ≤125 chars), OCR (extract visible text), tags (8-15 keywords), caption (single-sentence). Vision LLM powered.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "image",
        "vision",
        "ocr",
        "alt-text",
        "caption",
        "ai",
        "llm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "Public URL of an image."
          },
          "mode": {
            "type": "string",
            "enum": [
              "describe",
              "alt_text",
              "ocr",
              "tags",
              "caption"
            ],
            "description": "'describe' (default), 'alt_text', 'ocr', 'tags', 'caption'."
          },
          "prompt": {
            "type": "string",
            "description": "Optional custom instruction. Overrides mode."
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string"
        },
        "mode": {
          "type": "string"
        },
        "image_url": {
          "type": "string"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/describe-image"
    },
    "detect-language": {
      "slug": "detect-language",
      "price": "0.005",
      "cluster": "textkit",
      "description": "Language detector / language identification. ISO 639-1 code, full name, confidence (0-1). Mixed-language detection with secondary languages list. 100+ languages.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "nlp",
        "language",
        "detect",
        "ai",
        "i18n"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text. Max 10,000 chars (only first 2k sampled to model)."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "language_code": {
          "type": "string",
          "description": "ISO 639-1 two-letter code."
        },
        "language_name": {
          "type": "string"
        },
        "confidence": {
          "type": "number",
          "description": "0 to 1."
        },
        "is_mixed": {
          "type": "boolean"
        },
        "secondary_languages": {
          "type": "array",
          "description": "ISO codes if is_mixed=true."
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/detect-language"
    },
    "detect-pii": {
      "slug": "detect-pii",
      "price": "0.02",
      "cluster": "textkit",
      "description": "PII detector / data leak scanner. Emails, phones, SSNs, credit cards, addresses, names, IPs, API tokens. Returns matches + risk_level. Optional redaction with [TYPE] tokens.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "pii",
        "privacy",
        "redact",
        "compliance",
        "security"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "redact": {
            "type": "boolean",
            "description": "Return text with matches replaced by [TYPE]."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "matches": {
          "type": "array"
        },
        "match_count": {
          "type": "number"
        },
        "pii_density": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "redacted_text": {
          "type": "string"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/detect-pii"
    },
    "dex-liquidity-depth": {
      "slug": "dex-liquidity-depth",
      "price": "0.01",
      "cluster": "edge-market",
      "description": "DEX liquidity depth / pool TVL aggregator / total liquidity per token / on-chain liquidity audit. Sums TVL across every DefiLlama-tracked yield pool that holds a given ERC-20 on Ethereum, Base, Polygon, Arbitrum, or Optimism. Returns per-pool TVL + APY plus total liquidity in USD and the deepest pool. Free public DefiLlama backend, no auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte ERC-20 contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "token_address"
        ]
      },
      "outputProperties": {
        "token_address": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "pool_count": {
          "type": "string",
          "description": ""
        },
        "total_liquidity_usd": {
          "type": "string",
          "description": ""
        },
        "pools": {
          "type": "string",
          "description": ""
        },
        "top_pool": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/dex-liquidity-depth"
    },
    "dictionary-define": {
      "slug": "dictionary-define",
      "price": "0.002",
      "cluster": "textkit",
      "description": "English dictionary / word definition / lookup word / pronunciation / part of speech / synonyms / etymology adjacent. Returns part-of-speech-grouped definitions with usage examples and per-sense synonyms, plus IPA phonetic and a pronunciation audio URL when available. Wraps the public Free Dictionary API — no auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "word": {
            "type": "string",
            "description": "English word to define (case-insensitive). Single token, no whitespace required for compound words."
          }
        },
        "required": [
          "word"
        ]
      },
      "outputProperties": {
        "word": {
          "type": "string",
          "description": ""
        },
        "phonetic": {
          "type": "string",
          "description": ""
        },
        "pronunciation_audio_url": {
          "type": "string",
          "description": ""
        },
        "meanings": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/dictionary-define"
    },
    "disposable-email-check": {
      "slug": "disposable-email-check",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "Disposable email detector / fake email filter / fraud signup defense. Cross-checks 100k+ disposable domains list. Flags role accounts (admin@, noreply@). Verifies MX record via Cloudflare DoH.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "email",
        "disposable",
        "validation",
        "fraud"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to evaluate (e.g. 'user@mailinator.com'). Only the domain and local-part shape are used; the address is not contacted."
          }
        },
        "required": [
          "email"
        ]
      },
      "outputProperties": {
        "email": {
          "type": "string"
        },
        "local_part": {
          "type": "string"
        },
        "domain": {
          "type": "string"
        },
        "is_valid_format": {
          "type": "boolean"
        },
        "is_disposable": {
          "type": "boolean"
        },
        "matched_blocklist_domain": {
          "type": "string"
        },
        "is_explicitly_allowed": {
          "type": "boolean"
        },
        "is_role_account": {
          "type": "boolean"
        },
        "has_plus_tag": {
          "type": "boolean"
        },
        "has_mx_record": {
          "type": "boolean"
        },
        "blocklist_size": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/disposable-email-check"
    },
    "dmarc-check": {
      "slug": "dmarc-check",
      "price": "0.02",
      "cluster": "web-probe",
      "description": "DMARC / SPF / DKIM checker. Email-authentication audit — pulls TXT records, parses DMARC policy (none/quarantine/reject), SPF mechanisms, DKIM selectors. Returns 0-100 score + grade A-F + reasons.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "dmarc",
        "spf",
        "dkim",
        "email-auth",
        "deliverability",
        "security"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Apex domain to audit (e.g. 'google.com'). Resolves SPF/DMARC TXT at the domain and at _dmarc.<domain>."
          },
          "dkim_selectors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of DKIM selectors (e.g. ['google','default']). Default: 15 common selectors."
          }
        },
        "required": [
          "domain"
        ]
      },
      "outputProperties": {
        "domain": {
          "type": "string"
        },
        "score": {
          "type": "number"
        },
        "grade": {
          "type": "string"
        },
        "reasons": {
          "type": "array"
        },
        "spf": {
          "type": "object"
        },
        "dmarc": {
          "type": "object"
        },
        "dkim": {
          "type": "object"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/dmarc-check"
    },
    "dns-lookup": {
      "slug": "dns-lookup",
      "price": "0.02",
      "cluster": "web-probe",
      "description": "DNS lookup / DNS resolver / DoH proxy. Query A, AAAA, MX, TXT, NS, CNAME, SOA, PTR, SRV, CAA, DNSKEY, DS, TLSA, HTTPS, SVCB records via Cloudflare DNS-over-HTTPS. No DNS infrastructure required.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "dns",
        "doh",
        "resolver",
        "mx",
        "txt",
        "spf"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain or hostname to resolve (e.g. 'example.com', 'mail.example.com'). Sent as-is, not stripped to apex."
          },
          "types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Default: A, AAAA, MX, TXT, NS, CAA. Max 12 types per call."
          }
        },
        "required": [
          "domain"
        ]
      },
      "outputProperties": {
        "domain": {
          "type": "string"
        },
        "types_queried": {
          "type": "array"
        },
        "records": {
          "type": "object"
        },
        "flat": {
          "type": "object",
          "description": "Convenience flat fields: a[], aaaa[], mx[], ns[], txt[], cname[], caa[]."
        },
        "total_records": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/dns-lookup"
    },
    "domain-availability": {
      "slug": "domain-availability",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "Domain availability / RDAP lookup / WHOIS replacement / domain registration checker / expiry date lookup. Returns is_registered, registrar, registration date, expiry date, days_until_expiry, and current EPP status flags for any TLD that supports RDAP (effectively all gTLDs and most ccTLDs). Backed by rdap.org, the public RFC-7480-compliant aggregator. 404s map to is_registered: false rather than an error.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain to check (e.g. 'example.com'). Strip protocol/path automatically."
          }
        },
        "required": [
          "domain"
        ]
      },
      "outputProperties": {
        "domain": {
          "type": "string",
          "description": ""
        },
        "is_registered": {
          "type": "string",
          "description": ""
        },
        "registrar": {
          "type": "string",
          "description": ""
        },
        "status": {
          "type": "string",
          "description": ""
        },
        "registered_date": {
          "type": "string",
          "description": ""
        },
        "expires_date": {
          "type": "string",
          "description": ""
        },
        "last_changed": {
          "type": "string",
          "description": ""
        },
        "days_until_expiry": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/domain-availability"
    },
    "earnings-calendar": {
      "slug": "earnings-calendar",
      "price": "0.03",
      "cluster": "edge-finance",
      "description": "Earnings calendar derived from SEC 8-K Item 2.02, 10-Q, 10-K, NT 10-Q, NT 10-K filings. Federal public SEC EDGAR data only — no aggregator ToU concerns.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "US-listed ticker (e.g. 'AAPL', 'MSFT'). Either ticker or cik is required."
          },
          "cik": {
            "type": "string",
            "description": "SEC CIK (zero-padded or numeric, e.g. '0000320193'). Use when ticker is ambiguous or unavailable."
          },
          "limit": {
            "type": "number",
            "description": "Max earnings-related filings to return. 1-50. Default 8."
          },
          "upcoming_only": {
            "type": "boolean",
            "description": "If true, only returns the next-earnings estimate plus future-dated filings (skips historical events). Default false."
          }
        }
      },
      "outputProperties": {
        "event_count": {
          "type": "string",
          "description": ""
        },
        "next_earnings_estimate": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/earnings-calendar"
    },
    "earnings-call-transcribe": {
      "slug": "earnings-call-transcribe",
      "price": "0.03",
      "cluster": "edge-finance",
      "description": "Earnings call transcriber. Caller-supplied IR webcast/replay URL → Whisper v3 transcript → optional Venice structured summary (prepared remarks, Q&A, guidance, key metrics).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "audio_url": {
            "type": "string"
          },
          "ticker": {
            "type": "string"
          },
          "summarize": {
            "type": "boolean"
          },
          "language": {
            "type": "string"
          }
        },
        "required": [
          "audio_url"
        ]
      },
      "outputProperties": {
        "transcript_chars": {
          "type": "string",
          "description": ""
        },
        "duration_seconds": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/earnings-call-transcribe"
    },
    "earnings-transcript": {
      "slug": "earnings-transcript",
      "price": "0.03",
      "cluster": "edge-finance",
      "description": "Earnings call transcript generator. Submit any IR webcast or replay URL — Whisper v3 returns a full transcript, plus an optional Venice structured summary (prepared remarks, Q&A, guidance, key metrics). Same backend as earnings-call-transcribe under a clearer slug.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "audio_url": {
            "type": "string"
          },
          "ticker": {
            "type": "string"
          },
          "summarize": {
            "type": "boolean"
          },
          "language": {
            "type": "string"
          }
        },
        "required": [
          "audio_url"
        ]
      },
      "outputProperties": {
        "transcript_chars": {
          "type": "string",
          "description": ""
        },
        "duration_seconds": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/earnings-transcript"
    },
    "earthquakes-recent": {
      "slug": "earthquakes-recent",
      "price": "0.002",
      "cluster": "locale",
      "description": "Earthquake feed / seismic activity / USGS / recent quakes / quake monitor / tremor data / fault line activity / tsunami alerts. Returns recent earthquakes from the past hour / day / week / month, filtered by minimum magnitude and an optional bounding box. Each quake includes magnitude + type, depth (km), place, ISO8601 time, lat/lon, tsunami flag, USGS event URL, and felt-report count when available. Wraps USGS GeoJSON summary feeds — public domain, no auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "time_range": {
            "type": "string",
            "enum": [
              "hour",
              "day",
              "week",
              "month"
            ],
            "description": "Time window for the feed. Default 'day'."
          },
          "min_magnitude": {
            "type": "number",
            "description": "Lower bound on quake magnitude (Richter/moment). Default 2.5."
          },
          "bounds": {
            "type": "object",
            "description": "Optional geographic bounding box { north, south, east, west } in decimal degrees. Antimeridian-crossing boxes (west > east) supported.",
            "properties": {
              "north": {
                "type": "number"
              },
              "south": {
                "type": "number"
              },
              "east": {
                "type": "number"
              },
              "west": {
                "type": "number"
              }
            }
          }
        }
      },
      "outputProperties": {
        "count": {
          "type": "string",
          "description": ""
        },
        "range": {
          "type": "string",
          "description": ""
        },
        "earthquakes": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/earthquakes-recent"
    },
    "email-draft": {
      "slug": "email-draft",
      "price": "0.02",
      "cluster": "textkit",
      "description": "AI email writer / cold outreach / follow-up generator. Subject + body + salutation + sign-off. 7 tones × 10 email types (cold_outreach, follow_up, decline, reply, internal_update, thank_you, intro, request, apology, general). Length controls.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "email",
        "writing",
        "outreach",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "What you want to communicate, to whom."
          },
          "recipient_name": {
            "type": "string"
          },
          "sender_name": {
            "type": "string"
          },
          "tone": {
            "type": "string"
          },
          "email_type": {
            "type": "string"
          },
          "length": {
            "type": "string",
            "enum": [
              "very_short",
              "short",
              "medium",
              "long"
            ]
          },
          "cta": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "subject": {
          "type": "string"
        },
        "body": {
          "type": "string"
        },
        "salutation": {
          "type": "string"
        },
        "sign_off": {
          "type": "string"
        },
        "word_count": {
          "type": "number"
        },
        "estimated_reading_seconds": {
          "type": "number"
        },
        "tone": {
          "type": "string"
        },
        "email_type": {
          "type": "string"
        },
        "length": {
          "type": "string"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/email-draft"
    },
    "embedding-similarity": {
      "slug": "embedding-similarity",
      "price": "0.002",
      "cluster": "textkit",
      "description": "Embedding similarity / cosine similarity / semantic match / vector compare / are-these-strings-similar. Embeds two strings via Venice (default model: text-embedding-bge-m3) and returns the cosine similarity as a single float in [-1, 1]. Useful for paraphrase detection, dedup, and cheap retrieval routing.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text_a": {
            "type": "string",
            "description": "First text. Up to 30,000 chars."
          },
          "text_b": {
            "type": "string",
            "description": "Second text. Up to 30,000 chars."
          },
          "model": {
            "type": "string",
            "description": "Venice embedding model. Default 'text-embedding-bge-m3'."
          }
        },
        "required": [
          "text_a",
          "text_b"
        ]
      },
      "outputProperties": {
        "text_a": {
          "type": "string",
          "description": ""
        },
        "text_b": {
          "type": "string",
          "description": ""
        },
        "similarity": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "dimensions": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/embedding-similarity"
    },
    "ens-resolve": {
      "slug": "ens-resolve",
      "price": "0.03",
      "cluster": "edge-market",
      "description": "ENS resolver / Ethereum Name Service lookup. Forward (vitalik.eth → 0x...address) and reverse (0x... → primary ENS name) with text records (avatar, url, description, com.twitter, com.github, email, org.telegram).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "ens",
        "ethereum",
        "crypto",
        "name-service",
        "web3"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "ENS name (vitalik.eth) or 0x address."
          },
          "text_records": {
            "type": "array",
            "description": "Optional text record keys to fetch (max 15). Default: avatar, url, description, com.twitter, com.github, email, org.telegram."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "mode": {
          "type": "string",
          "enum": [
            "forward",
            "reverse"
          ]
        },
        "ens_name": {
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "text_records": {
          "type": "object"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/ens-resolve"
    },
    "erc20-balance": {
      "slug": "erc20-balance",
      "price": "0.002",
      "cluster": "edge-market",
      "description": "ERC-20 balance reader / balanceOf / on-chain token balance / wallet balance lookup / multi-chain ERC20 balance / read Base / read Ethereum / read Arbitrum / read Optimism / read Polygon. Reads balanceOf(wallet) on a token contract across any supported EVM chain via public RPC (no API key needed). Co-fetches decimals to return both raw bigint and decimal-formatted balance. Supports historical block parameter. Useful for agent wallet introspection, payment reconciliation, treasury monitoring.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "ERC-20 contract address (0x...)."
          },
          "wallet": {
            "type": "string",
            "description": "Wallet address to query (0x...)."
          },
          "chain": {
            "description": "Chain id or slug. 8453|'base' (default), 1|'ethereum', 42161|'arbitrum', 10|'optimism', 137|'polygon', 56|'bsc', 43114|'avalanche'."
          },
          "block": {
            "description": "'latest' default, or hex/decimal block number for historical reads."
          }
        },
        "required": [
          "token",
          "wallet"
        ]
      },
      "outputProperties": {
        "chain": {
          "type": "string",
          "description": ""
        },
        "chain_id": {
          "type": "string",
          "description": ""
        },
        "token": {
          "type": "string",
          "description": ""
        },
        "wallet": {
          "type": "string",
          "description": ""
        },
        "block": {
          "type": "string",
          "description": ""
        },
        "balance_raw": {
          "type": "string",
          "description": ""
        },
        "balance_hex": {
          "type": "string",
          "description": ""
        },
        "decimals": {
          "type": "string",
          "description": ""
        },
        "balance": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/erc20-balance"
    },
    "erc20-metadata": {
      "slug": "erc20-metadata",
      "price": "0.002",
      "cluster": "edge-market",
      "description": "ERC-20 metadata reader / token info / token symbol lookup / token decimals / total supply / multi-chain ERC20 reader / Base / Ethereum / Arbitrum / Optimism / Polygon / BSC / Avalanche. Reads name(), symbol(), decimals(), totalSupply() in parallel via public RPC. Robust to non-standard tokens that return bytes32 instead of string (MakerDAO MKR pattern is decoded). Returns formatted total supply when decimals are present, plus a chain-appropriate block explorer URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "ERC-20 contract address (0x...)."
          },
          "chain": {
            "description": "Chain id or slug. 8453|'base' (default), 1|'ethereum', 42161|'arbitrum', 10|'optimism', 137|'polygon', 56|'bsc', 43114|'avalanche'."
          },
          "block": {
            "description": "'latest' default, or hex/decimal block number."
          }
        },
        "required": [
          "token"
        ]
      },
      "outputProperties": {
        "chain": {
          "type": "string",
          "description": ""
        },
        "chain_id": {
          "type": "string",
          "description": ""
        },
        "token": {
          "type": "string",
          "description": ""
        },
        "block": {
          "type": "string",
          "description": ""
        },
        "name": {
          "type": "string",
          "description": ""
        },
        "symbol": {
          "type": "string",
          "description": ""
        },
        "decimals": {
          "type": "string",
          "description": ""
        },
        "total_supply_raw": {
          "type": "string",
          "description": ""
        },
        "total_supply": {
          "type": "string",
          "description": ""
        },
        "explorer_url": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/erc20-metadata"
    },
    "eth-logs": {
      "slug": "eth-logs",
      "price": "0.01",
      "cluster": "edge-market",
      "description": "eth_getLogs / on-chain event logs / EVM event reader / Transfer event scan / ERC20 Transfer logs / NFT mint logs / DEX swap events / multi-chain log scanner / log indexer / smart contract event reader. Generic eth_getLogs across Base / Ethereum / Arbitrum / Optimism / Polygon / BSC via public no-auth RPC. Supports address + up to 4 topics (with OR arrays), from/to block range, and a 'last_n_blocks' convenience param. Hard-capped at 5,000 logs and 10,000-block range per call.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "chain": {
            "description": "Chain id or slug. Default 'base'. Supported: 8453|'base', 1|'ethereum', 42161|'arbitrum', 10|'optimism', 137|'polygon', 56|'bsc'."
          },
          "address": {
            "description": "Contract address (0x..., string or array of strings). Optional."
          },
          "topics": {
            "type": "array",
            "description": "Up to 4 topics. Each element: hex string (32 bytes), array of hex strings (OR-filter), or null (wildcard at that position)."
          },
          "from_block": {
            "description": "Hex string ('0x...'), decimal number, or 'latest'/'earliest'/'pending'/'safe'/'finalized'."
          },
          "to_block": {
            "description": "Same shape as from_block. Default 'latest'."
          },
          "last_n_blocks": {
            "type": "number",
            "description": "Convenience: query the last N blocks. Overrides from/to_block."
          }
        }
      },
      "outputProperties": {
        "chain": {
          "type": "string",
          "description": ""
        },
        "chain_id": {
          "type": "string",
          "description": ""
        },
        "from_block": {
          "type": "string",
          "description": ""
        },
        "to_block": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "total_count": {
          "type": "string",
          "description": ""
        },
        "truncated": {
          "type": "string",
          "description": ""
        },
        "logs": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/eth-logs"
    },
    "excel-to-csv": {
      "slug": "excel-to-csv",
      "price": "0.005",
      "cluster": "mediakit",
      "description": "Excel (.xlsx / .xls) → CSV / TSV / JSON converter. Multi-sheet handling. Returns each sheet by name. Adjacent to 'convert excel to google sheets' demand cluster.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "xlsx_url": {
            "type": "string"
          },
          "sheet": {
            "type": "string"
          },
          "format": {
            "type": "string",
            "enum": [
              "csv",
              "tsv",
              "json"
            ]
          },
          "include_all_sheets": {
            "type": "boolean"
          }
        },
        "required": [
          "xlsx_url"
        ]
      },
      "outputProperties": {
        "sheet_count": {
          "type": "string",
          "description": ""
        },
        "total_rows": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/excel-to-csv"
    },
    "excel-to-google-sheets": {
      "slug": "excel-to-google-sheets",
      "price": "0.005",
      "cluster": "mediakit",
      "description": "Convert Excel to Google Sheets / XLSX to Google Sheets / spreadsheet import / Numbers to Google Sheets / Excel to gsheet. Outputs CSV that imports directly into Google Sheets via File → Import → Upload (or paste-into-cells). Multi-sheet handling, encoding control, quote style. Same handler as excel-to-csv / xlsx-to-csv under a Google-Sheets-named slug.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "excel",
        "google-sheets",
        "csv",
        "spreadsheet",
        "import",
        "xlsx"
      ],
      "aliasOf": "excel-to-csv",
      "inputSchema": {
        "type": "object",
        "properties": {
          "xlsx_url": {
            "type": "string"
          },
          "sheet": {
            "type": "string"
          },
          "format": {
            "type": "string",
            "enum": [
              "csv",
              "tsv",
              "json"
            ]
          },
          "include_all_sheets": {
            "type": "boolean"
          }
        },
        "required": [
          "xlsx_url"
        ]
      },
      "outputProperties": {
        "sheet_count": {
          "type": "string",
          "description": ""
        },
        "total_rows": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/excel-to-google-sheets"
    },
    "exchange-rates": {
      "slug": "exchange-rates",
      "price": "0.002",
      "cluster": "edge-finance",
      "description": "FX rates / forex / currency converter / USD to EUR / ECB rates / historical exchange rates. Returns the latest or any historical day's exchange rates between currencies, sourced from the European Central Bank via the public Frankfurter API. Specify a base currency (default USD), an optional quote currency or list, an optional date (YYYY-MM-DD or 'latest'), and an optional amount to also receive a converted value when a single quote is supplied. No auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "base": {
            "type": "string",
            "description": "ISO 4217 base currency code (e.g. 'USD', 'EUR'). Default 'USD'."
          },
          "quote": {
            "description": "Single ISO 4217 quote currency, or array of codes. Omit for all available rates."
          },
          "date": {
            "type": "string",
            "description": "'latest' (default) or a historical date in YYYY-MM-DD format."
          },
          "amount": {
            "type": "number",
            "description": "Optional amount in the base currency. When a single quote is supplied, the response includes the converted amount."
          }
        }
      },
      "outputProperties": {
        "base": {
          "type": "string",
          "description": ""
        },
        "date": {
          "type": "string",
          "description": ""
        },
        "rates": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/exchange-rates"
    },
    "expand-url": {
      "slug": "expand-url",
      "price": "0.02",
      "cluster": "web-probe",
      "description": "URL expander / redirect chain tracer / link-shortener resolver. Follows HTTP redirects step-by-step, returns every hop with status, location, redirect type, response time. Phishing-link analysis, marketing attribution, click-tracking.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "url",
        "redirect",
        "shortlink",
        "trace",
        "phishing"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Starting URL (typically a shortlink). Must be http(s)."
          },
          "max_hops": {
            "type": "number",
            "description": "1-50. Default 15."
          },
          "user_agent": {
            "type": "string",
            "description": "Optional User-Agent header to send (some shorteners gate by UA). Default is a generic browser UA."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "initial_url": {
          "type": "string"
        },
        "final_url": {
          "type": "string"
        },
        "final_status": {
          "type": "number"
        },
        "hop_count": {
          "type": "number"
        },
        "total_duration_ms": {
          "type": "number"
        },
        "hops": {
          "type": "array"
        },
        "truncated": {
          "type": "boolean"
        },
        "error": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/expand-url"
    },
    "extract": {
      "slug": "extract",
      "price": "0.02",
      "cluster": "textkit",
      "description": "Named entity extractor / NER. People, organizations, locations, dates, emails, URLs, phone numbers, monetary amounts. Mistral-powered.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "nlp",
        "ner",
        "entities",
        "extraction",
        "ai",
        "llm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text. Max 25,000 chars."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "entities": {
          "type": "object",
          "description": "Object with arrays: people, organizations, locations, dates, emails, urls, phone_numbers, amounts (each amount has mention/value/currency)."
        },
        "total_entities": {
          "type": "number"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/extract"
    },
    "extract-entities": {
      "slug": "extract-entities",
      "price": "0.005",
      "cluster": "textkit",
      "description": "Named entity recognition (NER) / entity extractor. Pulls people, organizations, locations, dates, emails, URLs, phone numbers, monetary amounts. Verbatim with context. Mistral powered.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "nlp",
        "ner",
        "entities",
        "extraction",
        "ai",
        "llm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text. Max 25,000 chars."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "entities": {
          "type": "object",
          "description": "Object with arrays: people, organizations, locations, dates, emails, urls, phone_numbers, amounts (each amount has mention/value/currency)."
        },
        "total_entities": {
          "type": "number"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/extract-entities"
    },
    "extract-tables": {
      "slug": "extract-tables",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "Extract tables from PDF / table extractor / PDF to CSV / spreadsheet from PDF. Detects and extracts every table from a PDF document. Returns structured JSON or CSV per table. 30 pages max via Datalab Marker.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "pdf-extract-tables",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of a PDF file (http or https). Must be directly fetchable, not behind auth or a viewer redirect. Max 30 pages."
          },
          "page_range": {
            "type": "string",
            "description": "Optional 1-indexed page filter applied after extraction. Accepts ranges, single pages, or comma-lists: '1-5', '3', '1,3,5'. Default: all pages."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "source_url": {
          "type": "string",
          "description": ""
        },
        "page_count": {
          "type": "string",
          "description": ""
        },
        "tables": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/extract-tables"
    },
    "fda-calendar": {
      "slug": "fda-calendar",
      "price": "0.03",
      "cluster": "edge-finance",
      "description": "FDA Advisory Committee meeting calendar. Upcoming + recent AdComm meetings scraped from FDA.gov public pages. Federal public.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "upcoming_only": {
            "type": "boolean",
            "description": "If true, return only meetings scheduled in the future (relative to fetched_at). Default false (returns recent + upcoming within the days_back window)."
          },
          "search": {
            "type": "string",
            "description": "Free-text filter applied to meeting title/committee (case-insensitive substring). Examples: 'vaccine', 'oncology', 'cardiovascular'."
          },
          "limit": {
            "type": "number",
            "description": "Max meetings to return (1-50). Default 25."
          }
        }
      },
      "outputProperties": {
        "returned": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/fda-calendar"
    },
    "fec-political-contributions": {
      "slug": "fec-political-contributions",
      "price": "0.04",
      "cluster": "edge-finance",
      "description": "FEC political contributions search via api.open.fec.gov. By donor / committee / candidate / cycle / state / amount. Federal public.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "donor_name": {
            "type": "string",
            "description": "Donor name in 'LAST FIRST' format (FEC convention, e.g. 'SMITH JOHN'). Case-insensitive."
          },
          "committee_id": {
            "type": "string",
            "description": "FEC committee id (recipient), e.g. 'C00401224' for Obama for America."
          },
          "candidate_id": {
            "type": "string",
            "description": "FEC candidate id (recipient candidate), e.g. 'P80003338'."
          },
          "cycle": {
            "type": "number",
            "description": "Election cycle (even year, e.g. 2024, 2026). Default: latest available."
          },
          "state": {
            "type": "string",
            "description": "Donor state, 2-letter code (e.g. 'CA', 'NY')."
          },
          "min_amount": {
            "type": "number",
            "description": "Minimum contribution amount in USD. Default no floor."
          },
          "max_amount": {
            "type": "number",
            "description": "Maximum contribution amount in USD. Default no ceiling."
          },
          "limit": {
            "type": "number",
            "description": "Max records to return. 1-100. Default 20."
          }
        }
      },
      "outputProperties": {
        "total": {
          "type": "string",
          "description": ""
        },
        "returned": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/fec-political-contributions"
    },
    "flight-status": {
      "slug": "flight-status",
      "price": "0.01",
      "cluster": "locale",
      "description": "Flight status / live aircraft position / flight tracker / ICAO24 lookup / callsign lookup / aircraft bounding-box / OpenSky Network state-vector wrapper. Pass icao24 (6-char hex transponder, e.g. 'a808c5'), a callsign (e.g. 'UAL124'), or a bbox {lamin,lamax,lomin,lomax}. Returns last-known position, altitude, speed, heading, on-ground flag, and origin country per aircraft. Single hit to OpenSky's anonymous tier (no API key, commercial-OK with attribution; shared 400 req/day pool).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "flight",
        "aircraft",
        "tracker",
        "opensky",
        "icao24",
        "aviation"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "icao24": {
            "type": "string",
            "description": "24-bit ICAO transponder address in hex (e.g. 'a808c5'). Lowercase, exactly 6 chars."
          },
          "callsign": {
            "type": "string",
            "description": "Flight callsign (e.g. 'UAL124'). Matched against the global state vector; expect higher latency than icao24 lookups."
          },
          "bbox": {
            "type": "object",
            "properties": {
              "lamin": {
                "type": "number"
              },
              "lamax": {
                "type": "number"
              },
              "lomin": {
                "type": "number"
              },
              "lomax": {
                "type": "number"
              }
            },
            "description": "Optional lat/lon bounding box. lamin<lamax, lomin<lomax, |lat|<=90, |lon|<=180."
          }
        }
      },
      "outputProperties": {
        "mode": {
          "type": "string"
        },
        "query": {
          "type": "object"
        },
        "snapshot_time": {
          "type": "number"
        },
        "count": {
          "type": "number"
        },
        "states": {
          "type": "array"
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/flight-status"
    },
    "funding-rates": {
      "slug": "funding-rates",
      "price": "0.002",
      "cluster": "edge-market",
      "description": "Perp funding rates / Binance USD-M futures funding / next-funding-time / 24h history / perp basis. Current funding %, mark + index price, next funding timestamp, and last 24 funding intervals (default 24 × 1h-since-event) for any Binance USD-M futures symbol (BTCUSDT, ETHUSDT, SOLUSDT…). Free public Binance API — no auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Binance futures symbol — uppercase, no slash. e.g. 'BTCUSDT', 'ETHUSDT'."
          },
          "history_intervals": {
            "type": "number",
            "description": "How many past funding events to include. Range [1, 48]. Default 24."
          }
        },
        "required": [
          "symbol"
        ]
      },
      "outputProperties": {
        "symbol": {
          "type": "string",
          "description": ""
        },
        "mark_price": {
          "type": "string",
          "description": ""
        },
        "index_price": {
          "type": "string",
          "description": ""
        },
        "current_funding_rate_pct": {
          "type": "string",
          "description": ""
        },
        "next_funding_at": {
          "type": "string",
          "description": ""
        },
        "last_24h_avg_pct": {
          "type": "string",
          "description": ""
        },
        "last_24h_max_abs_pct": {
          "type": "string",
          "description": ""
        },
        "history": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/funding-rates"
    },
    "gas-now-base": {
      "slug": "gas-now-base",
      "price": "0.02",
      "cluster": "edge-market",
      "description": "Gas oracle / EIP-1559 fee estimator. Real-time base fee + priority fee for Base / Ethereum / Optimism / Arbitrum / Polygon. USD-cost estimates for native transfer, USDC transfer, ERC-20 approve, Uniswap V2/V3 swap, NFT mint, contract deploy.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "gas",
        "crypto",
        "base",
        "ethereum",
        "l2",
        "fee"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "optimism",
              "arbitrum",
              "polygon"
            ],
            "description": "EVM L1/L2 to read gas from. Default 'base'."
          }
        }
      },
      "outputProperties": {
        "chain": {
          "type": "string"
        },
        "chain_id": {
          "type": "string"
        },
        "block_number": {
          "type": "string"
        },
        "block_timestamp": {
          "type": "number"
        },
        "block_iso_timestamp": {
          "type": "string"
        },
        "block_age_seconds": {
          "type": "number"
        },
        "base_fee_gwei": {
          "type": "number"
        },
        "priority_fee_suggestion_gwei": {
          "type": "number"
        },
        "total_recommended_gwei": {
          "type": "number"
        },
        "legacy_gas_price_gwei": {
          "type": "number"
        },
        "native_token": {
          "type": "string"
        },
        "native_token_price_usd": {
          "type": "number"
        },
        "cost_estimates": {
          "type": "object"
        },
        "rpc_url": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/gas-now-base"
    },
    "gas-price": {
      "slug": "gas-price",
      "price": "0.02",
      "cluster": "edge-market",
      "description": "Gas price API / EIP-1559 fee estimator / Base + Ethereum + Optimism + Arbitrum gas tracker / pre-tx cost estimator. Reads the chain's latest block, derives base fee, suggests priority fees for safe-low/standard/fast tiers, computes total maxFeePerGas, and converts cost to USD for common tx types.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "gas-now-base",
      "inputSchema": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "optimism",
              "arbitrum",
              "polygon"
            ],
            "description": "EVM L1/L2 to read gas from. Default 'base'."
          }
        }
      },
      "outputProperties": {
        "chain": {
          "type": "string",
          "description": ""
        },
        "base_fee_gwei": {
          "type": "string",
          "description": ""
        },
        "priority_fee_gwei": {
          "type": "string",
          "description": ""
        },
        "total_recommended_gwei": {
          "type": "string",
          "description": ""
        },
        "block_number": {
          "type": "string",
          "description": ""
        },
        "eth_price_usd": {
          "type": "string",
          "description": ""
        },
        "cost_usd": {
          "type": "string",
          "description": ""
        },
        "timestamp": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/gas-price"
    },
    "github-readme": {
      "slug": "github-readme",
      "price": "0.002",
      "cluster": "web-probe",
      "description": "GitHub README fetch / repo readme / open-source-readme-as-markdown / package documentation puller. Pulls the raw README markdown for any public GitHub repository via the official GitHub REST API — no auth required for public repos. Returns the unaltered markdown plus byte size and char count. Useful for agents documenting a stack, explaining a library, or snipping an example.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "repo": {
            "type": "string",
            "description": "Repository in 'owner/name' form (e.g. 'vercel/next.js')."
          }
        },
        "required": [
          "repo"
        ]
      },
      "outputProperties": {
        "repo": {
          "type": "string",
          "description": ""
        },
        "raw_markdown": {
          "type": "string",
          "description": ""
        },
        "byte_size": {
          "type": "string",
          "description": ""
        },
        "char_count": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/github-readme"
    },
    "github-repo-health": {
      "slug": "github-repo-health",
      "price": "0.03",
      "cluster": "prooflayer",
      "description": "GitHub repo health score / open-source maintainability checker. 0-100 score + grade (abandoned/stale/okay/healthy/thriving). Commit activity, contributors, license, CI, tests. Plus LLM verdict.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "github",
        "open-source",
        "repo",
        "health",
        "score"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "repo": {
            "type": "string",
            "description": "owner/name."
          }
        },
        "required": [
          "repo"
        ]
      },
      "outputProperties": {
        "repo": {
          "type": "string"
        },
        "score": {
          "type": "number"
        },
        "grade": {
          "type": "string"
        },
        "verdict": {
          "type": "string"
        },
        "signals": {
          "type": "object"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/github-repo-health"
    },
    "github-stars-history": {
      "slug": "github-stars-history",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "GitHub stars history / star growth chart / repo popularity over time / trending tracker. Current star count plus a sampled cumulative-stars-vs-date series for any public GitHub repo. Walks 1-10 evenly-spaced pages of /stargazers using application/vnd.github.star+json so each sample carries a starred_at timestamp. Free public API, no auth (subject to GitHub's 60 req/h unauthenticated limit).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "repo": {
            "type": "string",
            "description": "Repository in 'owner/name' form."
          },
          "pages": {
            "type": "number",
            "description": "How many sample pages to walk. Range [1, 10]. Default 5."
          }
        },
        "required": [
          "repo"
        ]
      },
      "outputProperties": {
        "repo": {
          "type": "string",
          "description": ""
        },
        "current_stars": {
          "type": "string",
          "description": ""
        },
        "forks": {
          "type": "string",
          "description": ""
        },
        "created_at": {
          "type": "string",
          "description": ""
        },
        "pushed_at": {
          "type": "string",
          "description": ""
        },
        "history": {
          "type": "string",
          "description": ""
        },
        "sampled_pages": {
          "type": "string",
          "description": ""
        },
        "note": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/github-stars-history"
    },
    "hacker-news-search": {
      "slug": "hacker-news-search",
      "price": "0.001",
      "cluster": "web-probe",
      "description": "Hacker News search / HN search / yc-news / Algolia HN. Searches 30M+ Hacker News stories and comments. Filter by type (story/comment/poll), author, min points, ISO8601 date range; sort by relevance or recency. Returns title, author, points, comment count, URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "hn-search",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text search query (matches title, body, author, URL)."
          },
          "type": {
            "type": "string",
            "enum": [
              "story",
              "comment",
              "poll"
            ],
            "description": "Restrict to a single HN item type. Omit to include all types."
          },
          "author": {
            "type": "string",
            "description": "Filter to a specific HN username (e.g. 'pg', 'dang')."
          },
          "min_points": {
            "type": "number",
            "description": "Minimum points (upvotes) floor. Comments don't have points; using this implicitly filters to stories."
          },
          "since": {
            "type": "string",
            "description": "Lower bound on created_at — ISO8601 date (YYYY-MM-DD) or full timestamp."
          },
          "until": {
            "type": "string",
            "description": "Upper bound on created_at — ISO8601 date (YYYY-MM-DD) or full timestamp."
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "date"
            ],
            "description": "'relevance' (default, popularity-weighted) or 'date' (most-recent-first)."
          },
          "limit": {
            "type": "number",
            "description": "Max hits to return. 1-20. Default 10."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string",
          "description": ""
        },
        "total_hits": {
          "type": "string",
          "description": ""
        },
        "results": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/hacker-news-search"
    },
    "hn-search": {
      "slug": "hn-search",
      "price": "0.001",
      "cluster": "web-probe",
      "description": "HN search / Hacker News search / yc-news / startup-news search / Algolia HN / who-is-hiring scraper / programmer-news firehose. Searches 30M+ Hacker News stories and comments via the public Algolia HN index. Filter by type (story|comment|poll), author, minimum points, ISO8601 date range (since/until), and sort by relevance or recency. Returns total hit count plus per-hit objectID, title, author, points, comment count, created_at, URL, and story/comment text. Public Algolia API — no auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text search query (matches title, body, author, URL)."
          },
          "type": {
            "type": "string",
            "enum": [
              "story",
              "comment",
              "poll"
            ],
            "description": "Restrict to a single HN item type. Omit to include all types."
          },
          "author": {
            "type": "string",
            "description": "Filter to a specific HN username (e.g. 'pg', 'dang')."
          },
          "min_points": {
            "type": "number",
            "description": "Minimum points (upvotes) floor. Comments don't have points; using this implicitly filters to stories."
          },
          "since": {
            "type": "string",
            "description": "Lower bound on created_at — ISO8601 date (YYYY-MM-DD) or full timestamp."
          },
          "until": {
            "type": "string",
            "description": "Upper bound on created_at — ISO8601 date (YYYY-MM-DD) or full timestamp."
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "date"
            ],
            "description": "'relevance' (default, popularity-weighted) or 'date' (most-recent-first)."
          },
          "limit": {
            "type": "number",
            "description": "Max hits to return. 1-20. Default 10."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string",
          "description": ""
        },
        "total_hits": {
          "type": "string",
          "description": ""
        },
        "results": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/hn-search"
    },
    "holiday-lookup": {
      "slug": "holiday-lookup",
      "price": "0.002",
      "cluster": "locale",
      "description": "Public holidays / bank holidays / national holidays / federal holidays / holiday calendar / per-country dates. Returns the official public holidays for any ISO 3166-1 alpha-2 country and year, with localized names, English names, type (Public, Bank, School, etc.), regional vs. national flag, and county/region scoping where applicable. Wraps the public Nager.Date API — no auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. 'US', 'DE', 'JP')."
          },
          "year": {
            "type": "number",
            "description": "Calendar year (e.g. 2026). Range [1900, 2200]."
          }
        },
        "required": [
          "country",
          "year"
        ]
      },
      "outputProperties": {
        "country": {
          "type": "string",
          "description": ""
        },
        "year": {
          "type": "string",
          "description": ""
        },
        "holidays": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/holiday-lookup"
    },
    "homoglyph-check": {
      "slug": "homoglyph-check",
      "price": "0.003",
      "cluster": "web-probe",
      "description": "Homoglyph attack detector / Unicode lookalike scanner. Detects Cyrillic / Greek / fullwidth / mathematical lookalikes commonly used in phishing (apple.com vs аpple.com). Plus invisible / zero-width / RTL-override characters. Risk score 0-100 + normalized form.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "homoglyph",
        "unicode",
        "phishing",
        "security",
        "domain",
        "spoofing"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Max 10000 chars."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string"
        },
        "text_length": {
          "type": "number"
        },
        "homoglyph_findings": {
          "type": "array"
        },
        "homoglyph_count": {
          "type": "number"
        },
        "invisible_findings": {
          "type": "array"
        },
        "invisible_count": {
          "type": "number"
        },
        "block_counts": {
          "type": "object"
        },
        "has_mixed_scripts": {
          "type": "boolean"
        },
        "ascii_only": {
          "type": "boolean"
        },
        "normalized": {
          "type": "string"
        },
        "is_suspicious": {
          "type": "boolean"
        },
        "risk_score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string",
          "enum": [
            "none",
            "low",
            "medium",
            "high"
          ]
        }
      },
      "url": "https://x402.org/v1/homoglyph-check"
    },
    "honeypot-check": {
      "slug": "honeypot-check",
      "price": "0.05",
      "cluster": "edge-market",
      "description": "Honeypot.is buy/sell simulation for any Base or Ethereum ERC-20. Returns is_honeypot verdict, buy/sell/transfer tax %, simulation success flag, and a reason string when a honeypot is detected. Use before every swap to detect sell-blocking risk.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "token-honeypot",
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte EVM token contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "bsc"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "token_address"
        ]
      },
      "outputProperties": {
        "token": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "simulation": {
          "type": "string",
          "description": ""
        },
        "contract": {
          "type": "string",
          "description": ""
        },
        "risk": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/honeypot-check"
    },
    "html-to-markdown": {
      "slug": "html-to-markdown",
      "price": "0.005",
      "cluster": "mediakit",
      "description": "HTML → Markdown converter. Accepts raw HTML or a URL. Strips nav/script/style/ad noise. Preserves headings, lists, tables, code blocks, links, images.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "html": {
            "type": "string",
            "description": "Raw HTML to convert. Mutually exclusive with 'url' — supply one."
          },
          "url": {
            "type": "string",
            "description": "Page URL to fetch and convert. Server follows redirects. Mutually exclusive with 'html'."
          },
          "include_links": {
            "type": "boolean",
            "description": "Keep hyperlinks as Markdown [text](href). Default true. Set false for prose-only output."
          },
          "include_images": {
            "type": "boolean",
            "description": "Keep images as Markdown ![alt](src). Default true."
          },
          "user_agent": {
            "type": "string",
            "description": "Optional User-Agent header sent when fetching 'url'. Default is a generic browser UA."
          }
        }
      },
      "outputProperties": {
        "title": {
          "type": "string",
          "description": ""
        },
        "markdown_chars": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/html-to-markdown"
    },
    "html-to-pdf": {
      "slug": "html-to-pdf",
      "price": "0.08",
      "cluster": "mediakit",
      "description": "URL to PDF / HTML to PDF / webpage screenshot to PDF. CloudConvert capture-website. Configurable page size, orientation, margins, wait conditions. Renders JS.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "html",
        "pdf",
        "url",
        "screenshot",
        "render",
        "capture"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public URL to render."
          },
          "page_format": {
            "type": "string",
            "description": "letter, legal, tabloid, ledger, a0-a6."
          },
          "page_orientation": {
            "type": "string",
            "enum": [
              "portrait",
              "landscape"
            ],
            "description": "'portrait' (default) or 'landscape'."
          },
          "margin_top": {
            "type": "number",
            "description": "Inches. 0-5."
          },
          "margin_bottom": {
            "type": "number",
            "description": "Inches. 0-5."
          },
          "print_background": {
            "type": "boolean",
            "description": "Print CSS backgrounds. Default true."
          },
          "wait_until": {
            "type": "string",
            "description": "'load' (default), 'domcontentloaded', 'networkidle0', 'networkidle2'."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "pdf_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/html-to-pdf"
    },
    "humanize": {
      "slug": "humanize",
      "price": "0.01",
      "cluster": "textkit",
      "description": "AI text humanizer / GPT detector bypass. Strips LLM tells (em-dash overuse, formulaic transitions, 'delve', 'tapestry'). 4 tones.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "humanize",
        "rewriter",
        "ai-detection",
        "paraphrase",
        "text"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text to humanize. Max 12,000 characters."
          },
          "tone": {
            "type": "string",
            "description": "'neutral' (default), 'casual', 'professional', or 'academic'."
          },
          "preserve_length": {
            "type": "boolean",
            "description": "If true (default), keep within ±15% of source length. If false, tighten freely."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string",
          "description": "Rewritten text."
        },
        "tone": {
          "type": "string",
          "description": "Tone applied."
        },
        "input_chars": {
          "type": "number",
          "description": "Source character count."
        },
        "output_chars": {
          "type": "number",
          "description": "Rewritten character count."
        },
        "model": {
          "type": "string",
          "description": "Model used for the rewrite."
        }
      },
      "url": "https://x402.org/v1/humanize"
    },
    "iata-airport-info": {
      "slug": "iata-airport-info",
      "price": "0.005",
      "cluster": "locale",
      "description": "IATA / ICAO airport code lookup. Returns name, type, location, country, region, municipality, scheduled-service flag, home/wikipedia links. OurAirports CC0.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "IATA-3 or ICAO-4 code."
          }
        },
        "required": [
          "code"
        ]
      },
      "outputProperties": {
        "airport": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/iata-airport-info"
    },
    "image-convert": {
      "slug": "image-convert",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "Universal image format converter (PNG, JPG, WEBP, AVIF, GIF, BMP, TIFF, ICO, HEIC, HEIF, PSD, SVG). Optional resize + quality. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "image",
        "convert",
        "png",
        "jpg",
        "webp",
        "avif",
        "heic",
        "format"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "URL of source image. Format inferred from extension."
          },
          "output_format": {
            "type": "string",
            "description": "Target format: png, jpg, webp, avif, gif, bmp, tiff, ico, heic, heif, psd."
          },
          "quality": {
            "type": "number",
            "description": "1-100. Affects jpg/webp/avif."
          },
          "width": {
            "type": "number",
            "description": "Optional resize width (1-16000)."
          },
          "height": {
            "type": "number",
            "description": "Optional resize height (1-16000)."
          },
          "fit": {
            "type": "string",
            "enum": [
              "max",
              "crop",
              "scale"
            ],
            "description": "'max' (default), 'crop', or 'scale' when resizing."
          }
        },
        "required": [
          "image_url",
          "output_format"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "input_format": {
          "type": "string"
        },
        "output_format": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/image-convert"
    },
    "image-edit": {
      "slug": "image-edit",
      "price": "0.02",
      "cluster": "genstudio",
      "description": "Image edit / instruction-based image edit / text-driven photo edit / nano-banana image editor / GPT-image-2 edit. Mask-free instruction-driven image editing — describe the change in text and the model applies it to the whole image. Default model: nano-banana-pro. Returns a permanent fal-hosted PNG URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "Public http(s) URL of the source image."
          },
          "prompt": {
            "type": "string",
            "description": "Edit instructions in plain English."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Default 'nano-banana-pro'."
          }
        },
        "required": [
          "image_url",
          "prompt"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-edit"
    },
    "image-expand": {
      "slug": "image-expand",
      "price": "0.15",
      "cluster": "genstudio",
      "description": "AI image outpainting / image expansion. Bria Expand model. Generates realistic content beyond original borders. Set canvas size + original placement. Commercial-license model.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY"
      ],
      "tags": [
        "outpaint",
        "expand",
        "image",
        "ai",
        "bria",
        "generative"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "Public URL of the source image."
          },
          "canvas_width": {
            "type": "number",
            "description": "Final canvas width in pixels (256-4096)."
          },
          "canvas_height": {
            "type": "number",
            "description": "Final canvas height in pixels (256-4096)."
          },
          "original_width": {
            "type": "number",
            "description": "Width to render the original at within the new canvas."
          },
          "original_height": {
            "type": "number",
            "description": "Height to render the original at within the new canvas."
          },
          "original_x": {
            "type": "number",
            "description": "X position of the original (top-left) within the canvas."
          },
          "original_y": {
            "type": "number",
            "description": "Y position of the original (top-left) within the canvas."
          },
          "prompt": {
            "type": "string",
            "description": "Optional guidance for the generated regions."
          },
          "seed": {
            "type": "number",
            "description": "Optional seed for reproducibility (0 to 2^31-1)."
          }
        },
        "required": [
          "image_url",
          "canvas_width",
          "canvas_height"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "seed": {
          "type": "number"
        },
        "source_url": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/image-expand"
    },
    "image-format-convert": {
      "slug": "image-format-convert",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "Image converter. Convert any image between PNG, JPG, WEBP, AVIF, GIF, BMP, TIFF, ICO, HEIC, HEIF, PSD, and SVG. Optional resize and quality. CloudConvert engine. Same backend as image-convert under a more search-friendly slug.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string"
          },
          "output_format": {
            "type": "string"
          },
          "quality": {
            "type": "number"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "fit": {
            "type": "string",
            "enum": [
              "max",
              "crop",
              "scale"
            ]
          }
        },
        "required": [
          "image_url",
          "output_format"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string",
          "description": ""
        },
        "output_format": {
          "type": "string",
          "description": ""
        },
        "file_size_bytes": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-format-convert"
    },
    "image-generate": {
      "slug": "image-generate",
      "price": "0.01",
      "cluster": "genstudio",
      "description": "Image generate (fast/cheap) / text-to-image / AI art. SFW, sub-5s turnaround. Four tiers backed by curated $0.01 Venice models: 'fast' (z-image-turbo, default), 'creative' (chroma), 'anime' (wai-Illustrious), 'sd35' (venice-sd35). For top-tier quality use image-generate-pro ($0.10, Flux 2 Pro / Recraft / Seedream / Qwen Image 2 Pro) or image-generate-ultra ($0.30, Google nano-banana-pro / OpenAI gpt-image-2). Returns a permanent fal-hosted PNG URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Image description. Up to 2000 chars."
          },
          "width": {
            "type": "number",
            "description": "Output width in pixels. Range [256, 2048], snapped to multiples of 16. Default 1024."
          },
          "height": {
            "type": "number",
            "description": "Output height in pixels. Range [256, 2048], snapped to multiples of 16. Default 1024."
          },
          "tier": {
            "type": "string",
            "enum": [
              "fast",
              "creative",
              "anime",
              "sd35"
            ],
            "description": "Model shorthand. Default 'fast'."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Must be one of: z-image-turbo, chroma, wai-Illustrious, venice-sd35."
          },
          "steps": {
            "type": "number",
            "description": "Diffusion steps. Optional; depends on model."
          },
          "cfg_scale": {
            "type": "number",
            "description": "Classifier-free guidance scale. Optional."
          },
          "seed": {
            "type": "number",
            "description": "Random seed. Optional."
          },
          "negative_prompt": {
            "type": "string",
            "description": "Negative prompt. Optional."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "width": {
          "type": "string",
          "description": ""
        },
        "height": {
          "type": "string",
          "description": ""
        },
        "tier": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "seed": {
          "type": "number",
          "description": ""
        },
        "elapsed_ms": {
          "type": "number",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-generate"
    },
    "image-generate-pro": {
      "slug": "image-generate-pro",
      "price": "0.10",
      "cluster": "genstudio",
      "description": "Image generate (pro) / premium text-to-image / Flux 2 Pro / Recraft / Seedream / Qwen Image 2 Pro / xAI Grok Imagine. Premium multi-model lineup for photoreal, design/illustration, text-in-image, and stylized art. Tiers: 'balanced' (flux-2-pro, default), 'max' (flux-2-max), 'text' (qwen-image-2-pro — best at rendering text in images), 'recraft' (recraft-v4), 'seedream' (seedream-v4), 'grok' (grok-imagine-image), 'art' (imagineart-1.5-pro), 'hunyuan' (hunyuan-image-v3). For flagship Google/OpenAI models use image-generate-ultra. Returns a permanent fal-hosted PNG URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Image description. Up to 3000 chars."
          },
          "width": {
            "type": "number",
            "description": "Output width in pixels. Range [256, 2048]. Default 1024."
          },
          "height": {
            "type": "number",
            "description": "Output height in pixels. Range [256, 2048]. Default 1024."
          },
          "tier": {
            "type": "string",
            "enum": [
              "balanced",
              "max",
              "text",
              "recraft",
              "seedream",
              "grok",
              "art",
              "hunyuan"
            ],
            "description": "Model shorthand. balanced=flux-2-pro (default), max=flux-2-max, text=qwen-image-2-pro, recraft=recraft-v4, seedream=seedream-v4, grok=grok-imagine-image, art=imagineart-1.5-pro, hunyuan=hunyuan-image-v3."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Allowed: flux-2-pro, flux-2-max, qwen-image-2-pro, qwen-image-2, recraft-v4, seedream-v4, seedream-v5-lite, grok-imagine-image, imagineart-1.5-pro, hunyuan-image-v3, wan-2-7-text-to-image."
          },
          "steps": {
            "type": "number",
            "description": "Diffusion steps. Optional; depends on model."
          },
          "cfg_scale": {
            "type": "number",
            "description": "Classifier-free guidance scale. Optional."
          },
          "seed": {
            "type": "number",
            "description": "Random seed. Optional."
          },
          "negative_prompt": {
            "type": "string",
            "description": "Negative prompt. Optional."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "width": {
          "type": "number",
          "description": ""
        },
        "height": {
          "type": "number",
          "description": ""
        },
        "tier": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "seed": {
          "type": "number",
          "description": ""
        },
        "elapsed_ms": {
          "type": "number",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-generate-pro"
    },
    "image-generate-ultra": {
      "slug": "image-generate-ultra",
      "price": "0.30",
      "cluster": "genstudio",
      "description": "Image generate (ultra) / flagship text-to-image / Google nano-banana-pro (Gemini Image 3) / OpenAI gpt-image-2 / Recraft V4 Pro / xAI Grok SOTA. Top proprietary models for the highest quality output. Tiers: 'nano-banana' (nano-banana-pro, default — Google Gemini Image 3), 'nano-banana-2' (cheaper Google variant), 'gpt' (gpt-image-2 — OpenAI flagship), 'gpt-1-5' (gpt-image-1-5), 'recraft-pro' (recraft-v4-pro), 'grok-sota' (grok-imagine-image-quality). Output is capped to 1024x1024 to keep wholesale within retail; for higher resolution, chain image-upscale. Returns a permanent fal-hosted PNG URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Image description. Up to 5000 chars."
          },
          "width": {
            "type": "number",
            "description": "Output width in pixels. Range [256, 1024]. Default 1024."
          },
          "height": {
            "type": "number",
            "description": "Output height in pixels. Range [256, 1024]. Default 1024."
          },
          "tier": {
            "type": "string",
            "enum": [
              "nano-banana",
              "nano-banana-2",
              "gpt",
              "gpt-1-5",
              "recraft-pro",
              "grok-sota"
            ],
            "description": "Model shorthand. nano-banana=nano-banana-pro (default), nano-banana-2=nano-banana-2, gpt=gpt-image-2, gpt-1-5=gpt-image-1-5, recraft-pro=recraft-v4-pro, grok-sota=grok-imagine-image-quality."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Allowed: nano-banana-pro, nano-banana-2, gpt-image-2, gpt-image-1-5, recraft-v4-pro, grok-imagine-image-quality."
          },
          "steps": {
            "type": "number",
            "description": "Diffusion steps. Optional; depends on model."
          },
          "cfg_scale": {
            "type": "number",
            "description": "Classifier-free guidance scale. Optional."
          },
          "seed": {
            "type": "number",
            "description": "Random seed. Optional."
          },
          "negative_prompt": {
            "type": "string",
            "description": "Negative prompt. Optional."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "width": {
          "type": "number",
          "description": ""
        },
        "height": {
          "type": "number",
          "description": ""
        },
        "tier": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "seed": {
          "type": "number",
          "description": ""
        },
        "elapsed_ms": {
          "type": "number",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-generate-ultra"
    },
    "image-inpaint": {
      "slug": "image-inpaint",
      "price": "0.02",
      "cluster": "genstudio",
      "description": "Image inpainting / mask-based image edit / fill in masked region / object replacement / face swap (mask-driven) / generative fill. Replaces the masked region of an image with content matching a text prompt. White pixels in the mask = region to inpaint. Default model: gpt-image-2. Returns a permanent fal-hosted PNG URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "Public http(s) URL of the source image."
          },
          "mask_url": {
            "type": "string",
            "description": "Public http(s) URL of the mask image (white = inpaint region; black = keep)."
          },
          "prompt": {
            "type": "string",
            "description": "What to fill the masked region with."
          },
          "model": {
            "type": "string",
            "description": "Override the inpaint model. Default 'gpt-image-2'."
          }
        },
        "required": [
          "image_url",
          "mask_url",
          "prompt"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-inpaint"
    },
    "image-to-video": {
      "slug": "image-to-video",
      "price": "0.20",
      "cluster": "genstudio",
      "description": "Image-to-video / animate still image / Seedance image-to-video / motion-from-photo / camera-movement on photo. Animates a still image into video via Venice's seedance-2-0-fast-image-to-video. Optional prompt steers the motion (camera moves, subject motion). Same async-vs-sync handling as text-to-video.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "Public http(s) URL of the source image."
          },
          "prompt": {
            "type": "string",
            "description": "Optional motion description (e.g. 'camera slowly zooms in')."
          },
          "duration": {
            "type": "string",
            "description": "Clip length. Default '5s'."
          },
          "aspect_ratio": {
            "type": "string",
            "description": "Aspect ratio. Default '16:9'."
          },
          "resolution": {
            "type": "string",
            "description": "Resolution. Default '720p'."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Default 'seedance-2-0-fast-image-to-video'."
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "video_url": {
          "type": "string",
          "description": ""
        },
        "duration": {
          "type": "string",
          "description": ""
        },
        "aspect_ratio": {
          "type": "string",
          "description": ""
        },
        "resolution": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-to-video"
    },
    "image-translate": {
      "slug": "image-translate",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "Image translator: vision-OCR + Venice translate. Demand-intel: 40 unmet signals for 'how to translate a picture'.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string"
          },
          "target_language": {
            "type": "string"
          },
          "preserve_layout": {
            "type": "boolean"
          }
        },
        "required": [
          "image_url",
          "target_language"
        ]
      },
      "outputProperties": {
        "detected_text": {
          "type": "string",
          "description": ""
        },
        "translation": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-translate"
    },
    "image-upscale": {
      "slug": "image-upscale",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "Image upscale / 2x upscaler / 4x upscaler / super-resolution / sharpen image / enlarge image without loss. Upscales an image 2x or 4x via Venice's image/upscale endpoint (default model: venice-sd35). Returns a permanent fal-hosted URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "Public http(s) URL of the source image."
          },
          "scale": {
            "type": "number",
            "enum": [
              2,
              4
            ],
            "description": "Upscale factor. Default 2."
          },
          "model": {
            "type": "string",
            "description": "Override the upscaler model. Default 'venice-sd35'."
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string",
          "description": ""
        },
        "scale": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/image-upscale"
    },
    "insider-form-4": {
      "slug": "insider-form-4",
      "price": "0.01",
      "cluster": "edge-finance",
      "description": "SEC Form 4 (insider transactions) normalizer. Recent officer/director/10%+ trades for any US ticker. Per-transaction shape: who, when, code (purchase/sale/grant/exercise/etc), shares, price, post-tx holdings, role. 100% public-domain SEC EDGAR data.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "sec",
        "form-4",
        "insider-trading",
        "edgar",
        "stocks",
        "officers",
        "directors",
        "finance",
        "signals",
        "compliance"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "US stock ticker (e.g. 'AAPL'). Either ticker or cik required."
          },
          "cik": {
            "type": "string",
            "description": "SEC Central Index Key."
          },
          "limit": {
            "type": "number",
            "description": "Max Form 4 filings to return (1-50). Default 10."
          },
          "include_derivatives": {
            "type": "boolean",
            "description": "Include derivative (option/RSU) transactions. Default true."
          }
        }
      },
      "outputProperties": {
        "ticker": {
          "type": "string"
        },
        "cik": {
          "type": "string"
        },
        "company_name": {
          "type": "string"
        },
        "form_4_filings": {
          "type": "array"
        },
        "filing_count": {
          "type": "number"
        },
        "total_transactions": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/insider-form-4"
    },
    "insider-trading": {
      "slug": "insider-trading",
      "price": "0.01",
      "cluster": "edge-finance",
      "description": "Insider trading feed. Recent SEC Form 4 transactions for any US-listed ticker — officer, director, and 10% beneficial owner buys and sells. Returns transaction code (P=purchase, S=sale, A=grant, M=exercise), shares, price, post-transaction holdings, filed date, and EDGAR document URL. Wraps the same EDGAR-backed source as insider-form-4 under a more search-friendly name. Federal public data, no auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "US-listed ticker (e.g. 'AAPL'). Either ticker or cik is required."
          },
          "cik": {
            "type": "string",
            "description": "SEC CIK."
          },
          "limit": {
            "type": "number",
            "description": "Max filings, 1-50. Default 10."
          },
          "include_derivatives": {
            "type": "boolean"
          }
        }
      },
      "outputProperties": {
        "ticker": {
          "type": "string",
          "description": ""
        },
        "filing_count": {
          "type": "string",
          "description": ""
        },
        "total_transactions": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/insider-trading"
    },
    "ip-asn": {
      "slug": "ip-asn",
      "price": "0.001",
      "cluster": "web-probe",
      "description": "IP to ASN / IP geolocation / IP-to-ISP lookup / WHOIS for IP / cloud-provider attribution. For any IPv4 or IPv6 address, returns ASN number, ASN org, ISP, country, region, city, postal, latitude/longitude, and timezone. Primary backend: ipapi.co (1k req/day free). Fallback: ip-api.com (45 req/min free). Both are free public APIs with no auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "IPv4 or IPv6 address."
          }
        },
        "required": [
          "ip"
        ]
      },
      "outputProperties": {
        "ip": {
          "type": "string",
          "description": ""
        },
        "asn": {
          "type": "string",
          "description": ""
        },
        "asn_org": {
          "type": "string",
          "description": ""
        },
        "country_code": {
          "type": "string",
          "description": ""
        },
        "country": {
          "type": "string",
          "description": ""
        },
        "region": {
          "type": "string",
          "description": ""
        },
        "city": {
          "type": "string",
          "description": ""
        },
        "postal": {
          "type": "string",
          "description": ""
        },
        "latitude": {
          "type": "string",
          "description": ""
        },
        "longitude": {
          "type": "string",
          "description": ""
        },
        "timezone": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/ip-asn"
    },
    "ipfs-fetch": {
      "slug": "ipfs-fetch",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "IPFS fetch / IPFS gateway / Web3 storage retrieval / NFT metadata fetcher / Filecoin gateway / decentralized content / pinned-content reader. Resolves a CID (CIDv0 Qm... or CIDv1 bafy...) and optional sub-path through a fallback chain of public gateways (cloudflare-ipfs.com → ipfs.io → dweb.link) and returns the content as base64 / text / parsed JSON. Hard cap 5 MB. HEAD pre-flight + streaming size cap so oversized files are rejected before they're fully downloaded. No API key required.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "cid": {
            "type": "string",
            "description": "IPFS CID, CIDv0 (Qm... base58, 46 chars) or CIDv1 (bafy... base32). Required."
          },
          "path": {
            "type": "string",
            "description": "Optional sub-path inside the IPFS directory, e.g. '/index.html' or 'metadata.json'. Leading slash optional."
          },
          "max_bytes": {
            "type": "number",
            "description": "Maximum response size in bytes. Default 1000000 (1 MB). Hard-capped at 5000000 (5 MB)."
          },
          "output": {
            "type": "string",
            "enum": [
              "base64",
              "text",
              "json"
            ],
            "description": "How to return the content. 'base64' (default — safe for binary), 'text' (UTF-8 decode), or 'json' (UTF-8 decode + JSON.parse). Returns 502 if 'json' is requested and the body doesn't parse."
          }
        },
        "required": [
          "cid"
        ]
      },
      "outputProperties": {
        "cid": {
          "type": "string",
          "description": ""
        },
        "gateway_used": {
          "type": "string",
          "description": ""
        },
        "content_type": {
          "type": "string",
          "description": ""
        },
        "size_bytes": {
          "type": "string",
          "description": ""
        },
        "content": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/ipfs-fetch"
    },
    "json-yaml": {
      "slug": "json-yaml",
      "price": "0.002",
      "cluster": "mediakit",
      "description": "JSON ↔ YAML bidirectional converter. Auto-detects input format. Pure parse, no upstream API.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "input": {
            "type": "string",
            "description": "JSON or YAML text."
          },
          "to": {
            "type": "string",
            "enum": [
              "json",
              "yaml",
              "auto"
            ],
            "description": "Target format. 'auto' converts to the opposite of the detected input. Default 'auto'."
          },
          "pretty": {
            "type": "boolean",
            "description": "Pretty-print JSON output (2-space indent by default). Ignored when target is YAML. Default true."
          },
          "indent": {
            "type": "number",
            "description": "Indent width in spaces (1-8). Default 2."
          }
        },
        "required": [
          "input"
        ]
      },
      "outputProperties": {
        "detected_format": {
          "type": "string",
          "description": ""
        },
        "target": {
          "type": "string",
          "description": ""
        },
        "output": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/json-yaml"
    },
    "jwt-decode": {
      "slug": "jwt-decode",
      "price": "0.003",
      "cluster": "web-probe",
      "description": "JWT decoder / token inspector / debug tool. Splits a JWT into header / payload / signature, base64url-decodes each, parses claims (iss, aud, sub, jti, iat, exp, nbf, kid, alg), and reports clock-validity. Does NOT verify signatures.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "jwt",
        "token",
        "auth",
        "debug",
        "developer"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "jwt": {
            "type": "string",
            "description": "JWT (with or without 'Bearer ' prefix)."
          }
        },
        "required": [
          "jwt"
        ]
      },
      "outputProperties": {
        "header": {
          "type": "object"
        },
        "payload": {
          "type": "object"
        },
        "signature": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "key_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "claims": {
          "type": "object"
        },
        "is_expired": {
          "type": "boolean"
        },
        "is_not_yet_valid": {
          "type": "boolean"
        },
        "is_currently_valid_by_clock": {
          "type": "boolean"
        },
        "payload_size_bytes": {
          "type": "number"
        },
        "note": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/jwt-decode"
    },
    "kalshi-markets": {
      "slug": "kalshi-markets",
      "price": "0.005",
      "cluster": "edge-finance",
      "description": "Kalshi markets / event contracts / Kalshi API / CFTC-regulated prediction markets / Kalshi browse / KalshiEX markets list. Pulls live markets from api.elections.kalshi.com with filter by status, series ticker, event ticker, free-text query, minimum volume. Prices converted from cents to 0-1 probabilities for easy cross-venue compare. DATA only — no order entry.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text filter on title / ticker / subtitle / event_ticker (substring)."
          },
          "series_ticker": {
            "type": "string",
            "description": "Filter by series (e.g. 'KXELONMARS')."
          },
          "event_ticker": {
            "type": "string",
            "description": "Filter by event ticker."
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "closed",
              "settled",
              "active"
            ],
            "description": "Default 'open'."
          },
          "limit": {
            "type": "number",
            "description": "1-200. Default 50."
          },
          "cursor": {
            "type": "string",
            "description": "Pagination cursor from previous response."
          },
          "min_volume": {
            "type": "number",
            "description": "Minimum 24-hr volume filter (server-side, on returned page)."
          }
        }
      },
      "outputProperties": {
        "markets": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "cursor": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/kalshi-markets"
    },
    "keyword-suggest": {
      "slug": "keyword-suggest",
      "price": "0.002",
      "cluster": "web-probe",
      "description": "Keyword autocomplete / search suggest / SEO keyword research / query expansion / autocomplete suggestions. Aggregates suggestions from Wikipedia OpenSearch + DuckDuckGo's autocomplete (both public, no auth) into a de-duplicated ranked list. Useful for SEO content-gap analysis, LLM query expansion, agent-driven research.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Seed query."
          },
          "limit": {
            "type": "number",
            "description": "1-50. Default 10."
          },
          "source": {
            "type": "string",
            "enum": [
              "wikipedia",
              "duckduckgo",
              "all"
            ],
            "description": "Default 'all'."
          },
          "lang": {
            "type": "string",
            "description": "Wikipedia language code, e.g. 'en', 'es'. Default 'en'."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string",
          "description": ""
        },
        "suggestions": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "per_source": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/keyword-suggest"
    },
    "link-extract": {
      "slug": "link-extract",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "Link extractor / extract links from URL / list all anchor links / page outlink crawler / scrape outbound links / get hrefs from page. Fetches an HTML URL and returns every <a> link with its anchor text, rel attribute, and an is_external flag. Resolves relative URLs against the page's <base> or final URL. Lighter than full scrape / metadata endpoints — exact tool for the agent task 'walk this page, pick which links to follow.' Default 500-link cap. SSRF-guarded (no loopback / RFC1918 targets).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "link",
        "links",
        "extract",
        "anchor",
        "href",
        "crawler",
        "scrape"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Page URL to fetch and extract from. http or https only. Private/loopback rejected. Redirects followed."
          },
          "include_external_only": {
            "type": "boolean",
            "description": "If true, drop same-host links. Default false."
          },
          "max_links": {
            "type": "number",
            "description": "Max links to return (1-2000). Default 500."
          },
          "include_text": {
            "type": "boolean",
            "description": "Include anchor visible text. Default true."
          },
          "timeout_ms": {
            "type": "number",
            "description": "Fetch timeout. Default 12000, max 25000."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "url": {
          "type": "string"
        },
        "final_url": {
          "type": "string"
        },
        "base_url": {
          "type": "string"
        },
        "page_title": {
          "type": [
            "string",
            "null"
          ]
        },
        "links": {
          "type": "array"
        },
        "count": {
          "type": "integer"
        },
        "total_found": {
          "type": "integer"
        },
        "truncated_at_max": {
          "type": "boolean"
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/link-extract"
    },
    "logo-detect": {
      "slug": "logo-detect",
      "price": "0.03",
      "cluster": "mediakit",
      "description": "Brand logo detection / brand recognition in images. Vision LLM. Returns brands with confidence, location, evidence (wordmark/logomark/lockup/color_scheme), element_type. Supports hint_brands.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "brand",
        "logo",
        "vision",
        "detect",
        "image"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string"
          },
          "hint_brands": {
            "type": "array",
            "description": "Optional list of brands the caller suspects may be present (max 30)."
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "detected_brands": {
          "type": "array"
        },
        "overall_summary": {
          "type": "string"
        },
        "no_brands_detected": {
          "type": "boolean"
        },
        "image_url": {
          "type": "string"
        },
        "hint_brands": {
          "type": "array"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/logo-detect"
    },
    "lp-lock-check": {
      "slug": "lp-lock-check",
      "price": "0.01",
      "cluster": "edge-market",
      "description": "LP lock check / liquidity-lock auditor / Unicrypt + Team Finance + burn-address detection. For any LP token (Uniswap V2-shaped) on Ethereum or Base, reports the % of supply held by the canonical LP-locker contracts (Unicrypt v2, Team Finance) plus burn addresses (0x0, 0xdead). Returns a verdict of locked (≥95%), partial (1-95%), or none. Useful for detecting rug-pull risk before swapping into a new pair.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "lp_token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte LP token (Uniswap V2 pair) address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "lp_token_address"
        ]
      },
      "outputProperties": {
        "lp_token": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "total_supply": {
          "type": "string",
          "description": ""
        },
        "lockers": {
          "type": "string",
          "description": ""
        },
        "total_locked_pct": {
          "type": "string",
          "description": ""
        },
        "status": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/lp-lock-check"
    },
    "mcp-tools-list": {
      "slug": "mcp-tools-list",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "MCP tools-list / Model Context Protocol discovery / list MCP server tools / tools/list JSON-RPC / agent capability discovery / MCP catalog lookup. Pass any MCP server URL (HTTP transport) — completes the initialize handshake and returns the tool catalog (names, descriptions, JSON-schema input shapes). Optionally also lists resources and prompts. Pure agent infrastructure: an agent that discovers an unknown MCP server URL gets back its capabilities without running its own MCP client. No API key. SSRF-guarded (no loopback / RFC1918 targets).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "mcp",
        "agent",
        "tools",
        "discovery",
        "json-rpc",
        "model-context-protocol"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL to an MCP server's JSON-RPC HTTP endpoint."
          },
          "timeout_ms": {
            "type": "number",
            "description": "Per-call timeout. Default 12000, max 25000."
          },
          "list_resources": {
            "type": "boolean",
            "description": "Also call resources/list. Default false."
          },
          "list_prompts": {
            "type": "boolean",
            "description": "Also call prompts/list. Default false."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "url": {
          "type": "string"
        },
        "server_info": {
          "type": [
            "object",
            "null"
          ]
        },
        "capabilities": {
          "type": [
            "object",
            "null"
          ]
        },
        "tools": {
          "type": "array"
        },
        "resources": {
          "type": [
            "array",
            "null"
          ]
        },
        "prompts": {
          "type": [
            "array",
            "null"
          ]
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/mcp-tools-list"
    },
    "merge-pdf": {
      "slug": "merge-pdf",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "PDF merger / combine PDFs / concatenate PDF files / join multiple PDFs into one. 2-50 input PDFs from URLs to single PDF. Preserves bookmarks. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "pdf-merge",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_urls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filename": {
            "type": "string"
          }
        },
        "required": [
          "pdf_urls"
        ]
      },
      "outputProperties": {
        "pdf_url": {
          "type": "string",
          "description": ""
        },
        "merged_count": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/merge-pdf"
    },
    "moderate-content": {
      "slug": "moderate-content",
      "price": "0.02",
      "cluster": "textkit",
      "description": "Content moderation / safety classifier / OpenAI-style toxicity API. Default: harassment, hate_speech, violence, sexual_content, self_harm, spam, phishing, doxing, illegal_activity. Custom categories + verdict (allow/review/block).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "moderation",
        "safety",
        "classify",
        "trust"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "custom_categories": {
            "type": "array",
            "description": "1-20 custom labels."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "categories": {
          "type": "object"
        },
        "verdict": {
          "type": "string",
          "enum": [
            "allow",
            "review",
            "block"
          ]
        },
        "summary": {
          "type": "string"
        },
        "flagged_count": {
          "type": "number"
        },
        "categories_evaluated": {
          "type": "array"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/moderate-content"
    },
    "mp4-to-mp3": {
      "slug": "mp4-to-mp3",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "MP4 → MP3 audio extractor. Any video format (mov, webm, mkv, avi, m4v, flv) → MP3 via CloudConvert. Selectable bitrate (96/128/192 kbps). 60-min / 500MB max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "mp4",
        "mp3",
        "audio",
        "extract",
        "convert",
        "video"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "description": "Public URL of a video file (mp4, webm, mov, mkv, etc.). Max 60 minutes / 500MB."
          },
          "bitrate": {
            "type": "number",
            "enum": [
              96,
              128,
              192
            ],
            "description": "MP3 bitrate in kbps. One of: 96, 128 (default), 192."
          }
        },
        "required": [
          "video_url"
        ]
      },
      "outputProperties": {
        "audio_url": {
          "type": "string",
          "description": "Signed CloudConvert URL of the extracted MP3 (24h expiry)."
        },
        "bitrate": {
          "type": "number",
          "description": "Bitrate applied (kbps)."
        },
        "file_size_bytes": {
          "type": "number",
          "description": "Output MP3 size in bytes."
        },
        "content_type": {
          "type": "string",
          "description": "MIME type of the output (typically audio/mpeg)."
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL."
        },
        "job_id": {
          "type": "string",
          "description": "CloudConvert job id (useful for support)."
        }
      },
      "url": "https://x402.org/v1/mp4-to-mp3"
    },
    "music-generate": {
      "slug": "music-generate",
      "price": "0.05",
      "cluster": "genstudio",
      "description": "Music generation / text-to-music / AI music / generative song / instrumental and vocal music. Text-to-music via Venice with the minimax-music-v26 model. Optional lyrics input. Duration 5-120 seconds. Returns a permanent fal-hosted audio URL (or a Venice-hosted URL when Venice already provides one).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Genre / mood / instrumentation description."
          },
          "duration_seconds": {
            "type": "number",
            "description": "Length in seconds. Range [5, 120]. Default 30."
          },
          "lyrics": {
            "type": "string",
            "description": "Optional lyrics. The model will sing them."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Default 'minimax-music-v26'."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "audio_url": {
          "type": "string",
          "description": ""
        },
        "duration_seconds": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/music-generate"
    },
    "nft-floor": {
      "slug": "nft-floor",
      "price": "0.01",
      "cluster": "edge-market",
      "description": "NFT collection floor + recent sales via Reservoir. Ethereum / Base / Arbitrum / Optimism / Polygon. Floor, top bid, 24h/7d/30d volume + change, ranks, recent sales.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "collection": {
            "type": "string",
            "description": "Slug or contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon"
            ]
          },
          "include_recent_sales": {
            "type": "boolean"
          },
          "recent_sales_limit": {
            "type": "number"
          }
        },
        "required": [
          "collection"
        ]
      },
      "outputProperties": {
        "floor_native": {
          "type": "string",
          "description": ""
        },
        "token_count": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/nft-floor"
    },
    "ocr": {
      "slug": "ocr",
      "price": "0.20",
      "cluster": "mediakit",
      "description": "OCR / optical character recognition / scanned document extractor / image-PDF to text. Run OCR on scanned PDFs and image-based documents. Datalab Marker engine — preserves layout, tables, math. Returns clean Markdown or plain text. 30 pages max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "pdf-to-markdown",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of a PDF file (http or https). Must be directly fetchable, not behind auth or a viewer redirect. Max 30 pages."
          },
          "output_format": {
            "type": "string",
            "enum": [
              "markdown",
              "html",
              "json"
            ],
            "description": "'markdown' (default — best for LLM downstream), 'html' (preserves more layout structure), or 'json' (per-page blocks with type + bbox)."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "markdown": {
          "type": "string",
          "description": ""
        },
        "page_count": {
          "type": "string",
          "description": ""
        },
        "source_url": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/ocr"
    },
    "office-to-pdf": {
      "slug": "office-to-pdf",
      "price": "0.05",
      "cluster": "mediakit",
      "description": "Office to PDF converter — DOCX/DOC, XLSX/XLS, PPTX/PPT, ODT/ODS/ODP, RTF, TXT, CSV, EPUB, MD, HTML, Apple Pages/Numbers/Keynote → PDF. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "docx",
        "xlsx",
        "pptx",
        "pdf",
        "office",
        "convert"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "file_url": {
            "type": "string",
            "description": "URL of the source Office file. Format inferred from extension."
          }
        },
        "required": [
          "file_url"
        ]
      },
      "outputProperties": {
        "pdf_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "source_format": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/office-to-pdf"
    },
    "package-risk-npm": {
      "slug": "package-risk-npm",
      "price": "0.03",
      "cluster": "prooflayer",
      "description": "npm package risk score / supply-chain scanner / typosquat detector. Maintainer count, weekly downloads, install scripts, dependency depth, deprecation, age, typosquat distance to popular packages. Plus LLM risk summary.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "npm",
        "supply-chain",
        "security",
        "package",
        "risk"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "package_name": {
            "type": "string",
            "description": "e.g. 'lodash' or '@scope/name'."
          },
          "version": {
            "type": "string",
            "description": "Optional specific version (e.g. '4.17.21'). Default: latest tagged version."
          }
        },
        "required": [
          "package_name"
        ]
      },
      "outputProperties": {
        "package_name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "signals": {
          "type": "object"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/package-risk-npm"
    },
    "password-strength": {
      "slug": "password-strength",
      "price": "0.02",
      "cluster": "web-probe",
      "description": "Password strength meter + breach checker. Entropy bits, character-class diversity, common-pattern penalties, estimated crack times (online/offline/GPU). Plus Have I Been Pwned k-anonymity breach lookup — full password never leaves the server.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "password",
        "security",
        "entropy",
        "hibp",
        "breach"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "description": "Password to score. Sent over TLS to the worker but never logged. Max 200 chars."
          },
          "check_breaches": {
            "type": "boolean",
            "description": "Check HIBP. Default true. Sends only first 5 chars of SHA-1 (k-anonymity)."
          }
        },
        "required": [
          "password"
        ]
      },
      "outputProperties": {
        "score": {
          "type": "number"
        },
        "bucket": {
          "type": "string",
          "enum": [
            "very_weak",
            "weak",
            "fair",
            "strong",
            "very_strong"
          ]
        },
        "length": {
          "type": "number"
        },
        "entropy_bits": {
          "type": "number"
        },
        "charset_size": {
          "type": "number"
        },
        "character_classes": {
          "type": "object"
        },
        "character_class_count": {
          "type": "number"
        },
        "common_patterns_found": {
          "type": "array"
        },
        "estimated_crack_time": {
          "type": "object"
        },
        "breach_count": {
          "type": "number"
        },
        "is_breached": {
          "type": "boolean"
        },
        "breach_check_performed": {
          "type": "boolean"
        },
        "feedback": {
          "type": "array"
        },
        "note": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/password-strength"
    },
    "patent-search": {
      "slug": "patent-search",
      "price": "0.05",
      "cluster": "edge-finance",
      "description": "USPTO patent search. Issued US patents and published applications via the USPTO Open Data Portal. Search by topic, inventor, assignee, CPC class, filing-date range. Returns title, abstract, inventors, assignees, dates, classifications. Optional Venice plain-English summary.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "USPTO_ODP_API_KEY",
        "VENICE_API_KEY"
      ],
      "tags": [
        "patent",
        "uspto",
        "ip",
        "intellectual-property",
        "prior-art",
        "research",
        "rd",
        "due-diligence",
        "patents"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text search keywords."
          },
          "inventor": {
            "type": "string",
            "description": "Inventor last name filter. Optional."
          },
          "assignee": {
            "type": "string",
            "description": "Assignee/owner name filter. Optional."
          },
          "cpc": {
            "type": "string",
            "description": "CPC classification code (e.g. 'G06N'). Optional."
          },
          "date_from": {
            "type": "string",
            "description": "Filing-date floor (YYYY-MM-DD). Optional."
          },
          "date_to": {
            "type": "string",
            "description": "Filing-date ceiling (YYYY-MM-DD). Optional."
          },
          "limit": {
            "type": "number",
            "description": "Max patents to return (1-50). Default 10."
          },
          "summarize": {
            "type": "boolean",
            "description": "If true, attach a Venice plain-English summary to the top result."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string"
        },
        "total": {
          "type": "number"
        },
        "returned": {
          "type": "number"
        },
        "patents": {
          "type": "array"
        }
      },
      "url": "https://x402.org/v1/patent-search"
    },
    "pdf-compress": {
      "slug": "pdf-compress",
      "price": "0.005",
      "cluster": "mediakit",
      "description": "PDF compressor / shrink PDF / PDF size reducer / smaller PDF for email. Three quality levels: ebook (lowest, web-quality), printer (medium), prepress (highest, archival). CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "compress-pdf",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string"
          },
          "profile": {
            "type": "string",
            "enum": [
              "web",
              "print",
              "archive",
              "mrc",
              "max"
            ]
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "pdf_url": {
          "type": "string",
          "description": ""
        },
        "original_size_bytes": {
          "type": "string",
          "description": ""
        },
        "compressed_size_bytes": {
          "type": "string",
          "description": ""
        },
        "saved_percent": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/pdf-compress"
    },
    "pdf-extract-tables": {
      "slug": "pdf-extract-tables",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "PDF table extractor / table from PDF / scanned-table parsing / financial-table OCR / multi-page table consolidator / Datalab Marker tables. AI + OCR pipeline that finds every table in a PDF (digital or scanned) and returns row × column text matrices, page-by-page. Optional cell bounding boxes for downstream layout reconstruction. Optional page_range filter ('1-5', '3', '1,3,5'). Handles merged headers, multi-page financial statements, balance sheets, lab results, scanned reports. 30 pages max. Sibling of pdf-to-markdown using the same Datalab backend, but pre-parsed to tables only.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of a PDF file (http or https). Must be directly fetchable, not behind auth or a viewer redirect. Max 30 pages."
          },
          "page_range": {
            "type": "string",
            "description": "Optional 1-indexed page filter applied after extraction. Accepts ranges, single pages, or comma-lists: '1-5', '3', '1,3,5'. Default: all pages."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "source_url": {
          "type": "string",
          "description": ""
        },
        "page_count": {
          "type": "string",
          "description": ""
        },
        "tables": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/pdf-extract-tables"
    },
    "pdf-merge": {
      "slug": "pdf-merge",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "PDF merger / PDF combiner / PDF concatenator. 2-50 PDFs from URLs → single PDF. Preserves bookmarks. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "pdf",
        "merge",
        "combine",
        "concat"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of 2-50 PDF URLs in merge order."
          },
          "filename": {
            "type": "string",
            "description": "Output filename (must end in .pdf). Default 'merged.pdf'."
          }
        },
        "required": [
          "pdf_urls"
        ]
      },
      "outputProperties": {
        "pdf_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "merged_count": {
          "type": "number"
        },
        "filename": {
          "type": "string"
        },
        "source_urls": {
          "type": "array"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/pdf-merge"
    },
    "pdf-split": {
      "slug": "pdf-split",
      "price": "0.04",
      "cluster": "mediakit",
      "description": "PDF splitter / PDF page extractor. Two modes: page ranges (['1-3','5','7-end']) or one PDF per source page. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "pdf",
        "split",
        "pages",
        "extract"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string"
          },
          "ranges": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of page-range strings. Examples: '1', '1-3', '5-end'. Up to 50 ranges."
          },
          "split_each_page": {
            "type": "boolean",
            "description": "If true (and ranges omitted), produces one PDF per source page."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "pdfs": {
          "type": "array",
          "description": "Array of { url, filename, file_size_bytes, range }."
        },
        "output_count": {
          "type": "number"
        },
        "mode": {
          "type": "string",
          "description": "'ranges' or 'split_each_page'."
        },
        "ranges": {
          "type": "array"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/pdf-split"
    },
    "pdf-to-jpg": {
      "slug": "pdf-to-jpg",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "PDF to JPG / PNG / WEBP image converter. Renders every page at configurable DPI (36-600). Returns one image URL per page. CloudConvert backend.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "pdf",
        "jpg",
        "png",
        "webp",
        "rasterize",
        "images"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of the PDF."
          },
          "format": {
            "type": "string",
            "enum": [
              "jpg",
              "png",
              "webp"
            ],
            "description": "'jpg' (default), 'png', or 'webp'."
          },
          "quality": {
            "type": "number",
            "description": "JPG quality 1-100 (default 85). Ignored for png/webp."
          },
          "pixel_density": {
            "type": "number",
            "description": "DPI for rasterization. Default 144. Range 36-600."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "images": {
          "type": "array",
          "description": "Array of { page, url, filename, file_size_bytes } objects."
        },
        "page_count": {
          "type": "number"
        },
        "format": {
          "type": "string"
        },
        "quality": {
          "type": "number"
        },
        "pixel_density": {
          "type": "number"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/pdf-to-jpg"
    },
    "pdf-to-markdown": {
      "slug": "pdf-to-markdown",
      "price": "0.20",
      "cluster": "mediakit",
      "description": "AI PDF extractor: PDF to Markdown / HTML / structured JSON via Datalab Marker. OCR + layout-aware. Best-in-class for tables, equations, multi-column docs. 30 pages max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "DATALAB_API_KEY"
      ],
      "tags": [
        "pdf",
        "markdown",
        "html",
        "json",
        "conversion"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of a PDF file. Max 30 pages."
          },
          "output_format": {
            "type": "string",
            "enum": [
              "markdown",
              "html",
              "json"
            ],
            "description": "Output format: 'markdown' (default), 'html', or 'json'."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "markdown": {
          "type": "string",
          "description": "Markdown content (present when output_format is 'markdown')"
        },
        "html": {
          "type": "string",
          "description": "HTML content (present when output_format is 'html')"
        },
        "json": {
          "type": "object",
          "description": "Structured JSON content (present when output_format is 'json')"
        },
        "output_format": {
          "type": "string",
          "description": "Echo of the format used"
        },
        "page_count": {
          "type": "number",
          "description": "Number of pages in the source PDF"
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL"
        }
      },
      "url": "https://x402.org/v1/pdf-to-markdown"
    },
    "pdf-to-text": {
      "slug": "pdf-to-text",
      "price": "0.20",
      "cluster": "mediakit",
      "description": "PDF to text / extract text from PDF. AI-powered text extraction via Datalab Marker. OCR + layout-aware. Best-in-class for tables, equations, multi-column layouts. Outputs plain text or structured markdown. 30 pages max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "pdf-to-markdown",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of a PDF file."
          },
          "output_format": {
            "type": "string",
            "enum": [
              "markdown",
              "html",
              "json"
            ],
            "description": "'markdown' (default), 'html', or 'json'."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "markdown": {
          "type": "string",
          "description": ""
        },
        "page_count": {
          "type": "string",
          "description": ""
        },
        "source_url": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/pdf-to-text"
    },
    "pdf-watermark": {
      "slug": "pdf-watermark",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "PDF watermark / image watermark / video watermark — text or image overlay on PDFs, PNG/JPG/GIF, or MP4/MOV/WEBM. Configurable position, opacity, font, rotation, margin. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "watermark",
      "inputSchema": {
        "type": "object",
        "properties": {
          "file_url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "image_url": {
            "type": "string"
          },
          "font_size": {
            "type": "number"
          },
          "font_color": {
            "type": "string"
          },
          "opacity": {
            "type": "number"
          },
          "rotation": {
            "type": "number"
          },
          "position_vertical": {
            "type": "string",
            "enum": [
              "top",
              "center",
              "bottom"
            ]
          },
          "position_horizontal": {
            "type": "string",
            "enum": [
              "left",
              "center",
              "right"
            ]
          }
        },
        "required": [
          "file_url"
        ]
      },
      "outputProperties": {
        "output_url": {
          "type": "string",
          "description": ""
        },
        "watermark_type": {
          "type": "string",
          "description": ""
        },
        "input_format": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/pdf-watermark"
    },
    "pdf2md": {
      "slug": "pdf2md",
      "price": "0.20",
      "cluster": "mediakit",
      "description": "PDF to Markdown converter. AI PDF extractor. Datalab Marker — OCR + layout-aware. Best-in-class for tables, equations, multi-column.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "DATALAB_API_KEY"
      ],
      "tags": [
        "pdf",
        "markdown",
        "html",
        "json",
        "conversion"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string",
            "description": "Public URL of a PDF file. Max 30 pages."
          },
          "output_format": {
            "type": "string",
            "description": "Output format: 'markdown' (default), 'html', or 'json'."
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "markdown": {
          "type": "string",
          "description": "Markdown content (present when output_format is 'markdown')"
        },
        "html": {
          "type": "string",
          "description": "HTML content (present when output_format is 'html')"
        },
        "json": {
          "type": "object",
          "description": "Structured JSON content (present when output_format is 'json')"
        },
        "output_format": {
          "type": "string",
          "description": "Echo of the format used"
        },
        "page_count": {
          "type": "number",
          "description": "Number of pages in the source PDF"
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL"
        }
      },
      "url": "https://x402.org/v1/pdf2md"
    },
    "pii-redact": {
      "slug": "pii-redact",
      "price": "0.005",
      "cluster": "textkit",
      "description": "PII redactor / mask emails phones SSNs IBANs credit cards IPs / GDPR safe text / privacy scrubber. Two-stage redaction: a deterministic regex pre-pass for structural PII (email, phone, credit card, SSN, IBAN, IPv4/v6, URL), then Venice mistral-small-3-2-24b for residual PII (full names, street addresses, dates of birth). Returns the redacted text and a list of every (type, value, masked_with) triple.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to redact. Up to 30,000 chars."
          },
          "mask": {
            "type": "string",
            "description": "Replacement string. Use 'type' (default) for [EMAIL], [PHONE], etc.; or any literal string for a uniform mask."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "original": {
          "type": "string",
          "description": ""
        },
        "redacted": {
          "type": "string",
          "description": ""
        },
        "found": {
          "type": "string",
          "description": ""
        },
        "found_count": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/pii-redact"
    },
    "polymarket-kalshi-arbitrage": {
      "slug": "polymarket-kalshi-arbitrage",
      "price": "0.02",
      "cluster": "edge-finance",
      "description": "Polymarket × Kalshi arbitrage scanner / cross-venue prediction market spread / event price arbitrage detector / Polymarket vs Kalshi comparison. Pulls active markets from both venues, fuzzy-matches by title (Jaccard token overlap), and reports pairs whose implied YES probabilities diverge beyond a configurable threshold. Output is data-only: spread metrics, no trade execution. Useful for cross-market sentiment timing and signal triangulation.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "min_spread": {
            "type": "number",
            "description": "Minimum |p_poly - p_kalshi| spread to report. 0-1. Default 0.05."
          },
          "min_match_score": {
            "type": "number",
            "description": "Minimum Jaccard token overlap to treat two titles as the same event. 0-1. Default 0.4."
          },
          "scan_limit": {
            "type": "number",
            "description": "Max markets to pull from each venue. 10-500. Default 100."
          },
          "category": {
            "type": "string",
            "description": "Optional Polymarket category filter (substring)."
          }
        }
      },
      "outputProperties": {
        "pairs": {
          "type": "string",
          "description": ""
        },
        "pair_count": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/polymarket-kalshi-arbitrage"
    },
    "polymarket-leaderboard": {
      "slug": "polymarket-leaderboard",
      "price": "0.005",
      "cluster": "edge-finance",
      "description": "Polymarket leaderboard / top traders / profit leaderboard / Polymarket whales / volume leaderboard / prediction market rankings. Returns the top accounts by realized profit OR notional volume over 1d/1w/1m/all-time windows. Includes proxy wallet, pseudonym, bio, amount in USD. DATA only.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "enum": [
              "profit",
              "volume"
            ],
            "description": "Default 'profit'."
          },
          "window": {
            "type": "string",
            "enum": [
              "1d",
              "1w",
              "1m",
              "all"
            ],
            "description": "Default '1d'."
          },
          "limit": {
            "type": "number",
            "description": "1-200. Default 25."
          }
        }
      },
      "outputProperties": {
        "leaderboard": {
          "type": "string",
          "description": ""
        },
        "metric": {
          "type": "string",
          "description": ""
        },
        "window": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/polymarket-leaderboard"
    },
    "polymarket-markets": {
      "slug": "polymarket-markets",
      "price": "0.005",
      "cluster": "edge-finance",
      "description": "Polymarket markets / prediction market data / Polymarket API / list active prediction markets / crypto-settled betting odds / event odds / Polymarket browse. Pulls live Polymarket markets from gamma-api with filter by category, tag, free-text query, minimum liquidity. Returns market question, current YES/NO outcome prices (implied probabilities), 24-hr volume, liquidity, end date. DATA-ONLY — no trading. Useful for agent forecasting research and arbitrage detection.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text filter applied to question + description + slug. Case-insensitive substring match against the current page."
          },
          "category": {
            "type": "string",
            "description": "Filter by Polymarket category (substring match, e.g. 'Sports', 'Crypto', 'Politics')."
          },
          "tag": {
            "type": "string",
            "description": "Polymarket tag slug filter, passed through to upstream."
          },
          "active": {
            "type": "boolean",
            "description": "Default true. Pass false to include inactive markets."
          },
          "closed": {
            "type": "boolean",
            "description": "Default false. Pass true to include closed markets."
          },
          "limit": {
            "type": "number",
            "description": "1-100. Default 20."
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset."
          },
          "order": {
            "type": "string",
            "enum": [
              "volume24hr",
              "liquidity",
              "endDate",
              "startDate"
            ],
            "description": "Sort field."
          },
          "ascending": {
            "type": "boolean",
            "description": "Sort direction."
          },
          "min_liquidity": {
            "type": "number",
            "description": "Minimum liquidity in USD."
          }
        }
      },
      "outputProperties": {
        "markets": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/polymarket-markets"
    },
    "polymarket-trades": {
      "slug": "polymarket-trades",
      "price": "0.005",
      "cluster": "edge-finance",
      "description": "Polymarket trades / recent prediction market trades / on-chain bet history / Polymarket trade feed / Polymarket data API. Pulls recent trades from a Polymarket market (by slug or conditionId) or for a specific wallet. Returns side, size, price, timestamp, trader pseudonym, on-chain tx hash, and computed notional USD. DATA only.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "market": {
            "type": "string",
            "description": "Market slug (e.g. 'will-x-happen') OR conditionId (0x...). Optional."
          },
          "user": {
            "type": "string",
            "description": "Polymarket proxy wallet address to filter by. Optional."
          },
          "limit": {
            "type": "number",
            "description": "1-500. Default 50."
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset."
          },
          "side": {
            "type": "string",
            "enum": [
              "BUY",
              "SELL"
            ],
            "description": "Filter by side."
          },
          "after_ts": {
            "type": "number",
            "description": "Unix seconds. Only trades after."
          },
          "before_ts": {
            "type": "number",
            "description": "Unix seconds. Only trades before."
          }
        }
      },
      "outputProperties": {
        "trades": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "total_notional_usd": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/polymarket-trades"
    },
    "price-impact": {
      "slug": "price-impact",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Price-impact / slippage estimator / DEX swap size impact / size-keyed quote / depth simulation. For a (from_token, to_token, chain), pulls aggregator quotes (LlamaSwap meta-aggregator, free public) at multiple USD sizes and reports per-size effective price + slippage versus the smallest size. Use to size a fill before submitting it on-chain.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "from_token": {
            "type": "string",
            "description": "0x-prefixed 20-byte ERC-20 input token."
          },
          "to_token": {
            "type": "string",
            "description": "0x-prefixed 20-byte ERC-20 output token."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'."
          },
          "sizes_usd": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "USD sizes to quote at, sorted ascending. Up to 5. Default [100, 1000, 10000]."
          }
        },
        "required": [
          "from_token",
          "to_token"
        ]
      },
      "outputProperties": {
        "from_token": {
          "type": "string",
          "description": ""
        },
        "to_token": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "from_usd_price": {
          "type": "string",
          "description": ""
        },
        "from_decimals": {
          "type": "string",
          "description": ""
        },
        "quotes": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/price-impact"
    },
    "production-readiness-score": {
      "slug": "production-readiness-score",
      "price": "0.10",
      "cluster": "prooflayer",
      "description": "production readiness score / AI app deploy gate / Prooflayer cluster aggregator / repo prod-risk composite / one-call audit / unified production readiness API / vibe-coded app safety scan. Calls all 5 Prooflayer component scanners (secrets-exposure-check, deploy-config-risk, db-migration-risk, dep-risk-summary, prompt-injection-surface) in parallel in-process and rolls findings into a weighted composite score (default weights: secrets 0.30, migrations 0.20, deps 0.20, deploy 0.15, prompt 0.15). Returns composite 0-100, production_grade (production-ready | needs-review | risky | do-not-ship), per-component sub-scores, top-N deduped findings sorted by severity + score_contribution, and a Venice plain-English verdict. Dual input: {repo: 'owner/name'} or {files: [{path, content}, …]}. Optional 'weights' override (each in [0,0.5], proportionally normalized) and 'max_findings' (default 10, cap 50).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "security",
        "production-readiness",
        "audit",
        "ai-safety",
        "prooflayer"
      ],
      "inputSchema": {
        "type": "object"
      },
      "outputProperties": {
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "production_grade": {
          "type": "string"
        },
        "component_scores": {
          "type": "object"
        },
        "weights_used": {
          "type": "object"
        },
        "findings": {
          "type": "array"
        },
        "signals": {
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/production-readiness-score"
    },
    "prompt-compress": {
      "slug": "prompt-compress",
      "price": "0.005",
      "cluster": "textkit",
      "description": "Prompt compressor / context shrinker / prompt distiller / cost-cutter for long system prompts. Rewrites a long prompt down to a target ratio of its original length while preserving every instruction, constraint, and example's intent. Drops filler words, redundant repetition, and ceremonial politeness. Powered by Venice mistral-small-3-2-24b.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Prompt to compress. Up to 60,000 chars."
          },
          "target_ratio": {
            "type": "number",
            "description": "Target length as a fraction of original. Range [0.1, 1.0]. Default 0.4."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "original": {
          "type": "string",
          "description": ""
        },
        "compressed": {
          "type": "string",
          "description": ""
        },
        "original_chars": {
          "type": "string",
          "description": ""
        },
        "compressed_chars": {
          "type": "string",
          "description": ""
        },
        "target_ratio": {
          "type": "string",
          "description": ""
        },
        "actual_ratio": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/prompt-compress"
    },
    "prompt-injection-surface": {
      "slug": "prompt-injection-surface",
      "price": "0.03",
      "cluster": "prooflayer",
      "description": "AI prompt injection surface scanner / LLM call-site audit / unsanitized user input in prompts detector / system-message mixing flag / unbounded completion detector / AI app safety scan / pre-deploy AI risk gate. Walks .ts/.tsx/.js/.jsx/.py/.mjs/.cjs source files, locates LLM SDK call sites (anthropic, openai, @ai-sdk/*, google generative), and flags user input flowing into prompts without sanitization, calls without max_tokens caps, system/user prompt mixing, and LLM output used unvalidated in fetch/exec/eval. Returns 0-100 score, per-finding kind/severity/path/line/evidence/recommendation, and a Venice plain-English verdict. Dual input: {repo: 'owner/name'} (tree-walk, capped 500 files) or {files: [{path, content}, …]}.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "security",
        "ai-safety",
        "prompt-injection",
        "llm",
        "prooflayer"
      ],
      "inputSchema": {
        "type": "object"
      },
      "outputProperties": {
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "findings": {
          "type": "array"
        },
        "signals": {
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/prompt-injection-surface"
    },
    "property-tax": {
      "slug": "property-tax",
      "price": "0.01",
      "cluster": "locale",
      "description": "Property tax lookup. Search a county's open-data assessor dataset by street address or parcel ID and return parcel id, owner, assessed and market value, sqft, year built, zoning, and a permalink to the source portal. Covers NYC PLUTO, SF Assessor Roll, and Cook County (Chicago) — open-data CC0 sources. Same backend as property-tax-assessment under a more search-friendly slug.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "county": {
            "type": "string",
            "enum": [
              "nyc",
              "sf",
              "chicago"
            ]
          },
          "address": {
            "type": "string"
          },
          "parcel": {
            "type": "string"
          },
          "limit": {
            "type": "number"
          }
        },
        "required": [
          "county"
        ]
      },
      "outputProperties": {
        "county": {
          "type": "string",
          "description": ""
        },
        "total": {
          "type": "string",
          "description": ""
        },
        "properties": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/property-tax"
    },
    "property-tax-assessment": {
      "slug": "property-tax-assessment",
      "price": "0.01",
      "cluster": "locale",
      "description": "Property tax assessor lookup (multi-county). NYC PLUTO, SF Assessor Roll, Cook County (Chicago). Returns assessed value, owner, parcel ID, sqft, year built, zoning. Open-data, CC0-licensed.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "county": {
            "type": "string",
            "enum": [
              "nyc",
              "sf",
              "chicago"
            ],
            "description": "County dataset to query. 'nyc' = NYC Department of Finance PLUTO, 'sf' = SF Assessor Recorded Sales Roll, 'chicago' = Cook County Assessor."
          },
          "address": {
            "type": "string",
            "description": "Street address to search (e.g. '350 5 AVENUE'). Tokenised against the dataset's address column. Mutually optional with 'parcel'."
          },
          "parcel": {
            "type": "string",
            "description": "Parcel identifier — NYC BBL (10-digit), SF Block-Lot, or Cook County PIN (14-digit). Matches an exact record."
          },
          "limit": {
            "type": "number",
            "description": "Max records to return (1-50). Default 10."
          }
        },
        "required": [
          "county"
        ]
      },
      "outputProperties": {
        "total": {
          "type": "string",
          "description": ""
        },
        "properties": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/property-tax-assessment"
    },
    "pubmed-search": {
      "slug": "pubmed-search",
      "price": "0.01",
      "cluster": "web-probe",
      "description": "PubMed biomedical literature search. NIH E-utilities. Returns PMID, title, abstract, authors, journal, MeSH terms, DOI. Federal public.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "PubMed query string. Supports field tags ('cancer[Title]', 'Smith J[Author]'), boolean operators, and MeSH terms."
          },
          "limit": {
            "type": "number",
            "description": "Max papers to return. 1-50. Default 10."
          },
          "date_from": {
            "type": "string",
            "description": "Lower bound on publication date (YYYY/MM/DD or YYYY-MM-DD)."
          },
          "date_to": {
            "type": "string",
            "description": "Upper bound on publication date (YYYY/MM/DD or YYYY-MM-DD)."
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "pub_date",
              "first_author"
            ],
            "description": "Result ordering. Default 'relevance'."
          },
          "include_abstract": {
            "type": "boolean",
            "description": "If true (default), include the abstract text per paper. Set false for a smaller, faster response."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "total": {
          "type": "string",
          "description": ""
        },
        "returned": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/pubmed-search"
    },
    "pypi-package-risk": {
      "slug": "pypi-package-risk",
      "price": "0.01",
      "cluster": "prooflayer",
      "description": "PyPI package risk score / Python supply-chain scanner. Age, monthly downloads, install-script hooks (cmdclass/setup.py), dependency depth, deprecation, typosquat distance to 50 popular Python packages. Plus LLM risk summary.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "pypi",
        "python",
        "supply-chain",
        "security",
        "risk"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "package_name": {
            "type": "string",
            "description": "PyPI package distribution name (e.g. 'requests', 'django'). Case-insensitive; resolved via pypi.org/pypi/{name}/json."
          },
          "version": {
            "type": "string",
            "description": "Optional specific version (e.g. '2.31.0'). Default: latest stable release."
          }
        },
        "required": [
          "package_name"
        ]
      },
      "outputProperties": {
        "package_name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "signals": {
          "type": "object"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/pypi-package-risk"
    },
    "qr-code-decode": {
      "slug": "qr-code-decode",
      "price": "0.002",
      "cluster": "web-probe",
      "description": "QR decoder / QR reader / scan QR from URL / QR code OCR / barcode reader / link extraction from QR. Reads QR codes out of any public image URL (PNG / JPG / GIF / BMP) and returns the decoded text strings. Multiple QR codes in a single image are returned as separate entries. Wraps qrserver.com's free public read-qr-code API (true DIY decode requires canvas, which Workers don't have natively). Returns an empty `codes` array plus a descriptive `note` if the image can't be fetched or no QR is found.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "description": "Public http(s) URL of an image containing one or more QR codes. Must be directly fetchable."
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "codes": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/qr-code-decode"
    },
    "qr-code-generate": {
      "slug": "qr-code-generate",
      "price": "0.001",
      "cluster": "web-probe",
      "description": "QR code generator / QR maker / vCard QR / WiFi QR / URL to QR / SVG QR / PNG QR / customizable error correction. Generates a QR code from arbitrary text — URL, vCard, WiFi join string, plain text — and returns it as a base64-encoded PNG (default) or SVG. Configurable size (64-1024 px), error correction level (L/M/Q/H), quiet-zone margin, and foreground/background hex colors. Pure JS encoder via the qrcode npm package — no upstream API call, deterministic output.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to encode. Any string up to ~4296 chars (alphanumeric)."
          },
          "format": {
            "type": "string",
            "enum": [
              "png",
              "svg"
            ],
            "description": "Output image format. Default 'png'."
          },
          "size": {
            "type": "number",
            "description": "Image side length in pixels. Range [64, 1024]. Default 256."
          },
          "error_correction": {
            "type": "string",
            "enum": [
              "L",
              "M",
              "Q",
              "H"
            ],
            "description": "Reed-Solomon error-correction level. L=7%, M=15% (default), Q=25%, H=30% redundancy."
          },
          "margin": {
            "type": "number",
            "description": "Quiet-zone margin in modules. Range [0, 20]. Default 4."
          },
          "foreground": {
            "type": "string",
            "description": "QR module color as 6 or 8-digit hex (e.g. '#000000'). Default '#000000'."
          },
          "background": {
            "type": "string",
            "description": "Background color as 6 or 8-digit hex (e.g. '#FFFFFF'). Default '#FFFFFF'."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "format": {
          "type": "string",
          "description": ""
        },
        "size": {
          "type": "string",
          "description": ""
        },
        "data_base64": {
          "type": "string",
          "description": ""
        },
        "content_type": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/qr-code-generate"
    },
    "receipt-ocr": {
      "slug": "receipt-ocr",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "Receipt OCR. Reads any receipt photo and returns a structured JSON object with vendor, address, date, line items (qty / unit_price / total), subtotal, tax, tip, total, and payment method. Vision-LLM powered. Same backend as receipt-parser under a clearer slug for expense + accounting + reimbursement workflows.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string"
          },
          "currency_hint": {
            "type": "string"
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "receipt": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/receipt-ocr"
    },
    "receipt-parser": {
      "slug": "receipt-parser",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "Receipt → structured JSON (vendor, address, date, line items with qty/unit_price/total, subtotal, tax, tip, total, payment method). Vision LLM only.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string"
          },
          "currency_hint": {
            "type": "string"
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "receipt": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/receipt-parser"
    },
    "regex-from-prompt": {
      "slug": "regex-from-prompt",
      "price": "0.01",
      "cluster": "textkit",
      "description": "Regex generator / NL to regex / pattern builder. PCRE / JavaScript / Python / Go / RE2. Returns pattern + flags + explanation + 3-6 test examples. Live-runs JS regex on sample_text.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "regex",
        "developer",
        "ai",
        "pattern"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string"
          },
          "flavor": {
            "type": "string",
            "enum": [
              "pcre",
              "javascript",
              "python",
              "go",
              "re2"
            ]
          },
          "sample_text": {
            "type": "string",
            "description": "If provided, regex is run live (JS only)."
          },
          "flags": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "pattern": {
          "type": "string"
        },
        "flags": {
          "type": "string"
        },
        "flavor": {
          "type": "string"
        },
        "explanation": {
          "type": "string"
        },
        "test_examples": {
          "type": "array"
        },
        "caveats": {
          "type": "array"
        },
        "live_matches": {
          "type": "array"
        },
        "live_error": {
          "type": "string"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/regex-from-prompt"
    },
    "remove-bg": {
      "slug": "remove-bg",
      "price": "0.08",
      "cluster": "genstudio",
      "description": "AI background remover / background eraser / cutout tool. Returns transparent PNG. Optional crop_to_bbox. fal.ai imageutils/rembg.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY"
      ],
      "tags": [
        "background",
        "rembg",
        "image",
        "remove",
        "transparent"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string"
          },
          "crop_to_bbox": {
            "type": "boolean",
            "description": "Default false."
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "content_type": {
          "type": "string"
        },
        "crop_to_bbox": {
          "type": "boolean"
        },
        "source_url": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/remove-bg"
    },
    "resume-scorer": {
      "slug": "resume-scorer",
      "price": "0.02",
      "cluster": "textkit",
      "description": "AI resume scorer / ATS keyword analyzer. Scores resume vs. job description (0-100 fit), with calibrated subscores: keyword match, experience, skills, formatting, impact. Ranked improvement suggestions.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "resume",
        "ats",
        "job-match",
        "scoring",
        "recruiting"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "resume": {
            "type": "string",
            "description": "Resume text. Max 18,000 characters."
          },
          "job_description": {
            "type": "string",
            "description": "Target job description text. Max 8,000 characters."
          }
        },
        "required": [
          "resume",
          "job_description"
        ]
      },
      "outputProperties": {
        "score": {
          "type": "object",
          "description": "Structured scoring report including overall_score, verdict, summary, subscores, matched_keywords, missing_keywords, strengths, gaps, and improvements."
        },
        "model": {
          "type": "string",
          "description": "Model used for scoring."
        },
        "resume_chars": {
          "type": "number",
          "description": "Resume character count."
        },
        "jd_chars": {
          "type": "number",
          "description": "Job description character count."
        }
      },
      "url": "https://x402.org/v1/resume-scorer"
    },
    "retrieval-rerank": {
      "slug": "retrieval-rerank",
      "price": "0.005",
      "cluster": "textkit",
      "description": "Retrieval reranker / RAG reranker / document scoring / top-k filter / cross-encoder substitute. Given a query and up to 30 candidate documents, scores each 0-100 for query relevance using Venice qwen3-5-35b-a3b in JSON-mode and returns sorted top-k. Useful as a second-stage reranker on top of cheap vector retrieval.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query."
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Candidate documents. Up to 30; each up to 2,000 chars (truncated)."
          },
          "top_k": {
            "type": "number",
            "description": "How many top documents to return. Default min(5, len(documents))."
          }
        },
        "required": [
          "query",
          "documents"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string",
          "description": ""
        },
        "ranked": {
          "type": "string",
          "description": ""
        },
        "doc_count": {
          "type": "string",
          "description": ""
        },
        "top_k": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/retrieval-rerank"
    },
    "reverse-geocode": {
      "slug": "reverse-geocode",
      "price": "0.02",
      "cluster": "locale",
      "description": "Reverse geocoder / lat-lng-to-address. Coords → structured address (road, city, state, postcode, country). Powered by OpenStreetMap Nominatim.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "geocode",
        "reverse",
        "location",
        "maps",
        "osm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees. Range -90 to 90."
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees. Range -180 to 180."
          },
          "zoom": {
            "type": "number",
            "description": "3 (country) → 18 (building). Default 17."
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "outputProperties": {
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        },
        "zoom": {
          "type": "number"
        },
        "display_name": {
          "type": "string"
        },
        "address": {
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "class": {
          "type": "string"
        },
        "importance": {
          "type": "number"
        },
        "bounding_box": {
          "type": "array"
        },
        "osm_id": {
          "type": "number"
        },
        "place_id": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/reverse-geocode"
    },
    "rewrite-tone": {
      "slug": "rewrite-tone",
      "price": "0.02",
      "cluster": "textkit",
      "description": "Tone rewriter / paraphraser / writing style changer. 12 tones: formal, casual, friendly, confident, empathetic, concise, playful, persuasive, apologetic, technical, simple, enthusiastic. Audience + length controls.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "rewrite",
        "tone",
        "writing",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "tone": {
            "type": "string"
          },
          "target_audience": {
            "type": "string"
          },
          "target_length": {
            "type": "string",
            "enum": [
              "shorter",
              "same",
              "longer"
            ]
          }
        },
        "required": [
          "text",
          "tone"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string"
        },
        "tone": {
          "type": "string"
        },
        "target_audience": {
          "type": "string"
        },
        "target_length": {
          "type": "string"
        },
        "input_chars": {
          "type": "number"
        },
        "output_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/rewrite-tone"
    },
    "rss-from-anything": {
      "slug": "rss-from-anything",
      "price": "0.04",
      "cluster": "web-probe",
      "description": "RSS feed generator / HTML to RSS converter. Auto-detects article items on any HTML page, OR pass CSS selectors. RSS 2.0 output. For sites that don't publish a feed.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "rss",
        "feed",
        "scrape",
        "monitor",
        "html"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "feed_title": {
            "type": "string",
            "description": "Override channel title. Default page title."
          },
          "item_selector": {
            "type": "string",
            "description": "Selector for each item. If omitted, auto-detection runs."
          },
          "title_selector": {
            "type": "string"
          },
          "link_selector": {
            "type": "string"
          },
          "date_selector": {
            "type": "string"
          },
          "description_selector": {
            "type": "string"
          },
          "max_items": {
            "type": "number",
            "description": "Default 50, max 200."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "rss": {
          "type": "string"
        },
        "mime_type": {
          "type": "string"
        },
        "feed_title": {
          "type": "string"
        },
        "feed_link": {
          "type": "string"
        },
        "feed_description": {
          "type": "string"
        },
        "item_count": {
          "type": "number"
        },
        "items": {
          "type": "array"
        },
        "mode": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/rss-from-anything"
    },
    "safe-multisig-status": {
      "slug": "safe-multisig-status",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Safe multisig status / Gnosis Safe info / Safe owners / Safe threshold / Safe pending queue / DAO treasury wallet / Safe wallet lookup. Reads a Safe (Gnosis Safe) multisig's on-chain state — owners[], threshold, nonce, version, master copy, fallback handler, guard — via batched eth_call on Base / Ethereum / Arbitrum / Optimism / Polygon (no key, no gas). Also fetches pending (unexecuted) transactions from the Safe Transaction Service. DAO/treasury agents need this constantly to verify multisig config + watch the execution queue.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "safe",
        "gnosis-safe",
        "multisig",
        "dao",
        "treasury",
        "onchain"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Safe contract address (0x + 40 hex)."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "arbitrum",
              "optimism",
              "polygon"
            ],
            "description": "Chain to query. Default 'base'."
          },
          "pending_limit": {
            "type": "number",
            "description": "Max pending tx to return (0-50). Default 10. 0 skips the Safe TX Service call."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputProperties": {
        "address": {
          "type": "string"
        },
        "chain": {
          "type": "string"
        },
        "network": {
          "type": "string"
        },
        "threshold": {
          "type": [
            "integer",
            "null"
          ]
        },
        "owners": {
          "type": "array"
        },
        "nonce": {
          "type": [
            "integer",
            "null"
          ]
        },
        "version": {
          "type": [
            "string",
            "null"
          ]
        },
        "master_copy": {
          "type": [
            "string",
            "null"
          ]
        },
        "fallback_handler": {
          "type": [
            "string",
            "null"
          ]
        },
        "guard": {
          "type": [
            "string",
            "null"
          ]
        },
        "pending_transactions": {
          "type": "array"
        },
        "pending_count": {
          "type": "integer"
        },
        "rpc_used": {
          "type": "string"
        },
        "safe_api_used": {
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/safe-multisig-status"
    },
    "safe-tx-decode": {
      "slug": "safe-tx-decode",
      "price": "0.003",
      "cluster": "edge-market",
      "description": "Gnosis Safe execTransaction decoder. Decodes a Safe multisig tx hash or raw calldata into target/value/data/operation/gas/signers. Auto-decodes inner MultiSend batches.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tx_hash": {
            "type": "string"
          },
          "calldata": {
            "type": "string"
          },
          "chain": {
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        }
      },
      "outputProperties": {
        "is_multisend": {
          "type": "string",
          "description": ""
        },
        "multisend_op_count": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/safe-tx-decode"
    },
    "satellite-address": {
      "slug": "satellite-address",
      "price": "0.01",
      "cluster": "locale",
      "description": "Address to satellite image / one-call address → cloud-free Sentinel-2 thumbnail / postal-code satellite snapshot / place-name to space view. Composes OpenStreetMap Nominatim geocoding with the Sentinel Hub Processing API: caller sends a free-form address and gets back both the geocoded address metadata and a recent cloud-free Sentinel-2 PNG centered on the best match. Optional NASA GIBS MODIS fallback for regional views. JSON output contains: { query, geocode_result, lat, lon, zoom, bbox, data_base64, license, attribution, ... }.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Free-form address, postal code, place name, or POI. Examples: '1600 Amphitheatre Parkway, Mountain View, CA', 'Brandenburg Gate', '94110'."
          },
          "zoom": {
            "type": "number",
            "description": "Slippy-map zoom level. 1-16. Default 15 (street/block scale)."
          },
          "size": {
            "type": "number",
            "description": "Output image side length in pixels. 64-2500. Default 512."
          },
          "source": {
            "type": "string",
            "enum": [
              "cdse",
              "gibs"
            ],
            "description": "'cdse' (default, Sentinel-2 10m) or 'gibs' (NASA MODIS ~250m, zoom ≤9 only)."
          },
          "days_back": {
            "type": "number",
            "description": "CDSE lookback window for least-cloudy mosaic in days. 7-180. Default 30."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputProperties": {
        "source": {
          "type": "string",
          "description": ""
        },
        "query": {
          "type": "string",
          "description": ""
        },
        "geocode_result": {
          "type": "string",
          "description": ""
        },
        "lat": {
          "type": "string",
          "description": ""
        },
        "lon": {
          "type": "string",
          "description": ""
        },
        "zoom": {
          "type": "string",
          "description": ""
        },
        "size": {
          "type": "string",
          "description": ""
        },
        "bbox": {
          "type": "string",
          "description": ""
        },
        "time_range": {
          "type": "string",
          "description": ""
        },
        "format": {
          "type": "string",
          "description": ""
        },
        "content_type": {
          "type": "string",
          "description": ""
        },
        "data_base64": {
          "type": "string",
          "description": ""
        },
        "bytes": {
          "type": "string",
          "description": ""
        },
        "license": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/satellite-address"
    },
    "satellite-bbox": {
      "slug": "satellite-bbox",
      "price": "0.02",
      "cluster": "locale",
      "description": "Bounding-box satellite composite / Sentinel-2 cloud-free mosaic / region satellite snapshot / arbitrary bbox to imagery. Returns a single PNG composite over an arbitrary lat/lon bounding box, sourced from the least-cloudy Sentinel-2 observation per pixel across the requested date range (mosaickingOrder=leastCC). Output dimensions auto-scale to bbox aspect ratio. Native 10m resolution. Bbox area capped at 4 sq-deg per call — larger regions should be stitched from multiple calls. JSON output includes { bbox, time_range, size, data_base64, license, attribution, ... }.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "bbox": {
            "type": "array",
            "description": "[west, south, east, north] in WGS84 lon/lat. Required. west<east, south<north, area ≤ 4 sq-deg."
          },
          "date": {
            "type": "string",
            "description": "End date of the lookback window in YYYY-MM-DD. Default = yesterday."
          },
          "days": {
            "type": "number",
            "description": "Lookback window in days. 7-180. Default 30. Mosaic uses least-cloudy pixel across the window."
          },
          "size": {
            "type": "number",
            "description": "Output image LONG-side length in pixels. 64-2500. Default 512. Short side scales by bbox aspect."
          },
          "max_cloud_coverage": {
            "type": "number",
            "description": "Per-scene max cloud cover percentage to include. 0-100. Default 30."
          }
        },
        "required": [
          "bbox"
        ]
      },
      "outputProperties": {
        "source": {
          "type": "string",
          "description": ""
        },
        "bbox": {
          "type": "string",
          "description": ""
        },
        "time_range": {
          "type": "string",
          "description": ""
        },
        "max_cloud_coverage": {
          "type": "string",
          "description": ""
        },
        "size": {
          "type": "string",
          "description": ""
        },
        "format": {
          "type": "string",
          "description": ""
        },
        "content_type": {
          "type": "string",
          "description": ""
        },
        "data_base64": {
          "type": "string",
          "description": ""
        },
        "bytes": {
          "type": "string",
          "description": ""
        },
        "license": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/satellite-bbox"
    },
    "satellite-change": {
      "slug": "satellite-change",
      "price": "0.05",
      "cluster": "locale",
      "description": "Satellite before/after / change detection / Sentinel-2 time-series diff / construction monitoring / deforestation tracker / fire-burn-scar imagery. Renders two cloud-free Sentinel-2 composites of the same bounding box anchored at two dates, each averaged over the window_days prior. Returns both base64 PNGs side-by-side so clients can display, animate, or pixel-diff them. Use cases: construction-site progress, vegetation change, wildfire burn scars, port/parking-lot activity, glacier retreat. Native 10m. Bbox area ≤ 4 sq-deg.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "bbox": {
            "type": "array",
            "description": "[west, south, east, north] in WGS84 lon/lat. west<east, south<north, area ≤ 4 sq-deg."
          },
          "date_a": {
            "type": "string",
            "description": "Anchor date for the BEFORE composite, YYYY-MM-DD. Must be earlier than date_b."
          },
          "date_b": {
            "type": "string",
            "description": "Anchor date for the AFTER composite, YYYY-MM-DD."
          },
          "window_days": {
            "type": "number",
            "description": "Days prior to each anchor used to build the cloud-free composite. 7-90. Default 30."
          },
          "size": {
            "type": "number",
            "description": "Output image LONG-side length in pixels. 64-2500. Default 512. Short side scales by aspect."
          },
          "max_cloud_coverage": {
            "type": "number",
            "description": "Per-scene max cloud cover percentage. 0-100. Default 30."
          }
        },
        "required": [
          "bbox",
          "date_a",
          "date_b"
        ]
      },
      "outputProperties": {
        "source": {
          "type": "string",
          "description": ""
        },
        "bbox": {
          "type": "string",
          "description": ""
        },
        "window_days": {
          "type": "string",
          "description": ""
        },
        "max_cloud_coverage": {
          "type": "string",
          "description": ""
        },
        "size": {
          "type": "string",
          "description": ""
        },
        "format": {
          "type": "string",
          "description": ""
        },
        "content_type": {
          "type": "string",
          "description": ""
        },
        "before": {
          "type": "string",
          "description": ""
        },
        "after": {
          "type": "string",
          "description": ""
        },
        "license": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/satellite-change"
    },
    "satellite-tile": {
      "slug": "satellite-tile",
      "price": "0.005",
      "cluster": "locale",
      "description": "Satellite imagery tile / lat-lon to satellite PNG / Sentinel-2 tile API / cloud-free satellite snapshot / agent-callable satellite imagery. Returns a recent cloud-free Sentinel-2 (10m) PNG centered on a lat/lon at a slippy-map zoom level. Default source: CDSE Sentinel Hub Processing API with mosaickingOrder=leastCC over the prior 30 days (configurable via days_back). Optional NASA GIBS MODIS Terra (~250m) source for regional zoom ≤9 with zero quota. Output is JSON: { source, lat, lon, zoom, bbox, data_base64, license, attribution, ... }. License: Copernicus open data (CC BY-SA 3.0 IGO) or NASA public domain; attribution string included in every response.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude in decimal degrees. Range [-90, 90]."
          },
          "lon": {
            "type": "number",
            "description": "Longitude in decimal degrees. Range [-180, 180]."
          },
          "zoom": {
            "type": "number",
            "description": "Slippy-map zoom level. 1-16. Default 14 (city block scale). MODIS/GIBS supports ≤9 only."
          },
          "size": {
            "type": "number",
            "description": "Output image side length in pixels. 64-2500. Default 512."
          },
          "source": {
            "type": "string",
            "enum": [
              "cdse",
              "gibs"
            ],
            "description": "Imagery source. 'cdse' (default, Sentinel-2 10m) or 'gibs' (NASA MODIS Terra ~250m, no quota, zoom ≤9 only)."
          },
          "days_back": {
            "type": "number",
            "description": "CDSE only: lookback window for least-cloudy mosaic in days. 7-180. Default 30."
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "outputProperties": {
        "source": {
          "type": "string",
          "description": ""
        },
        "lat": {
          "type": "string",
          "description": ""
        },
        "lon": {
          "type": "string",
          "description": ""
        },
        "zoom": {
          "type": "string",
          "description": ""
        },
        "size": {
          "type": "string",
          "description": ""
        },
        "bbox": {
          "type": "string",
          "description": ""
        },
        "time_range": {
          "type": "string",
          "description": ""
        },
        "format": {
          "type": "string",
          "description": ""
        },
        "content_type": {
          "type": "string",
          "description": ""
        },
        "data_base64": {
          "type": "string",
          "description": ""
        },
        "bytes": {
          "type": "string",
          "description": ""
        },
        "license": {
          "type": "string",
          "description": ""
        },
        "attribution": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/satellite-tile"
    },
    "scrape": {
      "slug": "scrape",
      "price": "0.04",
      "cluster": "web-probe",
      "description": "Web scraper / HTML extractor. Title, OG/Twitter meta, body in text/HTML/markdown, optional links. Cheerio-based.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "scrape",
        "fetch",
        "html",
        "extract",
        "metadata",
        "url"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public http/https URL to scrape."
          },
          "format": {
            "type": "string",
            "enum": [
              "text",
              "html",
              "markdown"
            ],
            "description": "'text' (default), 'html', or 'markdown'."
          },
          "include_links": {
            "type": "boolean",
            "description": "Include array of unique links found on the page (max 500). Default false."
          },
          "user_agent": {
            "type": "string",
            "description": "Override the User-Agent header."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "url": {
          "type": "string"
        },
        "final_url": {
          "type": "string",
          "description": "Final URL after redirects."
        },
        "status_code": {
          "type": "number"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "canonical": {
          "type": "string"
        },
        "lang": {
          "type": "string"
        },
        "h1": {
          "type": "string"
        },
        "og": {
          "type": "object",
          "description": "All og:* meta tags."
        },
        "twitter": {
          "type": "object",
          "description": "All twitter:* meta tags."
        },
        "text": {
          "type": "string",
          "description": "Body when format=text."
        },
        "html": {
          "type": "string",
          "description": "Body when format=html."
        },
        "markdown": {
          "type": "string",
          "description": "Body when format=markdown."
        },
        "format": {
          "type": "string"
        },
        "links": {
          "type": "array",
          "description": "Array of {href, text} when include_links=true."
        },
        "body_chars": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/scrape"
    },
    "scrape-website": {
      "slug": "scrape-website",
      "price": "0.04",
      "cluster": "web-probe",
      "description": "Web scraper / HTML to text / website content extractor. Returns title, OG/Twitter meta, body in text/HTML/markdown. Optional links. Cheerio-based — fast, no headless browser.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "scrape",
        "fetch",
        "html",
        "extract",
        "metadata",
        "url"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public http/https URL to scrape."
          },
          "format": {
            "type": "string",
            "enum": [
              "text",
              "html",
              "markdown"
            ],
            "description": "'text' (default), 'html', or 'markdown'."
          },
          "include_links": {
            "type": "boolean",
            "description": "Include array of unique links found on the page (max 500). Default false."
          },
          "user_agent": {
            "type": "string",
            "description": "Override the User-Agent header."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "url": {
          "type": "string"
        },
        "final_url": {
          "type": "string",
          "description": "Final URL after redirects."
        },
        "status_code": {
          "type": "number"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "canonical": {
          "type": "string"
        },
        "lang": {
          "type": "string"
        },
        "h1": {
          "type": "string"
        },
        "og": {
          "type": "object",
          "description": "All og:* meta tags."
        },
        "twitter": {
          "type": "object",
          "description": "All twitter:* meta tags."
        },
        "text": {
          "type": "string",
          "description": "Body when format=text."
        },
        "html": {
          "type": "string",
          "description": "Body when format=html."
        },
        "markdown": {
          "type": "string",
          "description": "Body when format=markdown."
        },
        "format": {
          "type": "string"
        },
        "links": {
          "type": "array",
          "description": "Array of {href, text} when include_links=true."
        },
        "body_chars": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/scrape-website"
    },
    "screenshot": {
      "slug": "screenshot",
      "price": "0.04",
      "cluster": "web-probe",
      "description": "Website screenshot / URL to PNG/JPG. Configurable viewport, retina, crop/fit, transparent BG, JPG quality, JS wait conditions.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "screenshot",
        "url",
        "png",
        "jpg",
        "render",
        "capture"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public http/https URL."
          },
          "format": {
            "type": "string",
            "description": "'png' (default) or 'jpg'."
          },
          "screen_width": {
            "type": "number",
            "description": "Viewport width 320-3840. Default 1440."
          },
          "screen_height": {
            "type": "number",
            "description": "Viewport height 240-4320."
          },
          "device_scale_factor": {
            "type": "number",
            "description": "1-4 (retina). Default 1."
          },
          "width": {
            "type": "number",
            "description": "Final image width 1-8000."
          },
          "height": {
            "type": "number",
            "description": "Final image height 1-8000."
          },
          "fit": {
            "type": "string",
            "description": "'max' (default), 'crop', or 'scale'."
          },
          "quality": {
            "type": "number",
            "description": "JPG quality 1-100."
          },
          "transparent_background": {
            "type": "boolean",
            "description": "PNG only. Default false."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "format": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/screenshot"
    },
    "sec-filing": {
      "slug": "sec-filing",
      "price": "0.01",
      "cluster": "edge-finance",
      "description": "SEC EDGAR filing fetcher + parser + summarizer. 10-K, 10-Q, 8-K, S-1, S-4, DEF 14A, 4, 13F-HR. Returns structured filing metadata, clean text, and optional Venice executive summary tuned to the form type. 100% public-domain SEC data.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "sec",
        "edgar",
        "10-k",
        "10-q",
        "8-k",
        "s-1",
        "filings",
        "annual-report",
        "earnings",
        "finance",
        "stocks",
        "ipo",
        "due-diligence"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "US stock ticker (e.g. 'AAPL'). Either ticker or cik required."
          },
          "cik": {
            "type": "string",
            "description": "SEC Central Index Key (10-digit, with or without leading zeros)."
          },
          "form_type": {
            "type": "string",
            "description": "Filing type to fetch. Default '10-K'. Supports '10-K', '10-Q', '8-K', 'S-1', 'DEF 14A', '4', '13F-HR'."
          },
          "limit": {
            "type": "number",
            "description": "Max filings to return (1-20). Default 5."
          },
          "summarize": {
            "type": "boolean",
            "description": "If true, run latest filing through Venice for an executive summary tuned to the form type."
          },
          "include_text": {
            "type": "boolean",
            "description": "If true, return full clean-text body of the latest filing (capped at 200k chars)."
          }
        }
      },
      "outputProperties": {
        "ticker": {
          "type": "string"
        },
        "cik": {
          "type": "string"
        },
        "company_name": {
          "type": "string"
        },
        "form_type": {
          "type": "string"
        },
        "filings": {
          "type": "array"
        },
        "summary": {
          "type": "object"
        },
        "text": {
          "type": "string"
        },
        "text_chars": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/sec-filing"
    },
    "secrets-exposure-check": {
      "slug": "secrets-exposure-check",
      "price": "0.02",
      "cluster": "prooflayer",
      "description": "secrets exposure scan / hardcoded API key detector / .env-committed-key audit / Next.js client env leak detector / pre-deploy secret gate. Fetches top-level config files (.env*, wrangler.toml, vercel.json, next.config.*, package.json, etc.) and scans for hardcoded AWS/OpenAI/Anthropic/Stripe/GitHub keys, private keys, DB URLs with passwords, JWT secrets, weak values in .env.example, and server-only env vars accidentally exposed via NEXT_PUBLIC_. Returns 0-100 score, per-finding kind/severity/path/line/redacted-evidence/recommendation, and a Venice plain-English verdict. Dual input: {repo: 'owner/name'} for public GitHub or {files: [{path, content}, …]} for private / agent-workspace use.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "security",
        "secrets",
        "env",
        "hardcoded-keys",
        "prooflayer"
      ],
      "inputSchema": {
        "type": "object"
      },
      "outputProperties": {
        "score": {
          "type": "number"
        },
        "risk_level": {
          "type": "string"
        },
        "findings": {
          "type": "array"
        },
        "signals": {
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/secrets-exposure-check"
    },
    "seedance-video": {
      "slug": "seedance-video",
      "price": "0.20",
      "cluster": "genstudio",
      "description": "Seedance 2.0 / Seedance 2.0 video generation / Seedance video AI / generative AI video / text-to-video AI / cinematic AI clips on AI Gateway. Powered by Venice's seedance-2-0-fast-text-to-video model. Duration / aspect-ratio / resolution configurable. Same backend as text-to-video under a model-named slug for direct discovery by agents searching for 'Seedance'.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "seedance",
        "video",
        "text-to-video",
        "ai",
        "generative",
        "venice"
      ],
      "aliasOf": "text-to-video",
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Video scene description."
          },
          "duration": {
            "type": "string",
            "description": "Clip length, e.g. '5s' or '10s'. Default '5s'."
          },
          "aspect_ratio": {
            "type": "string",
            "description": "Aspect ratio: '16:9', '9:16', '1:1', '4:3'. Default '16:9'."
          },
          "resolution": {
            "type": "string",
            "description": "Video resolution: '720p', '480p'. Default '720p'."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Default 'seedance-2-0-fast-text-to-video'."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "video_url": {
          "type": "string",
          "description": ""
        },
        "duration": {
          "type": "string",
          "description": ""
        },
        "aspect_ratio": {
          "type": "string",
          "description": ""
        },
        "resolution": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/seedance-video"
    },
    "semantic-chunk": {
      "slug": "semantic-chunk",
      "price": "0.002",
      "cluster": "textkit",
      "description": "Semantic chunker / text splitter / RAG chunker / chunking with overlap / sentence + paragraph aware. Splits long text into chunks with three modes: 'fixed' (hard char-count windows with overlap), 'sentence' (greedy pack of sentences up to chunk_size), 'paragraph' (split on blank lines, never pack across paragraphs). Returns each chunk's text, start/end character offsets, and char count. Pure local — no upstream call.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to split. Up to 1,000,000 chars."
          },
          "chunk_size": {
            "type": "number",
            "description": "Target chunk size in characters. Range [50, 20000]. Default 500."
          },
          "overlap": {
            "type": "number",
            "description": "Overlap between chunks in characters. Default 50. Capped at chunk_size - 1."
          },
          "mode": {
            "type": "string",
            "enum": [
              "fixed",
              "sentence",
              "paragraph"
            ],
            "description": "Splitting strategy. Default 'fixed'."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "chunks": {
          "type": "string",
          "description": ""
        },
        "chunk_count": {
          "type": "string",
          "description": ""
        },
        "mode": {
          "type": "string",
          "description": ""
        },
        "chunk_size": {
          "type": "string",
          "description": ""
        },
        "overlap": {
          "type": "string",
          "description": ""
        },
        "text_chars": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/semantic-chunk"
    },
    "sentiment": {
      "slug": "sentiment",
      "price": "0.01",
      "cluster": "textkit",
      "description": "Sentiment + emotion analyzer. Overall sentiment + score (-1..+1) + per-emotion (joy/anger/sadness/fear/surprise/disgust). Aspect-based optional.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "sentiment",
        "emotion",
        "nlp",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "aspects": {
            "type": "array",
            "description": "Up to 15 noun phrases for aspect-based scoring."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "overall_sentiment": {
          "type": "string"
        },
        "overall_score": {
          "type": "number"
        },
        "confidence": {
          "type": "number"
        },
        "summary": {
          "type": "string"
        },
        "emotions": {
          "type": "object"
        },
        "aspects": {
          "type": "object"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/sentiment"
    },
    "sentiment-analysis": {
      "slug": "sentiment-analysis",
      "price": "0.01",
      "cluster": "textkit",
      "description": "Sentiment analyzer / emotion classifier / aspect-based sentiment. Overall sentiment + score (-1 to +1) + per-emotion (joy/anger/sadness/fear/surprise/disgust). Optional aspect-based scoring.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "sentiment",
        "emotion",
        "nlp",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "aspects": {
            "type": "array",
            "description": "Up to 15 noun phrases for aspect-based scoring."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "overall_sentiment": {
          "type": "string"
        },
        "overall_score": {
          "type": "number"
        },
        "confidence": {
          "type": "number"
        },
        "summary": {
          "type": "string"
        },
        "emotions": {
          "type": "object"
        },
        "aspects": {
          "type": "object"
        },
        "input_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/sentiment-analysis"
    },
    "sitemap-fetch": {
      "slug": "sitemap-fetch",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "Sitemap fetcher / sitemap.xml parser / sitemap index resolver / SEO sitemap reader / robots.txt sitemap discovery / website URL inventory. Accepts a site root (will discover sitemap via robots.txt or /sitemap.xml convention) OR a direct sitemap.xml URL. Recurses through sitemap-index nesting. Returns the URL list with lastmod / changefreq / priority and aggregate stats (count, oldest/newest lastmod). Useful for SEO audits, content-freshness monitoring, RAG ingestion seeding.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Site root (e.g. https://example.com) or direct sitemap URL."
          },
          "limit": {
            "type": "number",
            "description": "Max URL rows. 1-5000. Default 1000."
          },
          "recurse": {
            "type": "boolean",
            "description": "Recurse into sitemap-index children. Default true."
          },
          "user_agent": {
            "type": "string",
            "description": "Optional User-Agent header."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "input_url": {
          "type": "string",
          "description": ""
        },
        "sitemaps_fetched": {
          "type": "string",
          "description": ""
        },
        "url_count": {
          "type": "string",
          "description": ""
        },
        "urls": {
          "type": "string",
          "description": ""
        },
        "lastmod_oldest": {
          "type": "string",
          "description": ""
        },
        "lastmod_newest": {
          "type": "string",
          "description": ""
        },
        "truncated": {
          "type": "string",
          "description": ""
        },
        "bytes_total": {
          "type": "string",
          "description": ""
        },
        "errors": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/sitemap-fetch"
    },
    "sound-effect-generate": {
      "slug": "sound-effect-generate",
      "price": "0.01",
      "cluster": "genstudio",
      "description": "Sound effect generation / text-to-SFX / Foley generator / ElevenLabs sound effects / ambient audio synth. Text-to-SFX via Venice with elevenlabs-sound-effects-v2. Duration 0.5-22 seconds. Returns a permanent fal-hosted audio URL (or Venice-hosted when applicable).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Sound description."
          },
          "duration_seconds": {
            "type": "number",
            "description": "Length in seconds. Range [0.5, 22]. Default 5."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Default 'elevenlabs-sound-effects-v2'."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "audio_url": {
          "type": "string",
          "description": ""
        },
        "duration_seconds": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/sound-effect-generate"
    },
    "speaker-diarize": {
      "slug": "speaker-diarize",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "Speaker diarization / who-said-what transcription. Whisper v3 + speaker labels. Returns utterances grouped by speaker, plus per-speaker stats (count, seconds, words). 60 min max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY_TRANSCRIBE"
      ],
      "tags": [
        "transcription",
        "diarization",
        "speakers",
        "whisper",
        "podcast",
        "meeting"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "media_url": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "num_speakers": {
            "type": "number",
            "description": "1-20 hint. Auto-detected if omitted."
          }
        },
        "required": [
          "media_url"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string"
        },
        "utterances": {
          "type": "array"
        },
        "speaker_count": {
          "type": "number"
        },
        "speaker_stats": {
          "type": "array"
        },
        "duration_seconds": {
          "type": "number"
        },
        "detected_languages": {
          "type": "array"
        },
        "source_url": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/speaker-diarize"
    },
    "split-pdf": {
      "slug": "split-pdf",
      "price": "0.04",
      "cluster": "mediakit",
      "description": "PDF splitter / PDF page extractor / split PDF by range / PDF to multiple files. Split a PDF by page ranges into multiple PDFs. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "pdf-split",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdf_url": {
            "type": "string"
          },
          "ranges": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "split_each_page": {
            "type": "boolean"
          }
        },
        "required": [
          "pdf_url"
        ]
      },
      "outputProperties": {
        "pdfs": {
          "type": "string",
          "description": ""
        },
        "output_count": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/split-pdf"
    },
    "sports-schedule": {
      "slug": "sports-schedule",
      "price": "0.01",
      "cluster": "locale",
      "description": "Sports schedule / MLB / NBA / NHL / NFL / WNBA / MLS / EPL / La Liga / Bundesliga / Serie A — next games + recent results / sports schedule API / TheSportsDB v1 wrapper. Pass a league code; scope='upcoming' (default) returns the next 15 events with start time, venue, teams. scope='recent' returns last 15 completed games including scores. Single hit to TheSportsDB free tier (no API key, commercial-OK with attribution).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "sports",
        "schedule",
        "games",
        "scores",
        "mlb",
        "nba",
        "nhl",
        "nfl",
        "epl"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "league": {
            "type": "string",
            "enum": [
              "MLB",
              "NBA",
              "NHL",
              "NFL",
              "WNBA",
              "MLS",
              "EPL",
              "LALIGA",
              "BUNDESLIGA",
              "SERIEA"
            ],
            "description": "League code. Case-insensitive."
          },
          "scope": {
            "type": "string",
            "enum": [
              "upcoming",
              "recent"
            ],
            "description": "What to return — next games (default) or last results."
          }
        },
        "required": [
          "league"
        ]
      },
      "outputProperties": {
        "league": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "events": {
          "type": "array"
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/sports-schedule"
    },
    "sql-from-prompt": {
      "slug": "sql-from-prompt",
      "price": "0.02",
      "cluster": "textkit",
      "description": "Text to SQL / NL to SQL / AI SQL generator. Postgres, MySQL, SQLite, BigQuery, Snowflake, MSSQL, DuckDB, ANSI. Optional schema. Returns SQL + explanation + tables_referenced + is_destructive + warnings.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "sql",
        "developer",
        "ai",
        "query",
        "database"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string"
          },
          "schema": {
            "type": "string",
            "description": "Optional CREATE TABLE / DDL or schema description."
          },
          "dialect": {
            "type": "string",
            "enum": [
              "postgres",
              "mysql",
              "sqlite",
              "bigquery",
              "snowflake",
              "mssql",
              "duckdb",
              "ansi"
            ]
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "sql": {
          "type": "string"
        },
        "dialect": {
          "type": "string"
        },
        "explanation": {
          "type": "string"
        },
        "tables_referenced": {
          "type": "array"
        },
        "is_destructive": {
          "type": "boolean"
        },
        "warnings": {
          "type": "array"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/sql-from-prompt"
    },
    "ssl-cert": {
      "slug": "ssl-cert",
      "price": "0.03",
      "cluster": "web-probe",
      "description": "SSL certificate inspector / TLS cert checker / certificate transparency lookup / ssl expiry. Issuer, subject, SAN list, validity dates, days-until-expiry. Sourced from Certificate Transparency logs (crt.sh).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "ssl-cert-info",
      "inputSchema": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string"
          },
          "history": {
            "type": "boolean"
          }
        },
        "required": [
          "host"
        ]
      },
      "outputProperties": {
        "host": {
          "type": "string",
          "description": ""
        },
        "issuer_common_name": {
          "type": "string",
          "description": ""
        },
        "days_until_expiry": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/ssl-cert"
    },
    "ssl-cert-info": {
      "slug": "ssl-cert-info",
      "price": "0.03",
      "cluster": "web-probe",
      "description": "SSL / TLS certificate inspector. Issuer, subject, SAN list, validity dates, days-until-expiry, expires-soon flag. Sourced from Certificate Transparency logs (crt.sh). Optional cert history.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "ssl",
        "tls",
        "certificate",
        "security",
        "ct-log",
        "expiry"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string"
          },
          "history": {
            "type": "boolean",
            "description": "Include up to 50 historical cert entries. Default false."
          }
        },
        "required": [
          "host"
        ]
      },
      "outputProperties": {
        "host": {
          "type": "string"
        },
        "common_name": {
          "type": "string"
        },
        "issuer": {
          "type": "string"
        },
        "issuer_common_name": {
          "type": "string"
        },
        "san_list": {
          "type": "array"
        },
        "san_count": {
          "type": "number"
        },
        "not_before": {
          "type": "string"
        },
        "not_after": {
          "type": "string"
        },
        "days_until_expiry": {
          "type": "number"
        },
        "days_since_issuance": {
          "type": "number"
        },
        "is_expired": {
          "type": "boolean"
        },
        "expires_soon": {
          "type": "boolean"
        },
        "serial_number": {
          "type": "string"
        },
        "crtsh_id": {
          "type": "number"
        },
        "cert_history": {
          "type": "array"
        },
        "total_certs_seen": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/ssl-cert-info"
    },
    "stablecoin-monitor": {
      "slug": "stablecoin-monitor",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Stablecoin monitor. Live prices and basis-point deviation from $1 for USDT, USDC, DAI, FRAX, PYUSD, FDUSD, USDE, RLUSD. Configurable depeg-alert threshold. Wraps the same backend as stablecoin-peg under a clearer slug.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbols": {
            "type": "array"
          },
          "alert_threshold_bps": {
            "type": "number"
          }
        }
      },
      "outputProperties": {
        "depeg_alert_count": {
          "type": "string",
          "description": ""
        },
        "stablecoins": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/stablecoin-monitor"
    },
    "stablecoin-peg": {
      "slug": "stablecoin-peg",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Stablecoin peg monitor / depeg detector. Real-time prices for USDT, USDC, DAI, FRAX, PYUSD, FDUSD, USDE, RLUSD. Configurable depeg alert threshold (basis points). Catches USDC's 2023-style depegs in real time.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "crypto",
        "stablecoin",
        "depeg",
        "monitoring",
        "defi"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbols": {
            "type": "array",
            "description": "Up to 20 stablecoin symbols. Default: 8 major stables."
          },
          "alert_threshold_bps": {
            "type": "number",
            "description": "Basis points from $1.00 to flag. Default 50 (0.5%)."
          }
        }
      },
      "outputProperties": {
        "stablecoins": {
          "type": "array"
        },
        "symbols_evaluated": {
          "type": "array"
        },
        "unknown_symbols": {
          "type": "array"
        },
        "alert_threshold_bps": {
          "type": "number"
        },
        "depeg_alert_count": {
          "type": "number"
        },
        "has_any_depeg": {
          "type": "boolean"
        },
        "fetched_at": {
          "type": "string"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/stablecoin-peg"
    },
    "structured-extract": {
      "slug": "structured-extract",
      "price": "0.01",
      "cluster": "textkit",
      "description": "Structured-data extractor / JSON-from-text / schema-guided extraction / key-value pull / form-filler. Reads free-form text and emits a JSON object conforming to a user-supplied JSON Schema. Powered by Venice zai-org-glm-4.7 (function-calling-default model) with response_format json_object. Returns the extracted object plus a `validates` flag against the user's schema (basic top-level type and required-key check).",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text. Up to 30,000 chars."
          },
          "schema": {
            "type": "object",
            "description": "JSON Schema describing the desired output object. The handler relays this to the model and validates the result's top-level shape."
          }
        },
        "required": [
          "text",
          "schema"
        ]
      },
      "outputProperties": {
        "extracted": {
          "type": "string",
          "description": ""
        },
        "validates": {
          "type": "string",
          "description": ""
        },
        "schema": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/structured-extract"
    },
    "subdomain-enum": {
      "slug": "subdomain-enum",
      "price": "0.03",
      "cluster": "web-probe",
      "description": "Subdomain enumeration / attack-surface mapping / DNS recon. Certificate Transparency log mining (crt.sh). All-public data. Each subdomain with first-seen, last-seen, cert count.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "security",
        "subdomain",
        "ct-log",
        "recon"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "include_wildcards": {
            "type": "boolean",
            "description": "Include *.example.com entries. Default false."
          }
        },
        "required": [
          "domain"
        ]
      },
      "outputProperties": {
        "domain": {
          "type": "string"
        },
        "subdomain_count": {
          "type": "number"
        },
        "subdomains": {
          "type": "array"
        },
        "cert_log_entries_examined": {
          "type": "number"
        },
        "source": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/subdomain-enum"
    },
    "subtitles": {
      "slug": "subtitles",
      "price": "0.08",
      "cluster": "mediakit",
      "description": "SRT / VTT subtitle generator from video or audio. Whisper v3. Word-wrapped, ready for VLC / Premiere / FFmpeg.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY_TRANSCRIBE"
      ],
      "tags": [
        "subtitles",
        "srt",
        "vtt",
        "captions",
        "whisper",
        "transcription"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "media_url": {
            "type": "string",
            "description": "Public URL of an audio or video file. mp3, mp4, mpeg, mpga, m4a, wav, webm. Max 60 minutes."
          },
          "format": {
            "type": "string",
            "description": "'srt' (default) or 'vtt'."
          },
          "language": {
            "type": "string",
            "description": "Optional ISO language code. Auto-detected if omitted."
          },
          "task": {
            "type": "string",
            "description": "'transcribe' (default) or 'translate' (translates to English)."
          },
          "max_chars_per_line": {
            "type": "number",
            "description": "Max characters per subtitle line. Default 42. Range 16-120."
          }
        },
        "required": [
          "media_url"
        ]
      },
      "outputProperties": {
        "subtitles": {
          "type": "string",
          "description": "Full subtitle file content as a string."
        },
        "format": {
          "type": "string",
          "description": "Echo of the format used."
        },
        "mime_type": {
          "type": "string",
          "description": "MIME type for the subtitle format ('application/x-subrip' or 'text/vtt')."
        },
        "cue_count": {
          "type": "number",
          "description": "Number of subtitle cues generated."
        },
        "duration_seconds": {
          "type": "number",
          "description": "Source media duration."
        },
        "detected_languages": {
          "type": "array",
          "description": "Languages auto-detected in the audio."
        },
        "task": {
          "type": "string",
          "description": "Echo of the task performed."
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL."
        }
      },
      "url": "https://x402.org/v1/subtitles"
    },
    "summarize": {
      "slug": "summarize",
      "price": "0.01",
      "cluster": "textkit",
      "description": "AI summarizer / TLDR generator. Compress long text into tldr / bullets / paragraph / executive-summary. 30k char input. Mistral-powered.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "summarize",
        "tldr",
        "executive-summary",
        "ai",
        "llm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to summarize. Max 30,000 chars."
          },
          "style": {
            "type": "string",
            "description": "'tldr' (default), 'bullets', 'paragraph', or 'executive'."
          },
          "max_words": {
            "type": "number",
            "description": "Optional target length in words (1-1000)."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "summary": {
          "type": "string"
        },
        "style": {
          "type": "string"
        },
        "input_chars": {
          "type": "number"
        },
        "output_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/summarize"
    },
    "summarize-text": {
      "slug": "summarize-text",
      "price": "0.01",
      "cluster": "textkit",
      "description": "AI text summarizer / TLDR generator. 4 styles: tldr (1-2 sentences), bullets (3-7 points), paragraph, executive (headline + bullets + recommendation). 30k char input. Mistral powered.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "summarize",
        "tldr",
        "executive-summary",
        "ai",
        "llm"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to summarize. Max 30,000 chars."
          },
          "style": {
            "type": "string",
            "enum": [
              "tldr",
              "bullets",
              "paragraph",
              "executive"
            ],
            "description": "'tldr' (default), 'bullets', 'paragraph', or 'executive'."
          },
          "max_words": {
            "type": "number",
            "description": "Optional target length in words (1-1000)."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "summary": {
          "type": "string"
        },
        "style": {
          "type": "string"
        },
        "input_chars": {
          "type": "number"
        },
        "output_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/summarize-text"
    },
    "sunrise-sunset": {
      "slug": "sunrise-sunset",
      "price": "0.002",
      "cluster": "locale",
      "description": "Sunrise sunset times. Returns sunrise, sunset, solar noon, day length, and civil / nautical / astronomical twilight begin and end for any latitude/longitude on any date. Also covers golden-hour and dawn / dusk. Same backend as astro-times under a more search-friendly slug. UTC ISO8601 strings.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "date": {
            "type": "string"
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "outputProperties": {
        "date": {
          "type": "string",
          "description": ""
        },
        "times": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/sunrise-sunset"
    },
    "tech-stack-detect": {
      "slug": "tech-stack-detect",
      "price": "0.01",
      "cluster": "web-probe",
      "description": "Tech stack detector / website fingerprint / Wappalyzer alternative. Detects WordPress / Shopify / Webflow / Ghost / Next.js / Nuxt / Astro / Gatsby / React / Vue / Vercel / Netlify / Cloudflare / Stripe / Intercom / 50+ more. Header + meta + script + cookie patterns.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "tech-stack",
        "wappalyzer",
        "detect",
        "fingerprint"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL (http or https). Single GET request follows redirects; final_url is reported."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "url": {
          "type": "string"
        },
        "final_url": {
          "type": "string"
        },
        "status_code": {
          "type": "number"
        },
        "detection_count": {
          "type": "number"
        },
        "detections": {
          "type": "array"
        },
        "by_category": {
          "type": "object"
        },
        "server_header": {
          "type": "string"
        },
        "powered_by": {
          "type": "string"
        },
        "content_type": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/tech-stack-detect"
    },
    "text-classify": {
      "slug": "text-classify",
      "price": "0.005",
      "cluster": "textkit",
      "description": "Text classifier. Zero-shot classification — caller supplies 2-25 labels and the model picks the best one (or all matching labels in multi-label mode) with calibrated confidence scores and a per-label reason. Same backend as classify-text under a more search-friendly slug. Mistral powered.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "multi_label": {
            "type": "boolean"
          },
          "label_descriptions": {
            "type": "object"
          }
        },
        "required": [
          "text",
          "labels"
        ]
      },
      "outputProperties": {
        "top_label": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/text-classify"
    },
    "text-embedding": {
      "slug": "text-embedding",
      "price": "0.002",
      "cluster": "textkit",
      "description": "Text embedding / vector embedding / semantic vector / Venice embeddings / Gemini embeddings / BGE-M3. Embeds 1 to 100 strings via Venice. Tier shorthand: 'default' → gemini-embedding-2-preview (newest, recommended), 'fast' → text-embedding-bge-m3, 'openai-compat' → text-embedding-3-small. You can also pass a full Venice embedding model name. Returns a list of vectors aligned with input order.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "texts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "1 to 100 strings to embed; each up to 30,000 chars."
          },
          "model": {
            "type": "string",
            "description": "Tier shorthand ('default'|'fast'|'openai-compat') or full Venice embedding model name. Default 'default'."
          }
        },
        "required": [
          "texts"
        ]
      },
      "outputProperties": {
        "embeddings": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "dimensions": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "tier": {
          "type": "string",
          "description": ""
        },
        "usage": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/text-embedding"
    },
    "text-normalize": {
      "slug": "text-normalize",
      "price": "0.001",
      "cluster": "textkit",
      "description": "Text normalize. Unicode NFC / NFD / NFKC / NFKD normalization plus per-codepoint script classification (Latin / Cyrillic / Greek / Hebrew / Arabic / CJK / etc.), homoglyph detection (the Cyrillic 'а' that looks like Latin 'a'), and invisible / RTL / BOM detection. Same backend as unicode-normalize. Pure JS — no upstream API.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Input text. Up to 100000 chars."
          },
          "form": {
            "type": "string",
            "enum": [
              "NFC",
              "NFD",
              "NFKC",
              "NFKD"
            ],
            "description": "Default 'NFC'."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "normalized": {
          "type": "string",
          "description": ""
        },
        "form": {
          "type": "string",
          "description": ""
        },
        "scripts_detected": {
          "type": "string",
          "description": ""
        },
        "is_mixed_script": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/text-normalize"
    },
    "text-to-speech": {
      "slug": "text-to-speech",
      "price": "0.05",
      "cluster": "genstudio",
      "description": "Text to speech / TTS / voice generator. Venice TTS (Kokoro / xAI / ElevenLabs / Orpheus / MiniMax / Gemini). 30+ voices, 6 audio formats. Returns hosted MP3 URL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY",
        "FAL_KEY"
      ],
      "tags": [
        "tts",
        "speech",
        "audio",
        "voice",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Max 4000 chars."
          },
          "voice": {
            "type": "string",
            "description": "Default 'af_sky'."
          },
          "model": {
            "type": "string",
            "description": "Default 'tts-kokoro'. Other options: tts-xai-v1, tts-elevenlabs-turbo-v2-5, tts-orpheus, etc."
          },
          "speed": {
            "type": "number",
            "description": "0.25-4. Default 1."
          },
          "format": {
            "type": "string",
            "enum": [
              "mp3",
              "wav",
              "opus",
              "aac",
              "flac"
            ],
            "description": "mp3 (default), wav, opus, aac, flac."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "audio_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "content_type": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "voice": {
          "type": "string"
        },
        "model": {
          "type": "string"
        },
        "speed": {
          "type": "number"
        },
        "input_chars": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/text-to-speech"
    },
    "text-to-video": {
      "slug": "text-to-video",
      "price": "0.20",
      "cluster": "genstudio",
      "description": "Text-to-video / AI video / Seedance / generative video / cinematic clip from prompt. Text-to-video via Venice's seedance-2-0-fast-text-to-video. Duration / aspect-ratio / resolution configurable. The synchronous path has a 22s budget; if Venice can't return inline within that window, the response surfaces a job_id + poll_url for the caller to resolve later.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Video scene description."
          },
          "duration": {
            "type": "string",
            "description": "Clip length, e.g. '5s' or '10s'. Default '5s'."
          },
          "aspect_ratio": {
            "type": "string",
            "description": "Aspect ratio: '16:9', '9:16', '1:1', '4:3'. Default '16:9'."
          },
          "resolution": {
            "type": "string",
            "description": "Video resolution: '720p', '480p'. Default '720p'."
          },
          "model": {
            "type": "string",
            "description": "Override the model. Default 'seedance-2-0-fast-text-to-video'."
          }
        },
        "required": [
          "prompt"
        ]
      },
      "outputProperties": {
        "video_url": {
          "type": "string",
          "description": ""
        },
        "duration": {
          "type": "string",
          "description": ""
        },
        "aspect_ratio": {
          "type": "string",
          "description": ""
        },
        "resolution": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "prompt": {
          "type": "string",
          "description": ""
        },
        "venice_request_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/text-to-video"
    },
    "thesaurus": {
      "slug": "thesaurus",
      "price": "0.002",
      "cluster": "textkit",
      "description": "Thesaurus / synonyms / antonyms / similar words / rhymes / Datamuse / paraphrasing / query expansion. Returns related words for a given input word, configurable across five modes: 'synonyms' (rel_syn), 'antonyms' (rel_ant), 'sounds_like' (homophones / rhymes), 'similar_meaning' (semantically near), or 'related' (commonly co-occurring triggers). Wraps the public Datamuse API — no auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "word": {
            "type": "string",
            "description": "Single English word to look up."
          },
          "mode": {
            "type": "string",
            "enum": [
              "synonyms",
              "antonyms",
              "sounds_like",
              "similar_meaning",
              "related"
            ],
            "description": "Relation type. Default 'synonyms'."
          },
          "limit": {
            "type": "number",
            "description": "Max results to return. 1-50. Default 20."
          }
        },
        "required": [
          "word"
        ]
      },
      "outputProperties": {
        "word": {
          "type": "string",
          "description": ""
        },
        "mode": {
          "type": "string",
          "description": ""
        },
        "results": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/thesaurus"
    },
    "timezone-convert": {
      "slug": "timezone-convert",
      "price": "0.001",
      "cluster": "locale",
      "description": "Timezone convert / IANA tz conversion / DST-aware time arithmetic / wall-clock to UTC / convert across cities. Convert a datetime from one IANA timezone to another. ISO-8601 input — bare wall-time strings are interpreted in the from_tz, fully-qualified offsets are honored. DST is handled correctly (uses V8's built-in tzdata via Intl.DateTimeFormat). Returns both formatted strings, both UTC offsets, and the difference in hours.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "datetime": {
            "type": "string",
            "description": "ISO-8601 datetime. With offset (e.g. '2026-05-08T12:00:00-07:00') it's used as-is; without offset (e.g. '2026-05-08T12:00:00') it's interpreted in from_tz."
          },
          "from_tz": {
            "type": "string",
            "description": "IANA timezone for the input wall-time (e.g. 'America/Los_Angeles')."
          },
          "to_tz": {
            "type": "string",
            "description": "IANA timezone for the output (e.g. 'Asia/Tokyo')."
          }
        },
        "required": [
          "datetime",
          "from_tz",
          "to_tz"
        ]
      },
      "outputProperties": {
        "from": {
          "type": "string",
          "description": ""
        },
        "to": {
          "type": "string",
          "description": ""
        },
        "utc_iso": {
          "type": "string",
          "description": ""
        },
        "utc_offset_diff_hours": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/timezone-convert"
    },
    "timezone-lookup": {
      "slug": "timezone-lookup",
      "price": "0.001",
      "cluster": "locale",
      "description": "Timezone lookup / IANA tz / UTC offset / DST status / local time at lat-lng / which timezone. Resolves the current local time, IANA timezone name, UTC offset (seconds), and DST status either by IANA timezone string (e.g. 'America/Los_Angeles') or by latitude/longitude coordinates. Wraps the public TimeAPI.io endpoint — no auth, commercial-OK.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Decimal degrees, range [-90, 90]. Required if no timezone provided."
          },
          "longitude": {
            "type": "number",
            "description": "Decimal degrees, range [-180, 180]. Required if no timezone provided."
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone identifier (e.g. 'America/Los_Angeles', 'Europe/Berlin'). Either this or lat+lon required."
          },
          "datetime_utc": {
            "type": "string",
            "description": "Optional UTC datetime to evaluate at (ISO8601). Reserved for future use; current API returns now."
          }
        }
      },
      "outputProperties": {
        "timezone": {
          "type": "string",
          "description": ""
        },
        "utc_offset_seconds": {
          "type": "string",
          "description": ""
        },
        "abbreviation": {
          "type": "string",
          "description": ""
        },
        "is_dst": {
          "type": "string",
          "description": ""
        },
        "current_local_time": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/timezone-lookup"
    },
    "tld-info": {
      "slug": "tld-info",
      "price": "0.001",
      "cluster": "web-probe",
      "description": "TLD info / top-level domain registry lookup / ccTLD vs gTLD / TLD introduction year / new gTLD registry. For any top-level domain, returns the registry operator, type (gTLD / ccTLD / sTLD), country (for ccTLDs), introduction year, and notes. In-handler dictionary covers ~80 of the most common TLDs; falls back to a structural guess for unrecognized TLDs.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tld": {
            "type": "string",
            "description": "TLD without leading dot (e.g. 'ai', 'com', 'co.uk' uses just 'uk')."
          }
        },
        "required": [
          "tld"
        ]
      },
      "outputProperties": {
        "tld": {
          "type": "string",
          "description": ""
        },
        "is_valid": {
          "type": "string",
          "description": ""
        },
        "type": {
          "type": "string",
          "description": ""
        },
        "registry": {
          "type": "string",
          "description": ""
        },
        "country": {
          "type": "string",
          "description": ""
        },
        "intro_year": {
          "type": "string",
          "description": ""
        },
        "notes": {
          "type": "string",
          "description": ""
        },
        "in_dictionary": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/tld-info"
    },
    "token-burn-stats": {
      "slug": "token-burn-stats",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Token burn stats / total burned / latest burn tx / burn-as-% supply / supply-burn auditor. Walks all transfers TO the canonical burn addresses (0x0…0 and 0x…dEaD) for any ERC-20 on Ethereum, Base, Polygon, Arbitrum, or Optimism via Etherscan v2 and reports total burned (raw + human), most-recent burn tx + timestamp, count of burn transfers, and burn percentage of total supply.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte ERC-20 contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "token_address"
        ]
      },
      "outputProperties": {
        "token_address": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "symbol": {
          "type": "string",
          "description": ""
        },
        "decimals": {
          "type": "string",
          "description": ""
        },
        "total_burned_raw": {
          "type": "string",
          "description": ""
        },
        "total_burned": {
          "type": "string",
          "description": ""
        },
        "burn_count": {
          "type": "string",
          "description": ""
        },
        "last_burn_at": {
          "type": "string",
          "description": ""
        },
        "last_burn_tx": {
          "type": "string",
          "description": ""
        },
        "total_supply": {
          "type": "string",
          "description": ""
        },
        "burn_pct_of_supply": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/token-burn-stats"
    },
    "token-count": {
      "slug": "token-count",
      "price": "0.001",
      "cluster": "textkit",
      "description": "Token count / tokenizer estimate / GPT-4 token count / Claude token count / Gemini token count / context-window pre-flight. Pure-local heuristic estimator targeting cl100k_base / o200k_base (GPT-4o) with calibrated multipliers for Claude and Gemini. Input model name is matched against an internal table of supported tokenizers. Accuracy ±5% versus tiktoken on typical English. No upstream call.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to count. Up to 1,000,000 chars."
          },
          "model": {
            "type": "string",
            "description": "Target model. Examples: 'gpt-4o' (default), 'claude-sonnet-4-5', 'gemini-2-pro'. Free-form; matched against an internal multiplier table."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "text_chars": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "matched_tokenizer": {
          "type": "string",
          "description": ""
        },
        "estimated_tokens": {
          "type": "string",
          "description": ""
        },
        "accuracy_note": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/token-count"
    },
    "token-honeypot": {
      "slug": "token-honeypot",
      "price": "0.05",
      "cluster": "edge-market",
      "description": "EVM token honeypot detection / can-i-sell check / rug-pull scanner / sell-tax simulator / buy-tax simulator / scam token detector / Base honeypot / Ethereum honeypot / BSC honeypot. Simulates a buy + sell of an ERC-20 token via honeypot.is, returning whether the token is a honeypot, the realized buy/sell/transfer tax percentages, max buy/sell amounts (atomic units), proxy/owner contract flags, and a normalized risk level (low/medium/high/critical) with human-readable reasons. Free public API — no auth.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte EVM token contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "bsc"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "token_address"
        ]
      },
      "outputProperties": {
        "token": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "simulation": {
          "type": "string",
          "description": ""
        },
        "contract": {
          "type": "string",
          "description": ""
        },
        "risk": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/token-honeypot"
    },
    "token-price": {
      "slug": "token-price",
      "price": "0.02",
      "cluster": "edge-market",
      "description": "Crypto token price API / CoinGecko wrapper. Lookup by id (bitcoin), symbol (BTC), or contract address (with chain). USD + native currency, 24h/7d change, market cap, volume, supply, ATH, ATL.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "crypto",
        "price",
        "coingecko",
        "token",
        "web3"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "CoinGecko id ('bitcoin'), symbol ('BTC'), or 0x address."
          },
          "vs_currency": {
            "type": "string",
            "description": "Default 'usd'."
          },
          "chain": {
            "type": "string",
            "description": "For address queries: ethereum, base, arbitrum-one, polygon-pos, etc."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string"
        },
        "resolution": {
          "type": "string"
        },
        "coin_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "symbol": {
          "type": "string"
        },
        "image": {
          "type": "string"
        },
        "market_cap_rank": {
          "type": "number"
        },
        "vs_currency": {
          "type": "string"
        },
        "price": {
          "type": "number"
        },
        "price_change_24h_pct": {
          "type": "number"
        },
        "price_change_7d_pct": {
          "type": "number"
        },
        "market_cap": {
          "type": "number"
        },
        "total_volume": {
          "type": "number"
        },
        "circulating_supply": {
          "type": "number"
        },
        "total_supply": {
          "type": "number"
        },
        "max_supply": {
          "type": "number"
        },
        "ath": {
          "type": "object"
        },
        "atl": {
          "type": "object"
        },
        "last_updated": {
          "type": "string"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/token-price"
    },
    "token-risk": {
      "slug": "token-risk",
      "price": "0.10",
      "cluster": "edge-market",
      "description": "Token risk score / token security audit / rug-pull score / token safety check. Composite 0-100 score from honeypot.is + GoPlus Security + Etherscan contract age. Subscores: honeypot, taxes, holder concentration, liquidity, contract age, ownership. Verdict: safe / caution / high_risk.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "token-risk-score",
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte EVM token contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "bsc"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "token_address"
        ]
      },
      "outputProperties": {
        "token": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "score": {
          "type": "string",
          "description": ""
        },
        "verdict": {
          "type": "string",
          "description": ""
        },
        "subscores": {
          "type": "string",
          "description": ""
        },
        "warnings": {
          "type": "string",
          "description": ""
        },
        "data_sources": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/token-risk"
    },
    "token-risk-score": {
      "slug": "token-risk-score",
      "price": "0.10",
      "cluster": "edge-market",
      "description": "Composite EVM token risk score / token security audit / rug-pull score / token safety check / honeypot + tax + holder concentration / GoPlus + honeypot.is composite / Base token vetting / Ethereum token vetting / BSC token vetting. Pulls three independent signals in parallel — honeypot.is (sell simulation + buy/sell tax), GoPlus Security (holder concentration, LP holders + lock, ownership flags, mintable/proxy/hidden-owner detection), and Etherscan v2 contract creation block (for age) — and rolls them up into a 0-100 score (higher = safer) with subscores (honeypot, taxes, holder_concentration, liquidity, contract_age, ownership) and a verdict (safe / caution / high_risk). Each backend failure degrades just that subscore and adds a warning; the rest still computes.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte EVM token contract address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "bsc"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "token_address"
        ]
      },
      "outputProperties": {
        "token": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "score": {
          "type": "string",
          "description": ""
        },
        "verdict": {
          "type": "string",
          "description": ""
        },
        "subscores": {
          "type": "string",
          "description": ""
        },
        "warnings": {
          "type": "string",
          "description": ""
        },
        "data_sources": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/token-risk-score"
    },
    "token-volatility": {
      "slug": "token-volatility",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Token volatility / historical volatility / annualized vol / standard deviation of returns / crypto vol calculator. For any CoinGecko-listed token, computes log-return standard deviation over the last N days (default 30) and annualizes by sqrt(365). Returns daily and annualized volatility as percent, count of return observations, first and last close prices. Backed by CoinGecko's free public market_chart endpoint.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "coingecko_id": {
            "type": "string",
            "description": "CoinGecko coin id (e.g. 'ethereum', 'bitcoin', 'solana'). Lower-case slug, not the symbol."
          },
          "days": {
            "type": "number",
            "description": "Lookback window in days. Range [7, 365]. Default 30."
          }
        },
        "required": [
          "coingecko_id"
        ]
      },
      "outputProperties": {
        "coingecko_id": {
          "type": "string",
          "description": ""
        },
        "days": {
          "type": "string",
          "description": ""
        },
        "returns_count": {
          "type": "string",
          "description": ""
        },
        "daily_volatility_pct": {
          "type": "string",
          "description": ""
        },
        "annualized_volatility_pct": {
          "type": "string",
          "description": ""
        },
        "first_price_usd": {
          "type": "string",
          "description": ""
        },
        "last_price_usd": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/token-volatility"
    },
    "tool-card-generate": {
      "slug": "tool-card-generate",
      "price": "0.005",
      "cluster": "textkit",
      "description": "Tool card generator / OpenAI function-calling spec / A2A tool-card / agent tool description. Given a tool name + plain-English description (and optional parameter hints), emits a strict OpenAI/A2A-compatible tool card: { name, description, parameters: <JSON Schema> }. Powered by Venice zai-org-glm-4.7 in json_object mode. Useful for retrofitting LLM-callable tool descriptions onto existing API endpoints.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Tool name (1-64 chars, snake_case or kebab-case, starts with a letter)."
          },
          "description": {
            "type": "string",
            "description": "One-sentence description of what the tool does."
          },
          "parameters_hint": {
            "type": "string",
            "description": "Free-form hint about parameters: types, names, what they mean. Optional."
          },
          "example": {
            "type": "string",
            "description": "Optional example invocation."
          }
        },
        "required": [
          "name",
          "description"
        ]
      },
      "outputProperties": {
        "tool_card": {
          "type": "string",
          "description": ""
        },
        "model": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/tool-card-generate"
    },
    "trademark-search": {
      "slug": "trademark-search",
      "price": "0.03",
      "cluster": "edge-finance",
      "description": "Trademark search / USPTO trademark lookup / TSDR / federal trademark database. Look up any US trademark by serial number or registration number. Returns mark text, owner, status, filing date, classes, goods/services. Federal public TSDR API.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "uspto-trademark-search",
      "inputSchema": {
        "type": "object",
        "properties": {
          "serial_number": {
            "type": "string",
            "description": "8-digit USPTO serial number (e.g. '78787878')."
          },
          "registration_number": {
            "type": "string",
            "description": "7-digit USPTO registration number (e.g. '3000000')."
          }
        }
      },
      "outputProperties": {
        "found": {
          "type": "string",
          "description": ""
        },
        "mark_text": {
          "type": "string",
          "description": ""
        },
        "status_category": {
          "type": "string",
          "description": ""
        },
        "filing_date": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/trademark-search"
    },
    "transcribe": {
      "slug": "transcribe",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "Video / audio transcription via Whisper v3. 90+ languages, translate-to-English mode, optional speaker diarization. 60-min max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "transcription",
        "whisper",
        "video",
        "audio",
        "subtitles"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "media_url": {
            "type": "string",
            "description": "Public URL of an audio or video file. Supports mp3, mp4, mpeg, mpga, m4a, wav, webm. Max 60 minutes."
          },
          "language": {
            "type": "string",
            "description": "Optional ISO language code (e.g. 'en', 'fr', 'es'). If omitted, auto-detected."
          },
          "task": {
            "type": "string",
            "description": "Either 'transcribe' (default) or 'translate' (translates to English)."
          },
          "diarize": {
            "type": "boolean",
            "description": "Whether to identify different speakers. Default false."
          }
        },
        "required": [
          "media_url"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string",
          "description": "Full transcript text"
        },
        "chunks": {
          "type": "array",
          "description": "Time-segmented chunks with timestamps"
        },
        "detected_languages": {
          "type": "array",
          "description": "Languages auto-detected in the audio"
        },
        "duration_seconds": {
          "type": "number",
          "description": "Source media duration in seconds"
        },
        "task": {
          "type": "string",
          "description": "Echo of the task performed"
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL"
        }
      },
      "url": "https://x402.org/v1/transcribe"
    },
    "translate": {
      "slug": "translate",
      "price": "0.005",
      "cluster": "textkit",
      "description": "AI translator. 100+ languages. Auto-detect source. ISO codes or names. Native fluency. Preserves Markdown / code / URLs.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "translate",
        "translation",
        "i18n",
        "language",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to translate. Max 12,000 chars."
          },
          "target_language": {
            "type": "string",
            "description": "ISO code or language name (e.g. 'fr', 'Mandarin Chinese')."
          },
          "source_language": {
            "type": "string",
            "description": "Optional. Auto-detected if omitted."
          },
          "formality": {
            "type": "string",
            "description": "'casual', 'formal', or 'neutral' (default)."
          }
        },
        "required": [
          "text",
          "target_language"
        ]
      },
      "outputProperties": {
        "translated_text": {
          "type": "string"
        },
        "target_language": {
          "type": "string"
        },
        "source_language": {
          "type": "string"
        },
        "detected_source_language": {
          "type": "string"
        },
        "formality": {
          "type": "string"
        },
        "input_chars": {
          "type": "number"
        },
        "output_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/translate"
    },
    "translate-text": {
      "slug": "translate-text",
      "price": "0.01",
      "cluster": "textkit",
      "description": "AI translator — 100+ languages, native-fluent. Auto-detects source. ISO codes or language names. Configurable formality (casual/formal/neutral). Preserves Markdown / code / URLs.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY"
      ],
      "tags": [
        "translate",
        "translation",
        "i18n",
        "language",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to translate. Max 12,000 chars."
          },
          "target_language": {
            "type": "string",
            "description": "ISO code or language name (e.g. 'fr', 'Mandarin Chinese')."
          },
          "source_language": {
            "type": "string",
            "description": "Optional. Auto-detected if omitted."
          },
          "formality": {
            "type": "string",
            "enum": [
              "casual",
              "formal",
              "neutral"
            ],
            "description": "'casual', 'formal', or 'neutral' (default)."
          }
        },
        "required": [
          "text",
          "target_language"
        ]
      },
      "outputProperties": {
        "translated_text": {
          "type": "string"
        },
        "target_language": {
          "type": "string"
        },
        "source_language": {
          "type": "string"
        },
        "detected_source_language": {
          "type": "string"
        },
        "formality": {
          "type": "string"
        },
        "input_chars": {
          "type": "number"
        },
        "output_chars": {
          "type": "number"
        },
        "model": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/translate-text"
    },
    "tx-receipt-decode": {
      "slug": "tx-receipt-decode",
      "price": "0.02",
      "cluster": "edge-market",
      "description": "EVM transaction receipt decoder / log decoder / event log reader / Etherscan tx debug / receipt parser / Basescan tx explainer / tenderly-style trace lite. Given a tx hash, fetches the receipt + transaction via Etherscan v2 and decodes every log: ERC-20 / ERC-721 Transfer + Approval + ApprovalForAll are decoded canonically (from/to/value/tokenId etc.); other logs use the contract's verified ABI when available; remaining unknown topics are looked up against 4byte.directory's event-signature index. Returns status (success/failed), block number, gas used + gas price (gwei), from/to/value, and a structured array of decoded logs with named params and contract names where verified.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tx_hash": {
            "type": "string",
            "description": "0x-prefixed 32-byte transaction hash (66 chars total)."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'."
          }
        },
        "required": [
          "tx_hash"
        ]
      },
      "outputProperties": {
        "tx_hash": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "status": {
          "type": "string",
          "description": ""
        },
        "block_number": {
          "type": "string",
          "description": ""
        },
        "gas_used": {
          "type": "string",
          "description": ""
        },
        "gas_price_gwei": {
          "type": "string",
          "description": ""
        },
        "from": {
          "type": "string",
          "description": ""
        },
        "to": {
          "type": "string",
          "description": ""
        },
        "value_wei": {
          "type": "string",
          "description": ""
        },
        "decoded_logs": {
          "type": "string",
          "description": ""
        },
        "unknown_logs_count": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/tx-receipt-decode"
    },
    "tx-simulate-swap": {
      "slug": "tx-simulate-swap",
      "price": "0.02",
      "cluster": "edge-market",
      "description": "Tx simulate swap / pre-trade quote / DEX swap simulator / 1inch + LlamaSwap quote / would-it-succeed check. Given (from_token, to_token, amount_in, chain), pulls a routed quote from a free DEX meta-aggregator and returns expected output, min-out at user-supplied slippage (default 1%), gas estimate, router address, and a would_succeed verdict. Quote-only depth — full Tenderly-style state simulation requires a paid API and is documented in the response's simulation_caveat.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "from_token": {
            "type": "string",
            "description": "0x-prefixed 20-byte ERC-20 input token."
          },
          "to_token": {
            "type": "string",
            "description": "0x-prefixed 20-byte ERC-20 output token."
          },
          "amount_in": {
            "type": "string",
            "description": "Input amount as a decimal string in smallest units (wei-equivalent)."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'base'."
          },
          "slippage_pct": {
            "type": "number",
            "description": "Slippage tolerance for min_out, in percent. Range [0, 50]. Default 1."
          }
        },
        "required": [
          "from_token",
          "to_token",
          "amount_in"
        ]
      },
      "outputProperties": {
        "chain": {
          "type": "string",
          "description": ""
        },
        "from_token": {
          "type": "string",
          "description": ""
        },
        "to_token": {
          "type": "string",
          "description": ""
        },
        "amount_in": {
          "type": "string",
          "description": ""
        },
        "expected_out": {
          "type": "string",
          "description": ""
        },
        "min_out": {
          "type": "string",
          "description": ""
        },
        "slippage_pct": {
          "type": "string",
          "description": ""
        },
        "gas_estimate": {
          "type": "string",
          "description": ""
        },
        "router": {
          "type": "string",
          "description": ""
        },
        "approval_target": {
          "type": "string",
          "description": ""
        },
        "would_succeed": {
          "type": "string",
          "description": ""
        },
        "simulation_kind": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/tx-simulate-swap"
    },
    "type-inference-from-json": {
      "slug": "type-inference-from-json",
      "price": "0.001",
      "cluster": "textkit",
      "description": "Type inference from JSON / JSON to TypeScript / JSON to Zod / JSON to JSON Schema / JSON shape inferer / quicktype-style type generator. Paste a JSON sample (or array of samples); returns a generated type definition in your chosen format. Merges across array elements / object samples — properties present in some but not all become optional, mixed primitive types become unions. Auto-detects string formats (date-time / uuid / uri / email) for richer outputs. Pure compute, no upstream call, no API key. Ideal inside agent code-gen loops that need to consume an unfamiliar API response.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "json",
        "typescript",
        "zod",
        "json-schema",
        "type-inference",
        "codegen",
        "schema"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "json": {
            "type": [
              "string",
              "object",
              "array",
              "number",
              "boolean",
              "null"
            ],
            "description": "JSON sample — a JSON string OR a parsed object/array/primitive. Max 256 KB as string."
          },
          "format": {
            "type": "string",
            "enum": [
              "typescript",
              "zod",
              "jsonschema"
            ],
            "description": "Output format. Default 'typescript'."
          },
          "root_name": {
            "type": "string",
            "description": "Name of the root type / interface / Zod export. Default 'Root'."
          },
          "date_strings": {
            "type": "boolean",
            "description": "Recognize ISO date-time/UUID/URL/email and emit format-aware types. Default true."
          }
        },
        "required": [
          "json"
        ]
      },
      "outputProperties": {
        "format": {
          "type": "string"
        },
        "root_name": {
          "type": "string"
        },
        "types": {
          "type": "string"
        },
        "inferred_shape": {
          "type": "object"
        },
        "source": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/type-inference-from-json"
    },
    "unicode-normalize": {
      "slug": "unicode-normalize",
      "price": "0.001",
      "cluster": "textkit",
      "description": "Unicode normalize / NFC NFD NFKC NFKD / homoglyph detection / IDN spoof / lookalike chars / invisible characters / zero-width / phishing detection / RTL override. Normalizes text to NFC (default), NFD, NFKC, or NFKD, classifies every codepoint by script (Latin / Cyrillic / Greek / Hebrew / Arabic / CJK / Hangul / etc.), flags Cyrillic / Greek / Latin Extended homoglyphs (the Cyrillic 'а' that looks like Latin 'a', etc.) with their position, codepoint, and the ASCII char they impersonate, and surfaces hidden / formatting characters like zero-width spaces, RTL overrides, and BOMs. Pure JS, no upstream API.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Input text to normalize and analyze. Up to 100000 chars."
          },
          "form": {
            "type": "string",
            "enum": [
              "NFC",
              "NFD",
              "NFKC",
              "NFKD"
            ],
            "description": "Unicode normalization form. Default 'NFC'."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "normalized": {
          "type": "string",
          "description": ""
        },
        "form": {
          "type": "string",
          "description": ""
        },
        "scripts_detected": {
          "type": "string",
          "description": ""
        },
        "homoglyph_warnings": {
          "type": "string",
          "description": ""
        },
        "hidden_chars": {
          "type": "string",
          "description": ""
        },
        "is_mixed_script": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/unicode-normalize"
    },
    "upscale-image": {
      "slug": "upscale-image",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "AI image upscaler / super-resolution / image enlarger. ESRGAN. 1-8× scale factor. Best for photos and illustrations. fal.ai backend.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY"
      ],
      "tags": [
        "upscale",
        "super-resolution",
        "esrgan",
        "image",
        "enhance"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string"
          },
          "scale": {
            "type": "number",
            "minimum": 1,
            "maximum": 8,
            "description": "1-8. Default 2."
          }
        },
        "required": [
          "image_url"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "content_type": {
          "type": "string"
        },
        "scale": {
          "type": "number"
        },
        "source_url": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/upscale-image"
    },
    "url-metadata-extract": {
      "slug": "url-metadata-extract",
      "price": "0.003",
      "cluster": "web-probe",
      "description": "URL metadata extractor / OG tags / Open Graph parser / Twitter Card parser / meta tag extractor / link preview / page metadata / favicon resolver / JSON-LD reader / canonical URL extractor. Fetches a webpage and parses head-level metadata: title, description, Open Graph (og:*), Twitter Card (twitter:*), canonical link, favicon, html lang, keywords, robots, author, article:published_time, JSON-LD blocks. Returns absolute URLs for image and favicon. Useful for SEO audits, link-preview generation, content cataloging, RAG ingestion.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Page URL (http or https) to fetch and parse."
          },
          "user_agent": {
            "type": "string",
            "description": "Optional User-Agent header sent on fetch."
          },
          "follow_redirects": {
            "type": "boolean",
            "description": "Default true."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "url": {
          "type": "string",
          "description": ""
        },
        "final_url": {
          "type": "string",
          "description": ""
        },
        "status": {
          "type": "string",
          "description": ""
        },
        "title": {
          "type": "string",
          "description": ""
        },
        "description": {
          "type": "string",
          "description": ""
        },
        "image": {
          "type": "string",
          "description": ""
        },
        "canonical": {
          "type": "string",
          "description": ""
        },
        "favicon": {
          "type": "string",
          "description": ""
        },
        "language": {
          "type": "string",
          "description": ""
        },
        "og": {
          "type": "string",
          "description": ""
        },
        "twitter": {
          "type": "string",
          "description": ""
        },
        "json_ld": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/url-metadata-extract"
    },
    "user-agent-parse": {
      "slug": "user-agent-parse",
      "price": "0.001",
      "cluster": "web-probe",
      "description": "User-Agent parser / UA classifier / browser detection / OS detection / bot detection / AI crawler identifier (GPTBot, ClaudeBot, PerplexityBot). Pure-local regex parser — detects browser (Chrome, Firefox, Safari, Edge, Opera, Vivaldi, Samsung), OS (Windows, macOS, iOS, Android, Linux, ChromeOS) with version, device type (desktop / mobile / tablet / bot), and identifies 32+ specific bots/crawlers. No upstream call.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "user_agent": {
            "type": "string",
            "description": "Raw User-Agent header string. Up to 2000 chars."
          }
        },
        "required": [
          "user_agent"
        ]
      },
      "outputProperties": {
        "user_agent": {
          "type": "string",
          "description": ""
        },
        "is_bot": {
          "type": "string",
          "description": ""
        },
        "bot": {
          "type": "string",
          "description": ""
        },
        "browser": {
          "type": "string",
          "description": ""
        },
        "os": {
          "type": "string",
          "description": ""
        },
        "device": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/user-agent-parse"
    },
    "uspto-tm-name-search": {
      "slug": "uspto-tm-name-search",
      "price": "0.10",
      "cluster": "edge-finance",
      "description": "USPTO trademark name search / free-text TM search / wordmark search / brand-name clearance / freedom-to-use check. The companion to uspto-trademark-search (which is lookup-by-id only) — does the search USPTO does not expose as a free API. Returns active or all registered marks matching the query, with serial number, wordmark text, status, registration date, owner, and goods/services description. Source: MarkerAPI indexer of USPTO wordmarks. Screening tool only — not a substitute for a TM attorney clearance search.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Wordmark text to search (1-100 chars, e.g. 'APPLE', 'agentutility'). Matches active USPTO trademark wordmarks; case-insensitive."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "all"
            ],
            "description": "'active' (default — Live registrations only, what you usually want for clearance) or 'all' (includes abandoned, expired, cancelled)."
          },
          "start": {
            "type": "number",
            "description": "Pagination offset (1-indexed). Default 1. Each page returns up to 100 hits."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "query": {
          "type": "string",
          "description": ""
        },
        "count": {
          "type": "string",
          "description": ""
        },
        "returned": {
          "type": "string",
          "description": ""
        },
        "trademarks": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/uspto-tm-name-search"
    },
    "uspto-trademark-search": {
      "slug": "uspto-trademark-search",
      "price": "0.03",
      "cluster": "edge-finance",
      "description": "USPTO trademark status / TSDR lookup. Look up a US trademark by serial number or registration number. Returns mark text, owner, status, filing date, classes, goods/services. Federal public TSDR API.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "serial_number": {
            "type": "string",
            "description": "8-digit USPTO serial number (e.g. '78787878')."
          },
          "registration_number": {
            "type": "string",
            "description": "7-digit USPTO registration number (e.g. '3000000')."
          }
        }
      },
      "outputProperties": {
        "mark_text": {
          "type": "string",
          "description": ""
        },
        "status_category": {
          "type": "string",
          "description": ""
        },
        "filing_date": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/uspto-trademark-search"
    },
    "video-summarize": {
      "slug": "video-summarize",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "Video summarizer / podcast summarizer / lecture notes generator. One call: Whisper v3 transcribes + Mistral summarizes. 5 styles: tldr, bullets, paragraph, executive, chapters. Returns summary + transcript. 60 min max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY_TRANSCRIBE",
        "VENICE_API_KEY"
      ],
      "tags": [
        "video",
        "podcast",
        "summarize",
        "transcribe",
        "whisper"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "media_url": {
            "type": "string"
          },
          "style": {
            "type": "string",
            "enum": [
              "tldr",
              "bullets",
              "paragraph",
              "executive",
              "chapters"
            ]
          },
          "max_words": {
            "type": "number"
          },
          "language": {
            "type": "string"
          }
        },
        "required": [
          "media_url"
        ]
      },
      "outputProperties": {
        "summary": {
          "type": "string"
        },
        "style": {
          "type": "string"
        },
        "transcript": {
          "type": "string"
        },
        "transcript_chars": {
          "type": "number"
        },
        "duration_seconds": {
          "type": "number"
        },
        "detected_languages": {
          "type": "array"
        },
        "summary_model": {
          "type": "string"
        },
        "transcribe_model": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/video-summarize"
    },
    "video-thumbnail": {
      "slug": "video-thumbnail",
      "price": "0.03",
      "cluster": "mediakit",
      "description": "Video thumbnail / video frame extractor. First, middle, or last frame as JPG. fal.ai ffmpeg. Fast — no full transcode.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY"
      ],
      "tags": [
        "video",
        "thumbnail",
        "frame",
        "preview",
        "extract"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "description": "Public URL of a video file."
          },
          "frame_type": {
            "type": "string",
            "enum": [
              "first",
              "middle",
              "last"
            ],
            "description": "'first' (default), 'middle', or 'last'."
          }
        },
        "required": [
          "video_url"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "content_type": {
          "type": "string"
        },
        "frame_type": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/video-thumbnail"
    },
    "video-to-audio": {
      "slug": "video-to-audio",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "Video → audio extractor / video to audio converter. Extract MP3 audio track from any video URL (MP4, MOV, WEBM, MKV, AVI, M4V, FLV). Selectable bitrate (96/128/192 kbps). Useful for podcast extraction, audio archival, transcription pre-processing. 60-min / 500MB max. CloudConvert backend.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "mp4-to-mp3",
      "inputSchema": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "description": "Public URL of the source video. Max 500MB / 60 minutes."
          },
          "bitrate": {
            "type": "number",
            "enum": [
              96,
              128,
              192
            ],
            "description": "Output MP3 bitrate in kbps. 96 (smaller, voice), 128 (default, balanced), 192 (higher quality)."
          }
        },
        "required": [
          "video_url"
        ]
      },
      "outputProperties": {
        "audio_url": {
          "type": "string",
          "description": ""
        },
        "bitrate": {
          "type": "string",
          "description": ""
        },
        "file_size_bytes": {
          "type": "string",
          "description": ""
        },
        "source_url": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/video-to-audio"
    },
    "video-to-subtitles": {
      "slug": "video-to-subtitles",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "SRT / VTT subtitle generator from video or audio. Whisper v3 powered. Word-wrapped, ready for VLC / Premiere / FFmpeg. Auto-detect language + translate-to-English.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "FAL_KEY_TRANSCRIBE"
      ],
      "tags": [
        "subtitles",
        "srt",
        "vtt",
        "captions",
        "whisper",
        "transcription"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "media_url": {
            "type": "string",
            "description": "Public URL of an audio or video file. mp3, mp4, mpeg, mpga, m4a, wav, webm. Max 60 minutes."
          },
          "format": {
            "type": "string",
            "enum": [
              "srt",
              "vtt"
            ],
            "description": "'srt' (default) or 'vtt'."
          },
          "language": {
            "type": "string",
            "description": "Optional ISO language code. Auto-detected if omitted."
          },
          "task": {
            "type": "string",
            "enum": [
              "transcribe",
              "translate"
            ],
            "description": "'transcribe' (default) or 'translate' (translates to English)."
          },
          "max_chars_per_line": {
            "type": "number",
            "description": "Max characters per subtitle line. Default 42. Range 16-120."
          }
        },
        "required": [
          "media_url"
        ]
      },
      "outputProperties": {
        "subtitles": {
          "type": "string",
          "description": "Full subtitle file content as a string."
        },
        "format": {
          "type": "string",
          "description": "Echo of the format used."
        },
        "mime_type": {
          "type": "string",
          "description": "MIME type for the subtitle format ('application/x-subrip' or 'text/vtt')."
        },
        "cue_count": {
          "type": "number",
          "description": "Number of subtitle cues generated."
        },
        "duration_seconds": {
          "type": "number",
          "description": "Source media duration."
        },
        "detected_languages": {
          "type": "array",
          "description": "Languages auto-detected in the audio."
        },
        "task": {
          "type": "string",
          "description": "Echo of the task performed."
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL."
        }
      },
      "url": "https://x402.org/v1/video-to-subtitles"
    },
    "video-to-text": {
      "slug": "video-to-text",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "Video transcription / audio transcription via Whisper v3 large. Auto-detects 90+ languages. Translate-to-English mode. Speaker diarization optional. 60 min max.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "transcription",
        "whisper",
        "video",
        "audio",
        "subtitles"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "media_url": {
            "type": "string",
            "description": "Public URL of an audio or video file. Supports mp3, mp4, mpeg, mpga, m4a, wav, webm. Max 60 minutes."
          },
          "language": {
            "type": "string",
            "description": "Optional ISO language code (e.g. 'en', 'fr', 'es'). If omitted, auto-detected."
          },
          "task": {
            "type": "string",
            "enum": [
              "transcribe",
              "translate"
            ],
            "description": "Either 'transcribe' (default) or 'translate' (translates to English)."
          },
          "diarize": {
            "type": "boolean",
            "description": "Whether to identify different speakers. Default false."
          }
        },
        "required": [
          "media_url"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string",
          "description": "Full transcript text"
        },
        "chunks": {
          "type": "array",
          "description": "Time-segmented chunks with timestamps"
        },
        "detected_languages": {
          "type": "array",
          "description": "Languages auto-detected in the audio"
        },
        "duration_seconds": {
          "type": "number",
          "description": "Source media duration in seconds"
        },
        "task": {
          "type": "string",
          "description": "Echo of the task performed"
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL"
        }
      },
      "url": "https://x402.org/v1/video-to-text"
    },
    "video-transcribe": {
      "slug": "video-transcribe",
      "price": "0.10",
      "cluster": "mediakit",
      "description": "Transcribe video / video transcription / video to audio transcription / video-to-text. Whisper v3 large transcription for any video URL. Auto-detects 90+ languages. Translate-to-English mode. 60-min / 500MB max. Speaker diarization optional. Same backend as video-to-text under a clearer slug.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "transcribe",
        "video",
        "audio",
        "whisper",
        "transcription"
      ],
      "aliasOf": "video-to-text",
      "inputSchema": {
        "type": "object",
        "properties": {
          "media_url": {
            "type": "string",
            "description": "Public URL of an audio or video file. Supports mp3, mp4, mpeg, mpga, m4a, wav, webm. Max 60 minutes."
          },
          "language": {
            "type": "string",
            "description": "Optional ISO language code (e.g. 'en', 'fr', 'es'). If omitted, auto-detected."
          },
          "task": {
            "type": "string",
            "enum": [
              "transcribe",
              "translate"
            ],
            "description": "Either 'transcribe' (default) or 'translate' (translates to English)."
          },
          "diarize": {
            "type": "boolean",
            "description": "Whether to identify different speakers. Default false."
          }
        },
        "required": [
          "media_url"
        ]
      },
      "outputProperties": {
        "text": {
          "type": "string",
          "description": "Full transcript text"
        },
        "chunks": {
          "type": "array",
          "description": "Time-segmented chunks with timestamps"
        },
        "detected_languages": {
          "type": "array",
          "description": "Languages auto-detected in the audio"
        },
        "duration_seconds": {
          "type": "number",
          "description": "Source media duration in seconds"
        },
        "task": {
          "type": "string",
          "description": "Echo of the task performed"
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL"
        }
      },
      "url": "https://x402.org/v1/video-transcribe"
    },
    "video-trim": {
      "slug": "video-trim",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "Video trimmer / video cutter / video clip tool. Pass start + end OR start + duration. HH:MM:SS, MM:SS, or seconds. CloudConvert + x264 re-encode.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "video",
        "trim",
        "cut",
        "edit"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "description": "Public URL of a video file."
          },
          "trim_start": {
            "description": "Start time. HH:MM:SS, MM:SS, or seconds."
          },
          "trim_end": {
            "description": "End time. HH:MM:SS, MM:SS, or seconds. Use this OR duration."
          },
          "duration": {
            "description": "Length to keep from trim_start. HH:MM:SS, MM:SS, or seconds."
          },
          "output_format": {
            "type": "string",
            "description": "Output format. Default: same as input."
          }
        },
        "required": [
          "video_url",
          "trim_start"
        ]
      },
      "outputProperties": {
        "video_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "trim_start": {
          "type": "string"
        },
        "trim_end": {
          "type": "string"
        },
        "input_format": {
          "type": "string"
        },
        "output_format": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/video-trim"
    },
    "vin-decode": {
      "slug": "vin-decode",
      "price": "0.005",
      "cluster": "locale",
      "description": "VIN decoder / VIN lookup / decode VIN / vehicle identification number / NHTSA vPIC wrapper. Pass a 17-char VIN; returns make, model, model_year, manufacturer, plant country, body class, vehicle type, fuel type, engine cylinders/displacement/HP, drive type, transmission, GVWR, safety features (ABS, traction control, airbags), and any decode errors. Includes a `valid_checksum` flag (ISO 3779 mod-11 check; reliable for North-American VINs). Backed by NHTSA's free public vPIC API — US Govt public domain, no API key required.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "vin",
        "vehicle",
        "car",
        "automotive",
        "nhtsa",
        "decode"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "vin": {
            "type": "string",
            "description": "17-character VIN. Alphanumeric, no I/O/Q."
          },
          "model_year": {
            "type": [
              "integer",
              "string"
            ],
            "description": "Optional model year hint (YYYY) — helps NHTSA disambiguate the 10th position."
          }
        },
        "required": [
          "vin"
        ]
      },
      "outputProperties": {
        "vin": {
          "type": "string"
        },
        "valid_checksum": {
          "type": "boolean"
        },
        "decode_ok": {
          "type": "boolean"
        },
        "errors": {
          "type": "array"
        },
        "make": {
          "type": [
            "string",
            "null"
          ]
        },
        "model": {
          "type": [
            "string",
            "null"
          ]
        },
        "model_year": {
          "type": [
            "integer",
            "null"
          ]
        },
        "manufacturer": {
          "type": [
            "string",
            "null"
          ]
        },
        "body_class": {
          "type": [
            "string",
            "null"
          ]
        },
        "vehicle_type": {
          "type": [
            "string",
            "null"
          ]
        },
        "fuel_type_primary": {
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "type": "string"
        },
        "attribution": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/vin-decode"
    },
    "visa-requirements": {
      "slug": "visa-requirements",
      "price": "0.005",
      "cluster": "locale",
      "description": "Visa requirements lookup. Passport country + destination → visa-free / e-visa / visa-on-arrival / visa-required + duration. Public CC-BY dataset.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "passport": {
            "type": "string",
            "description": "ISO 2-letter country code."
          },
          "destination": {
            "type": "string",
            "description": "ISO 2-letter country code."
          },
          "full_matrix": {
            "type": "boolean",
            "description": "If true, returns the full row of requirements for the passport country across all destinations instead of a single pair. Default false."
          }
        },
        "required": [
          "passport"
        ]
      },
      "outputProperties": {
        "passport": {
          "type": "string",
          "description": ""
        },
        "destination": {
          "type": "string",
          "description": ""
        },
        "visa_free": {
          "type": "string",
          "description": ""
        },
        "visa_free_days": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/visa-requirements"
    },
    "voice": {
      "slug": "voice",
      "price": "0.05",
      "cluster": "genstudio",
      "description": "Text-to-speech / TTS / voice synthesis. Venice TTS (Kokoro/xAI/ElevenLabs/Orpheus/MiniMax). 30+ voices, MP3/WAV/OPUS/AAC/FLAC.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "VENICE_API_KEY",
        "FAL_KEY"
      ],
      "tags": [
        "tts",
        "speech",
        "audio",
        "voice",
        "ai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Max 4000 chars."
          },
          "voice": {
            "type": "string",
            "description": "Default 'af_sky'."
          },
          "model": {
            "type": "string",
            "description": "Default 'tts-kokoro'. Other options: tts-xai-v1, tts-elevenlabs-turbo-v2-5, tts-orpheus, etc."
          },
          "speed": {
            "type": "number",
            "description": "0.25-4. Default 1."
          },
          "format": {
            "type": "string",
            "description": "mp3 (default), wav, opus, aac, flac."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputProperties": {
        "audio_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "content_type": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "voice": {
          "type": "string"
        },
        "model": {
          "type": "string"
        },
        "speed": {
          "type": "number"
        },
        "input_chars": {
          "type": "number"
        }
      },
      "url": "https://x402.org/v1/voice"
    },
    "wallet-label": {
      "slug": "wallet-label",
      "price": "0.005",
      "cluster": "edge-market",
      "description": "Wallet label / address tagger / known-address lookup / EOA-vs-contract check / deployer tracer. Best-effort labelling for any EVM address against an in-handler dictionary of well-known CEX hot/cold wallets, DEX routers, NFT marketplaces, popular MEV bots, bridges, and stablecoins. Etherscan v2 'getcontractcreation' adds is_contract + deployer for unknown contracts. Returns label, category, and the source of the match.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "0x-prefixed 20-byte EVM address."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'ethereum'."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputProperties": {
        "address": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "is_contract": {
          "type": "string",
          "description": ""
        },
        "deployer": {
          "type": "string",
          "description": ""
        },
        "creation_tx": {
          "type": "string",
          "description": ""
        },
        "label": {
          "type": "string",
          "description": ""
        },
        "category": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/wallet-label"
    },
    "wallet-pnl": {
      "slug": "wallet-pnl",
      "price": "0.05",
      "cluster": "edge-market",
      "description": "Wallet token P&L / FIFO cost basis / realized + unrealized profit / EVM portfolio analytics. For any (wallet, ERC-20, chain) triple, pulls all transfers from Etherscan v2, prices each one at the historical USD spot via CoinGecko, runs FIFO accounting and reports cost basis, realized gain, unrealized gain, current balance, and tx count. Capped at the most recent 500 transfers.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "wallet": {
            "type": "string",
            "description": "0x-prefixed 20-byte wallet address."
          },
          "token_address": {
            "type": "string",
            "description": "0x-prefixed 20-byte ERC-20 contract."
          },
          "chain": {
            "type": "string",
            "enum": [
              "base",
              "ethereum",
              "polygon",
              "arbitrum",
              "optimism"
            ],
            "description": "EVM chain. Default 'ethereum'."
          }
        },
        "required": [
          "wallet",
          "token_address"
        ]
      },
      "outputProperties": {
        "wallet": {
          "type": "string",
          "description": ""
        },
        "token": {
          "type": "string",
          "description": ""
        },
        "chain": {
          "type": "string",
          "description": ""
        },
        "symbol": {
          "type": "string",
          "description": ""
        },
        "decimals": {
          "type": "string",
          "description": ""
        },
        "tx_count": {
          "type": "string",
          "description": ""
        },
        "transfers_in": {
          "type": "string",
          "description": ""
        },
        "transfers_out": {
          "type": "string",
          "description": ""
        },
        "current_balance": {
          "type": "string",
          "description": ""
        },
        "current_price_usd": {
          "type": "string",
          "description": ""
        },
        "cost_basis_usd": {
          "type": "string",
          "description": ""
        },
        "realized_pnl_usd": {
          "type": "string",
          "description": ""
        },
        "unrealized_pnl_usd": {
          "type": "string",
          "description": ""
        },
        "total_pnl_usd": {
          "type": "string",
          "description": ""
        },
        "capped_at": {
          "type": "string",
          "description": ""
        },
        "coingecko_id": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/wallet-pnl"
    },
    "watermark": {
      "slug": "watermark",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "PDF / image / video watermarking — text or image overlay. CloudConvert engine. Configurable position, opacity, font, rotation, margin. Works on PDFs, PNG/JPG/GIF, MP4/MOV/WEBM.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "watermark",
        "pdf",
        "image",
        "video",
        "branding"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "file_url": {
            "type": "string",
            "description": "Public URL of the input file (PDF, PNG, JPG, GIF, BMP, TIFF, WEBP, MP4, MOV, WEBM, MKV, AVI, etc.). The URL extension is used to detect format."
          },
          "text": {
            "type": "string",
            "description": "Watermark text. Provide either text OR image_url (not both)."
          },
          "image_url": {
            "type": "string",
            "description": "Public URL of an image to use as the watermark (use a transparent PNG)."
          },
          "font_size": {
            "type": "number",
            "description": "Font size in points (text watermark). Default 40. Range 6-400."
          },
          "font_color": {
            "type": "string",
            "description": "Font color as 6-digit hex (e.g. '#FF0000'). Default '#000000'."
          },
          "opacity": {
            "type": "number",
            "description": "Opacity 0-100. 100 = fully visible."
          },
          "rotation": {
            "type": "number",
            "description": "Rotation in degrees (-360 to 360)."
          },
          "position_vertical": {
            "type": "string",
            "enum": [
              "top",
              "center",
              "bottom"
            ],
            "description": "'top', 'center' (default), or 'bottom'."
          },
          "position_horizontal": {
            "type": "string",
            "enum": [
              "left",
              "center",
              "right"
            ],
            "description": "'left', 'center' (default), or 'right'."
          }
        },
        "required": [
          "file_url"
        ]
      },
      "outputProperties": {
        "output_url": {
          "type": "string",
          "description": "Signed CloudConvert URL of the watermarked file (24h expiry)."
        },
        "file_size_bytes": {
          "type": "number",
          "description": "Output file size in bytes."
        },
        "input_format": {
          "type": "string",
          "description": "Detected input format (pdf, png, mp4, etc.)."
        },
        "watermark_type": {
          "type": "string",
          "description": "'text' or 'image'."
        },
        "source_url": {
          "type": "string",
          "description": "Echo of the input URL."
        },
        "job_id": {
          "type": "string",
          "description": "CloudConvert job id."
        }
      },
      "url": "https://x402.org/v1/watermark"
    },
    "watermark-pdf": {
      "slug": "watermark-pdf",
      "price": "0.02",
      "cluster": "mediakit",
      "description": "Add watermark to PDF. Text or image overlay on PDFs, PNG / JPG / GIF, or MP4 / MOV / WEBM with configurable position, opacity, font, rotation, and margin. Same backend as watermark / pdf-watermark under a clearer search slug. CloudConvert engine.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "watermark",
      "inputSchema": {
        "type": "object",
        "properties": {
          "file_url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "image_url": {
            "type": "string"
          },
          "font_size": {
            "type": "number"
          },
          "font_color": {
            "type": "string"
          },
          "opacity": {
            "type": "number"
          },
          "rotation": {
            "type": "number"
          },
          "position_vertical": {
            "type": "string",
            "enum": [
              "top",
              "center",
              "bottom"
            ]
          },
          "position_horizontal": {
            "type": "string",
            "enum": [
              "left",
              "center",
              "right"
            ]
          }
        },
        "required": [
          "file_url"
        ]
      },
      "outputProperties": {
        "output_url": {
          "type": "string",
          "description": ""
        },
        "watermark_type": {
          "type": "string",
          "description": ""
        },
        "input_format": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/watermark-pdf"
    },
    "weather": {
      "slug": "weather",
      "price": "0.005",
      "cluster": "locale",
      "description": "Weather API / weather forecast / current weather / hourly forecast. Returns current conditions plus 1-7 day daily forecast and optional hourly forecast for any latitude/longitude. Daily includes temp max/min, precipitation, sunrise/sunset, UV index. Open-Meteo backend.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "weather-forecast",
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Decimal degrees, range [-90, 90]. Positive north."
          },
          "longitude": {
            "type": "number",
            "description": "Decimal degrees, range [-180, 180]. Positive east."
          },
          "units": {
            "type": "string",
            "enum": [
              "metric",
              "imperial"
            ],
            "description": "'metric' (°C, km/h, mm) or 'imperial' (°F, mph, inch). Default 'metric'."
          },
          "forecast_days": {
            "type": "number",
            "description": "Number of forecast days, 1-7. Default 3."
          },
          "hourly": {
            "type": "boolean",
            "description": "If true, include hourly temperature, precipitation, and weather code arrays. Default false."
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "outputProperties": {
        "location": {
          "type": "string",
          "description": ""
        },
        "current": {
          "type": "string",
          "description": ""
        },
        "daily": {
          "type": "string",
          "description": ""
        },
        "units": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/weather"
    },
    "weather-forecast": {
      "slug": "weather-forecast",
      "price": "0.005",
      "cluster": "locale",
      "description": "Weather forecast / hourly forecast / current weather / temperature / precipitation / UV index / sunrise-sunset / Open-Meteo / weather API. Returns current conditions, a 1-7 day daily forecast, and an optional hourly forecast for any latitude/longitude. Daily includes temp max/min, precipitation total + probability, sunrise/sunset, max UV index, and WMO weather code. Current includes temperature, apparent temperature, humidity %, wind speed/direction, precipitation, weather code, and is_day. Metric or imperial units. Wraps the public Open-Meteo API — no auth, commercial-OK, CC-BY 4.0.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Decimal degrees, range [-90, 90]. Positive north."
          },
          "longitude": {
            "type": "number",
            "description": "Decimal degrees, range [-180, 180]. Positive east."
          },
          "units": {
            "type": "string",
            "enum": [
              "metric",
              "imperial"
            ],
            "description": "'metric' (°C, km/h, mm) or 'imperial' (°F, mph, inch). Default 'metric'."
          },
          "forecast_days": {
            "type": "number",
            "description": "Number of forecast days, 1-7. Default 3."
          },
          "hourly": {
            "type": "boolean",
            "description": "If true, include hourly temperature, precipitation, and weather code arrays. Default false."
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "outputProperties": {
        "location": {
          "type": "string",
          "description": ""
        },
        "current": {
          "type": "string",
          "description": ""
        },
        "daily": {
          "type": "string",
          "description": ""
        },
        "units": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/weather-forecast"
    },
    "webpage-diff": {
      "slug": "webpage-diff",
      "price": "0.04",
      "cluster": "web-probe",
      "description": "Webpage change detection / website monitor / content diff. Cleans HTML to text + SHA-256 hash. Pass previous hash/text to get added/removed line lists. Price + policy + status-page monitoring.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "diff",
        "monitor",
        "change-detection",
        "scrape",
        "html"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Page URL to fetch (http or https). Server follows redirects and reports the final_url."
          },
          "previous_hash": {
            "type": "string",
            "description": "SHA-256 hex from a previous call."
          },
          "previous_text": {
            "type": "string",
            "description": "Previous cleaned text. Triggers a line diff."
          },
          "selector": {
            "type": "string",
            "description": "Optional CSS selector to limit content scope."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "url": {
          "type": "string"
        },
        "final_url": {
          "type": "string"
        },
        "status_code": {
          "type": "number"
        },
        "current_text": {
          "type": "string"
        },
        "current_hash": {
          "type": "string"
        },
        "char_count": {
          "type": "number"
        },
        "selector": {
          "type": "string"
        },
        "changed": {
          "type": "boolean"
        },
        "diff": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/webpage-diff"
    },
    "website-screenshot": {
      "slug": "website-screenshot",
      "price": "0.04",
      "cluster": "web-probe",
      "description": "URL to PNG / JPG / website screenshot tool. Configurable viewport, retina, crop/fit, transparent BG, JPG quality, JS wait conditions. CloudConvert capture.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [
        "CLOUD_CONVERT_API_KEY"
      ],
      "tags": [
        "screenshot",
        "url",
        "png",
        "jpg",
        "render",
        "capture"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public http/https URL."
          },
          "format": {
            "type": "string",
            "enum": [
              "png",
              "jpg"
            ],
            "description": "'png' (default) or 'jpg'."
          },
          "screen_width": {
            "type": "number",
            "description": "Viewport width 320-3840. Default 1440."
          },
          "screen_height": {
            "type": "number",
            "description": "Viewport height 240-4320."
          },
          "device_scale_factor": {
            "type": "number",
            "description": "1-4 (retina). Default 1."
          },
          "width": {
            "type": "number",
            "description": "Final image width 1-8000."
          },
          "height": {
            "type": "number",
            "description": "Final image height 1-8000."
          },
          "fit": {
            "type": "string",
            "description": "'max' (default), 'crop', or 'scale'."
          },
          "quality": {
            "type": "number",
            "description": "JPG quality 1-100."
          },
          "transparent_background": {
            "type": "boolean",
            "description": "PNG only. Default false."
          }
        },
        "required": [
          "url"
        ]
      },
      "outputProperties": {
        "image_url": {
          "type": "string"
        },
        "file_size_bytes": {
          "type": "number"
        },
        "format": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "job_id": {
          "type": "string"
        }
      },
      "url": "https://x402.org/v1/website-screenshot"
    },
    "whois": {
      "slug": "whois",
      "price": "0.02",
      "cluster": "web-probe",
      "description": "Domain WHOIS / RDAP lookup. Registration, age, expiration, registrar, contacts, nameservers, DNSSEC, status flags.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "whois",
        "rdap",
        "domain",
        "dns",
        "security"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Apex domain to look up (e.g. 'example.com'). Subdomains are stripped to the registrable domain."
          },
          "include_certificates": {
            "type": "boolean",
            "description": "If true, attaches a crt.sh certificate-transparency summary. Default false."
          }
        },
        "required": [
          "domain"
        ]
      },
      "outputProperties": {
        "domain": {
          "type": "string"
        },
        "rdap_server": {
          "type": "string"
        },
        "registered_date": {
          "type": "string"
        },
        "expiration_date": {
          "type": "string"
        },
        "age_days": {
          "type": "number"
        },
        "days_until_expiry": {
          "type": "number"
        },
        "registrar": {
          "type": "object"
        },
        "contacts": {
          "type": "object"
        },
        "nameservers": {
          "type": "array"
        },
        "dnssec_signed": {
          "type": "boolean"
        },
        "statuses": {
          "type": "array"
        },
        "flags": {
          "type": "array"
        },
        "cert_summary": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/whois"
    },
    "whois-lookup": {
      "slug": "whois-lookup",
      "price": "0.02",
      "cluster": "web-probe",
      "description": "WHOIS / RDAP domain lookup. Registration date, age, expiration, registrar, contacts, nameservers, DNSSEC, status flags, transfer history. Optional certificate-transparency summary.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "whois",
        "rdap",
        "domain",
        "dns",
        "security"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Apex domain to look up (e.g. 'example.com'). Subdomains are stripped to the registrable domain before query."
          },
          "include_certificates": {
            "type": "boolean",
            "description": "If true, fetch a crt.sh certificate-transparency summary (issuer counts, first/last seen, total certs). Default false."
          }
        },
        "required": [
          "domain"
        ]
      },
      "outputProperties": {
        "domain": {
          "type": "string"
        },
        "rdap_server": {
          "type": "string"
        },
        "registered_date": {
          "type": "string"
        },
        "expiration_date": {
          "type": "string"
        },
        "age_days": {
          "type": "number"
        },
        "days_until_expiry": {
          "type": "number"
        },
        "registrar": {
          "type": "object"
        },
        "contacts": {
          "type": "object"
        },
        "nameservers": {
          "type": "array"
        },
        "dnssec_signed": {
          "type": "boolean"
        },
        "statuses": {
          "type": "array"
        },
        "flags": {
          "type": "array"
        },
        "cert_summary": {
          "type": "object"
        }
      },
      "url": "https://x402.org/v1/whois-lookup"
    },
    "wikipedia": {
      "slug": "wikipedia",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "Wikipedia API / encyclopedia lookup. Title, summary, image, sections, Wikidata id, optional 25k-char extract. 300+ languages.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "wikipedia",
        "knowledge",
        "lookup",
        "encyclopedia"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search term or article title (e.g. 'Albert Einstein', 'mitochondria'). Resolved via MediaWiki search to the best-matching page."
          },
          "language": {
            "type": "string",
            "description": "Wiki language code (e.g. 'en', 'de', 'ja', 'es'). Default 'en'."
          },
          "full_text": {
            "type": "boolean",
            "description": "If true, include a plain-text extract of the full article body (truncated to ~25k chars). Default false."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "title": {
          "type": "string"
        },
        "canonical_url": {
          "type": "string"
        },
        "page_id": {
          "type": "string"
        },
        "wikidata_item": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "thumbnail_url": {
          "type": "string"
        },
        "image_url": {
          "type": "string"
        },
        "coordinates": {
          "type": "object"
        },
        "sections": {
          "type": "array"
        },
        "full_text": {
          "type": "string"
        },
        "full_text_truncated": {
          "type": "boolean"
        }
      },
      "url": "https://x402.org/v1/wikipedia"
    },
    "wikipedia-lookup": {
      "slug": "wikipedia-lookup",
      "price": "0.005",
      "cluster": "web-probe",
      "description": "Wikipedia API / encyclopedia lookup / structured article fetch. Title, summary, image, sections, Wikidata id, optional 25k-char extract. 300+ languages.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [
        "wikipedia",
        "knowledge",
        "lookup",
        "encyclopedia"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search term or page title (e.g. 'Albert Einstein', 'mitochondria'). Resolved via MediaWiki search to the best-matching article."
          },
          "language": {
            "type": "string",
            "description": "Wiki language code (e.g. 'en', 'de', 'ja', 'es'). Default 'en'. Routes to <lang>.wikipedia.org."
          },
          "full_text": {
            "type": "boolean",
            "description": "If true, include a plain-text extract of the full article body (truncated to ~25k chars). Default false (summary only)."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputProperties": {
        "title": {
          "type": "string"
        },
        "canonical_url": {
          "type": "string"
        },
        "page_id": {
          "type": "string"
        },
        "wikidata_item": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "thumbnail_url": {
          "type": "string"
        },
        "image_url": {
          "type": "string"
        },
        "coordinates": {
          "type": "object"
        },
        "sections": {
          "type": "array"
        },
        "full_text": {
          "type": "string"
        },
        "full_text_truncated": {
          "type": "boolean"
        }
      },
      "url": "https://x402.org/v1/wikipedia-lookup"
    },
    "xbrl-financials": {
      "slug": "xbrl-financials",
      "price": "0.05",
      "cluster": "edge-finance",
      "description": "SEC XBRL financials. Returns structured financial line items (revenue, net income, EPS, total assets, cash, etc.) for a US-listed ticker. Federal public XBRL data — Bloomberg-killer for fundamentals.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "US-listed ticker (e.g. 'AAPL', 'MSFT'). Either ticker or cik is required."
          },
          "cik": {
            "type": "string",
            "description": "SEC CIK (zero-padded or numeric, e.g. '0000320193'). Use when ticker is ambiguous or unavailable."
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Aliases of financial metrics to return, e.g. ['revenue', 'net_income', 'eps_diluted', 'total_assets', 'cash']. See available_metric_aliases in response. Default: a curated set."
          },
          "unit": {
            "type": "string",
            "enum": [
              "USD",
              "USD/shares",
              "shares",
              "any"
            ],
            "description": "Filter values to one unit. Default 'any'."
          },
          "limit_per_metric": {
            "type": "number",
            "description": "Max datapoints returned per metric. 1-50. Default 10 (most-recent-first)."
          },
          "fy_only": {
            "type": "boolean",
            "description": "If true, only fiscal-year (10-K) values are returned, skipping quarterly 10-Q data. Default false."
          }
        }
      },
      "outputProperties": {
        "ticker": {
          "type": "string",
          "description": ""
        },
        "company_name": {
          "type": "string",
          "description": ""
        },
        "series": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/xbrl-financials"
    },
    "xlsx-to-csv": {
      "slug": "xlsx-to-csv",
      "price": "0.005",
      "cluster": "mediakit",
      "description": "Excel to CSV / XLSX to CSV / Numbers to CSV / spreadsheet to CSV. Convert any sheet of an .xlsx, .xlsm, .xls, or .ods workbook to CSV. Sheet selection, encoding, quote style. CloudConvert.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "aliasOf": "excel-to-csv",
      "inputSchema": {
        "type": "object",
        "properties": {
          "xlsx_url": {
            "type": "string"
          },
          "sheet": {
            "type": "string"
          },
          "format": {
            "type": "string",
            "enum": [
              "csv",
              "tsv",
              "json"
            ]
          },
          "include_all_sheets": {
            "type": "boolean"
          }
        },
        "required": [
          "xlsx_url"
        ]
      },
      "outputProperties": {
        "sheet_count": {
          "type": "string",
          "description": ""
        },
        "total_rows": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/xlsx-to-csv"
    },
    "xml-to-word": {
      "slug": "xml-to-word",
      "price": "0.05",
      "cluster": "mediakit",
      "description": "XML → Microsoft Word (DOCX) converter via CloudConvert. Demand-intel: 43 unmet signals.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "xml_url": {
            "type": "string"
          },
          "xml": {
            "type": "string"
          }
        }
      },
      "outputProperties": {
        "docx_url": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/xml-to-word"
    },
    "youtube-transcript": {
      "slug": "youtube-transcript",
      "price": "0.01",
      "cluster": "mediakit",
      "description": "YouTube transcript / closed-caption fetcher / video subtitles puller / auto-generated CC reader. Pulls YouTube auto-generated or manual captions for any video and returns the full text plus per-segment {start, duration, text}. Optional language pick. Backed by Supadata's transcript pipeline (server-side; no caller key required). If no transcript is available for the video, returns a 404 with a clear error.",
      "methods": [
        "POST"
      ],
      "requiredEnvVars": [],
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "video_id_or_url": {
            "type": "string",
            "description": "YouTube video ID (11-char) or full URL (youtube.com/watch?v=…, youtu.be/…, /embed/…, /shorts/…)."
          },
          "language": {
            "type": "string",
            "description": "Preferred caption language code (e.g. 'en', 'es', 'ja'). Default: pick the first available."
          },
          "include_chapters": {
            "type": "boolean",
            "description": "Parse chapter timestamps from the video description. Default false."
          }
        },
        "required": [
          "video_id_or_url"
        ]
      },
      "outputProperties": {
        "video_id": {
          "type": "string",
          "description": ""
        },
        "title": {
          "type": "string",
          "description": ""
        },
        "channel": {
          "type": "string",
          "description": ""
        },
        "duration_seconds": {
          "type": "string",
          "description": ""
        },
        "language": {
          "type": "string",
          "description": ""
        },
        "transcript": {
          "type": "string",
          "description": ""
        },
        "segments": {
          "type": "string",
          "description": ""
        },
        "chapters": {
          "type": "string",
          "description": ""
        },
        "source": {
          "type": "string",
          "description": ""
        }
      },
      "url": "https://x402.org/v1/youtube-transcript"
    }
  }
}