openapi: 3.0.1 info: title: Vibe Springs API description: 'Pay-per-use AI utilities: image conversion, PDF generation, CSV processing, and historical weather data. All endpoints require x402 USDC payments on Base mainnet. No API keys needed.' version: v2 contact: name: Vibe Springs Support email: support@vibesprings.net url: https://vibesprings.net/for-agents x-guidance: 'Vibe Springs: 50 pay-per-use AI endpoints for autonomous agents via x402 micropayments on Base. Categories: (1) Weather & Environmental Intelligence — historical weather, forecasts, air quality, marine, earthquakes, floods, solar/UV, and weather-driven delay-risk. (2) Finance — forex rates, currency conversion, rate history, crypto prices, market data, public holidays. (3) Blockchain & On-chain — gas fees, wallet profiling, DeFi yield scanning, price oracles (BTC, ETH, SOL, Base gas), address risk scoring. (4) Mock Social Intelligence — deterministic synthetic social feeds and scenario streams for agent testing, not live social data. (5) Processing Tools — PDF generation, image conversion, CSV cleaning, email alerts. (6) Composite Intelligence — market-pulse (crypto+FX+gas+DeFi), travel-brief (forecast+air+holidays+FX), portfolio-brief (wallet+risk+yields+gas), risk-report (6-signal due diligence). (7) Workflows — location-report, invoice-fx, csv-to-pdf. (8) Agent Infrastructure — wallet status checker, API health scanner, service discovery proxy, API AEO visibility auditor. (9) x402 Market Intelligence — listing authenticity and health audits, category trends, competitor analysis, and a historical archive of the Bazaar itself that the Coinbase discovery API does not retain. Pricing: $0.001-$25.00 USDC per call. No API keys or accounts needed — just x402 wallet signatures on Base mainnet (eip155:8453).' servers: - url: https://vibesprings.net paths: /api/convert-image: post: operationId: convertImage summary: Convert, resize, and optimize images. Supports JPG, PNG, WebP, AVIF. requestBody: required: true content: multipart/form-data: schema: type: object required: - file properties: file: type: string format: binary description: Image file (max 10MB) format: type: string enum: - webp - jpg - png - avif default: webp width: type: integer description: Resize width in pixels height: type: integer description: Resize height in pixels quality: type: integer minimum: 1 maximum: 100 default: 80 preset: type: string enum: - nft-ready - web-optimized responses: '200': description: Converted image binary content: image/*: schema: type: string format: binary '400': description: Invalid input '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.05' protocols: - x402: {} security: - x402: [] /api/generate-pdf: post: operationId: generatePdf summary: Generate professional PDFs from structured JSON data. requestBody: required: true content: application/json: schema: type: object properties: template: type: string enum: - invoice - resume - report - contract - receipt - document default: document data: type: object description: Template-specific data options: type: object properties: pageSize: type: string enum: - A4 - Letter watermark: type: string responses: '200': description: PDF binary content: application/pdf: schema: type: string format: binary '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.10' protocols: - x402: {} security: - x402: [] /api/process-csv: post: operationId: processCsv summary: Clean, filter, and analyze CSV files. Output as JSON, CSV, or PDF summary. requestBody: required: true content: multipart/form-data: schema: type: object required: - file properties: file: type: string format: binary description: CSV file (max 10MB) instructions: type: string description: JSON string with processing instructions responses: '200': description: Processed data content: application/json: schema: $ref: '#/components/schemas/CsvResult' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.03' protocols: - x402: {} security: - x402: [] /api/weather: get: operationId: getHistoricalWeather summary: Get historical weather data for any location and date range. parameters: - name: location in: query required: true schema: type: string description: City name or location - name: start_date in: query required: true schema: type: string format: date description: Start date (YYYY-MM-DD, must be in the past) - name: end_date in: query required: true schema: type: string format: date description: End date (YYYY-MM-DD, must be yesterday or earlier) responses: '200': description: Historical weather data content: application/json: schema: $ref: '#/components/schemas/WeatherResult' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/forecast: get: operationId: getForecast summary: Up to 16-day weather forecast for any location. parameters: - name: location in: query required: true schema: type: string - name: days in: query required: false schema: type: integer responses: '200': description: Forecast data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/delay-risk: get: operationId: getDelayRisk summary: Weather-driven scheduling-disruption risk score for US locations. parameters: - name: lat in: query required: true schema: type: number - name: lon in: query required: true schema: type: number - name: profile in: query required: false schema: type: string enum: - ground_work - outdoor_event - logistics - aerial - name: days in: query required: false schema: type: integer - name: soil in: query required: false schema: type: string - name: hydrologicGroup in: query required: false schema: type: string - name: drainageClass in: query required: false schema: type: string - name: gradient in: query required: false schema: type: string enum: - flat - moderate - steep - name: exposure in: query required: false schema: type: string enum: - open - shaded responses: '200': description: Delay risk analysis content: application/json: schema: type: object '400': description: Invalid input or outside US coverage (OUT_OF_COVERAGE) '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.25' protocols: - x402: {} security: - x402: [] /api/demo/delay-risk: get: operationId: getDelayRiskDemo summary: 'Demo: weather-driven delay-risk score for 5 fixed US locations.' parameters: - name: location in: query required: false schema: type: string enum: - nova - houston - seattle - denver - miami - name: profile in: query required: false schema: type: string enum: - ground_work - outdoor_event - logistics - aerial - name: soil in: query required: false schema: type: string responses: '200': description: Demo delay risk analysis content: application/json: schema: type: object '400': description: Invalid input '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/air-quality: get: operationId: getAirQuality summary: Current and forecast air quality for any location. parameters: - name: location in: query required: true schema: type: string - name: days in: query required: false schema: type: integer responses: '200': description: Air quality data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/marine: get: operationId: getMarineWeather summary: Marine and ocean conditions for coastal locations. parameters: - name: location in: query required: true schema: type: string - name: days in: query required: false schema: type: integer responses: '200': description: Marine weather data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/earthquakes: get: operationId: getEarthquakes summary: Recent earthquakes near a location. parameters: - name: location in: query required: true schema: type: string responses: '200': description: Earthquake data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/flood: get: operationId: getFlood summary: Flood risk and river discharge data. parameters: - name: location in: query required: true schema: type: string - name: days in: query required: false schema: type: integer responses: '200': description: Flood data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/solar: get: operationId: getSolar summary: Solar radiation and energy forecast. parameters: - name: location in: query required: true schema: type: string - name: days in: query required: false schema: type: integer responses: '200': description: Solar data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/exchange: get: operationId: getExchangeRates summary: Real-time and historical fiat exchange rates. parameters: - name: base in: query required: false schema: type: string - name: target in: query required: false schema: type: string responses: '200': description: Exchange rate data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/holidays: get: operationId: getHolidays summary: Public holidays for any country. parameters: - name: country in: query required: true schema: type: string - name: year in: query required: false schema: type: integer responses: '200': description: Holiday data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/exchange/convert: get: operationId: convertCurrency summary: Convert an amount between any two fiat currencies with live ECB rates. parameters: - name: from in: query required: true schema: type: string description: Source currency ISO code (e.g. GBP, USD) - name: to in: query required: true schema: type: string description: Target currency ISO code (e.g. JPY, EUR) - name: amount in: query required: false schema: type: string description: Amount to convert (default 1) responses: '200': description: Conversion result with rate and inverse rate content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/exchange/history: get: operationId: getExchangeHistory summary: Daily exchange rate time series for any currency pair, up to 365 days. parameters: - name: base in: query required: false schema: type: string description: Base currency ISO code (default USD) - name: to in: query required: false schema: type: string description: Target currency ISO code (default EUR) - name: start in: query required: true schema: type: string description: Start date YYYY-MM-DD - name: end in: query required: true schema: type: string description: End date YYYY-MM-DD responses: '200': description: Time series data with summary statistics content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.005' protocols: - x402: {} security: - x402: [] /api/crypto: get: operationId: getCryptoPrices summary: Live cryptocurrency prices, market caps, volume, and changes for top tokens. parameters: - name: ids in: query required: false schema: type: string description: Comma-separated CoinGecko IDs (e.g. bitcoin,ethereum). Omit for top coins. - name: vs in: query required: false schema: type: string description: Quote currency (usd, eur, gbp, jpy, btc, eth). Default usd. - name: limit in: query required: false schema: type: integer description: Max results 1-100 (default 25) responses: '200': description: Cryptocurrency market data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.005' protocols: - x402: {} security: - x402: [] /api/workflow/invoice-fx: post: operationId: generateInvoiceFX summary: Multi-currency invoice workflow. Converts line items to target currency and generates PDF. requestBody: required: true content: application/json: schema: type: object required: - from - to - targetCurrency - items properties: invoiceNumber: type: string from: type: object properties: name: type: string address: type: string email: type: string to: type: object properties: name: type: string address: type: string email: type: string targetCurrency: type: string items: type: array items: type: object properties: description: type: string quantity: type: number unitPrice: type: number currency: type: string notes: type: string dueDate: type: string responses: '200': description: Generated PDF invoice content: application/pdf: schema: type: string format: binary '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.15' protocols: - x402: {} security: - x402: [] /api/alert: post: operationId: sendAlert summary: Dispatch secure, PII-scrubbed email alerts to human operators. requestBody: required: true content: application/json: schema: type: object properties: to: type: string description: The recipient email address. format: email subject: type: string description: The subject of the alert email (maximum 120 characters). maxLength: 120 body: type: string description: The body of the notification (maximum 2000 characters). maxLength: 2000 required: - to - subject - body responses: '200': description: Alert successfully scrubbed and sent content: application/json: schema: type: object properties: status: type: string message: type: string recipient: type: string processingTime: type: string '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.01' protocols: - x402: {} security: - x402: [] /api/market-data: get: operationId: getMarketData summary: Unified real-time stock and crypto market price feed. parameters: - name: symbols in: query required: false schema: type: string responses: '200': description: Standardized price data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/address-risk: get: operationId: getAddressRisk summary: On-chain address risk scoring and intelligence. parameters: - name: address in: query required: true schema: type: string description: Ethereum address (0x-prefixed, 42 characters) to analyze. - name: network in: query required: false schema: type: string enum: - ethereum - base - base-sepolia default: ethereum description: 'Target network to query (default: ethereum)' responses: '200': description: Risk score and intelligence content: application/json: schema: $ref: '#/components/schemas/RiskResult' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.03' protocols: - x402: {} security: - x402: [] /api/wallet-intel: get: operationId: getWalletIntel summary: Comprehensive wallet intelligence and profiling. parameters: - name: address in: query required: true schema: type: string description: The Ethereum address to profile (0x-prefixed, 42 characters). Supports EOAs and smart contracts. - name: chain in: query required: false schema: type: string default: base description: 'Target chain: ethereum, base, or sepolia (default: base)' responses: '200': description: Wallet profile and token balances content: application/json: schema: $ref: '#/components/schemas/WalletIntelResult' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.10' protocols: - x402: {} security: - x402: [] /api/defi-yields: get: operationId: getDefiYields summary: Aggregated DeFi yield scanner powered by DefiLlama. parameters: - name: token in: query required: false schema: type: string default: USDC description: 'Token symbol to filter by (e.g. ''USDC'', ''ETH'', ''WBTC''). Default: ''USDC''.' - name: chain in: query required: false schema: type: string description: Chain to filter by (e.g. 'base', 'ethereum', 'arbitrum', 'optimism'). Omit for all chains. - name: min_tvl in: query required: false schema: type: string default: '100000' description: 'Minimum TVL in USD (e.g. ''100000''). Default: 100000.' - name: limit in: query required: false schema: type: string default: '20' description: 'Max results to return (1-50). Default: 20.' - name: sort in: query required: false schema: type: string default: apy description: 'Sort by: ''apy'', ''tvl'', or ''protocol''. Default: ''apy''.' responses: '200': description: List of yield opportunities content: application/json: schema: $ref: '#/components/schemas/DefiYieldsResponse' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.06' protocols: - x402: {} security: - x402: [] /api/gas: get: operationId: getGasPrice summary: Real-time gas price oracle for multiple EVM chains. parameters: - name: chain in: query required: false schema: type: string default: base description: 'Network to query gas prices for. Options: base, ethereum, arbitrum, optimism. Default: base.' responses: '200': description: Gas price estimate and transaction cost estimates content: application/json: schema: $ref: '#/components/schemas/GasOracleResponse' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.001' protocols: - x402: {} security: - x402: [] /api/market-pulse: get: operationId: getMarketPulse summary: Real-time market snapshot (crypto, forex, DeFi yields, gas). parameters: - name: cryptos in: query required: false schema: type: string default: bitcoin,ethereum,solana description: Comma-separated CoinGecko token IDs. - name: base in: query required: false schema: type: string default: USD description: Base fiat currency for FX rates. responses: '200': description: Market snapshot data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.05' protocols: - x402: {} security: - x402: [] /api/travel-brief: get: operationId: getTravelBrief summary: Destination intelligence (forecast, air quality, holidays, FX). parameters: - name: location in: query required: true schema: type: string description: City or place name. - name: country in: query required: false schema: type: string description: ISO-3166-1 alpha-2 country code override. - name: currency in: query required: false schema: type: string default: USD description: Target currency for FX rates. responses: '200': description: Travel brief data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.05' protocols: - x402: {} security: - x402: [] /api/portfolio-brief: get: operationId: getPortfolioBrief summary: DeFi portfolio snapshot (balance, tokens, risk, yields, gas). parameters: - name: address in: query required: true schema: type: string description: Ethereum wallet address to profile. - name: chain in: query required: false schema: type: string default: base description: 'Target chain: base, ethereum, or sepolia.' responses: '200': description: Portfolio snapshot data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.10' protocols: - x402: {} security: - x402: [] /api/risk-report: get: operationId: getRiskReport summary: On-chain wallet risk assessment and profiling. parameters: - name: address in: query required: true schema: type: string description: Ethereum address to analyze. - name: chain in: query required: false schema: type: string default: base description: 'Target chain: base, ethereum, or sepolia.' responses: '200': description: Risk report data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.10' protocols: - x402: {} security: - x402: [] /api/workflow/location-report: get: operationId: getLocationReport summary: Location intelligence report (forecast, air, flood, quakes, marine, solar). parameters: - name: location in: query required: true schema: type: string description: City or region name. - name: forecast_days in: query required: false schema: type: integer default: 3 description: Days of forecast data (1-7). responses: '200': description: Comprehensive location data content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.05' protocols: - x402: {} security: - x402: [] /api/workflow/csv-to-pdf: post: operationId: csvToPdf summary: Convert uploaded CSV data to professional PDF report. requestBody: required: true content: multipart/form-data: schema: type: object properties: file: type: string format: binary description: The CSV file. instructions: type: string description: JSON string containing processing/styling instructions. required: - file responses: '200': description: PDF report file content: application/pdf: schema: type: string format: binary '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.15' protocols: - x402: {} security: - x402: [] /api/price/btc-usd: get: operationId: getPricebtcusd summary: BTC/USD Price Feed Oracle description: Real-time BTC/USD price feed oracle. parameters: [] responses: '200': description: Successful price retrieval content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/price/eth-usd: get: operationId: getPriceethusd summary: ETH/USD Price Feed Oracle description: Real-time ETH/USD price feed oracle. parameters: [] responses: '200': description: Successful price retrieval content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/price/sol-usd: get: operationId: getPricesolusd summary: SOL/USD Price Feed Oracle description: Real-time SOL/USD price feed oracle. parameters: [] responses: '200': description: Successful price retrieval content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.002' protocols: - x402: {} security: - x402: [] /api/price/base-gas: get: operationId: getPricebasegas summary: Base Gas Price Oracle description: Real-time Base network gas price oracle. parameters: [] responses: '200': description: Successful price retrieval content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.001' protocols: - x402: {} security: - x402: [] /api/agent/status: get: operationId: getAgentStatus summary: Agent Status Check API description: Agent wallet status and readiness checker. Input any wallet address to get USDC/ETH balances, transaction count, wallet type, and personalized service recommendations. parameters: - name: wallet in: query required: true schema: type: string description: Ethereum wallet address to check (0x...) responses: '200': description: Successful status check content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.005' protocols: - x402: {} security: - x402: [] /api/infra/health-check: get: operationId: getInfraHealthCheck summary: API Endpoint Health Checker description: API endpoint health checker and x402 compatibility scanner. Provide target url to fetch and check if it correctly implements the HTTP 402 payment flow, and extract its pricing requirements. parameters: - name: url in: query required: true schema: type: string description: Target API endpoint to scan responses: '200': description: Successful health scan content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.003' protocols: - x402: {} security: - x402: [] /api/audit/agent-visibility: get: operationId: getAuditAgentVisibility summary: AEO/GEO Agent Visibility Auditor description: AEO/GEO Agent Visibility Auditor. Audit any third-party API endpoint for x402 compatibility, schema compliance, robots.txt indexing accessibility, and LLM tool calling clarity. parameters: - name: url in: query required: true schema: type: string description: Target API endpoint URL to check responses: '200': description: Successful health scan content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.75' protocols: - x402: {} security: - x402: [] /api/infra/discover: get: operationId: getInfraDiscover summary: Agent Service Discovery Proxy description: Agent service discovery and search endpoint. Search and filter available x402 API endpoints by category, maximum query price, or keyword matches. parameters: - name: q in: query required: false schema: type: string description: General keyword query to match names/descriptions - name: category in: query required: false schema: type: string description: Filter by category (e.g. data/weather, blockchain) - name: max_price in: query required: false schema: type: string description: Maximum price filter in USDC (e.g. 0.005) responses: '200': description: Successful discovery query content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.02' protocols: - x402: {} security: - x402: [] /api/watch/register: post: operationId: registerWatchSpec summary: Register a watch spec for real-time monitoring. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WatchSpec' responses: '201': description: Watch successfully registered content: application/json: schema: type: object properties: watchId: type: string checkEndpoint: type: string reused: type: boolean '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.01' protocols: - x402: {} security: - x402: [] delete: operationId: cancelWatchSpec summary: Cancel and delete a watch spec (owner-only). parameters: - name: id in: query required: true schema: type: string description: The watch ID to cancel. responses: '200': description: Watch successfully cancelled content: application/json: schema: type: object properties: status: type: string '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' '404': description: Watch not found or unauthorized x-payment-info: price: mode: fixed currency: USD amount: '0.01' protocols: - x402: {} security: - x402: [] /api/watch/check: get: operationId: checkWatch summary: Check a watch condition by ID. parameters: - name: id in: query required: true schema: type: string description: The watch ID to check. responses: '200': description: Watch status evaluated content: application/json: schema: $ref: '#/components/schemas/WatchCheckResult' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' '404': description: Watch not found or unauthorized '503': description: Upstream endpoint busy (free retry granted) x-payment-info: price: mode: fixed currency: USD amount: '0.008' protocols: - x402: {} security: - x402: [] head: operationId: preflightCheckWatch summary: Preflight authorization check for a watch ID (free). parameters: - name: id in: query required: true schema: type: string description: The watch ID to preflight check. responses: '200': description: Authorized '404': description: Watch not found or unauthorized /api/watch/check-batch: get: operationId: checkWatchBatch summary: Batch check up to 5 watch conditions concurrently. parameters: - name: ids in: query required: true schema: type: string description: Comma-separated watch IDs to check (max 5). responses: '200': description: Batch results evaluated content: application/json: schema: type: array items: $ref: '#/components/schemas/WatchCheckResult' '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.02' protocols: - x402: {} security: - x402: [] /api/mock/social/feed: get: operationId: getMockSocialFeed summary: Mock Social Feed (Synthetic) description: Deterministic mock social feed generator for agent testing with persona, sentiment, seed, and custom formatting controls. parameters: - name: persona in: query schema: type: string description: Target persona (vitalikbuterin, brian_armstrong, elonmusk, saylor, cz_binance, trader_anon) - name: seed in: query schema: type: string description: Deterministic LCG seed value - name: sentiment in: query schema: type: string description: Sentiment bias (bullish, bearish, neutral) - name: count in: query schema: type: integer description: Number of tweets (1-20) - name: format in: query schema: type: string description: 'Output format: json | text' responses: '200': description: Successful response content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.005' protocols: - x402: {} security: - x402: [] /api/mock/social/stream: get: operationId: getMockSocialStream summary: Mock Social Stream Scenario description: Deterministic mock social scenario stream (hype cycle, FUD cascade, etc.) at specific step ticks. parameters: - name: scenario in: query schema: type: string description: Scenario name (hype_cycle, fud_cascade, regulatory_crackdown, quiet_accumulation) - name: step in: query schema: type: integer description: Scenario step (0-10) - name: seed in: query schema: type: string description: LCG seed value - name: format in: query schema: type: string description: 'Output format: json | text' responses: '200': description: Successful response content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.01' protocols: - x402: {} security: - x402: [] /api/news/crypto: get: operationId: getCryptoNews summary: Real-time aggregated cryptocurrency news feed with sentiment analysis. parameters: - name: topic in: query required: false schema: type: string description: Comma-separated keywords (e.g. 'bitcoin,ethereum') - name: since in: query required: false schema: type: string description: ISO timestamp or shorthand '1h', '6h', '24h' - name: limit in: query required: false schema: type: integer default: 20 description: Max articles to return (1-50) - name: minSentiment in: query required: false schema: type: number description: Minimum sentiment score (-1 to 1) - name: maxSentiment in: query required: false schema: type: number description: Maximum sentiment score (-1 to 1) responses: '200': description: Aggregated news articles retrieved successfully content: application/json: schema: type: object properties: articles: type: array items: type: object properties: id: type: string title: type: string link: type: string source: type: string publishedAt: type: string summary: type: string alsoReportedBy: type: integer sentimentScore: type: number sentimentLabel: type: string scoredTerms: type: array items: type: string meta: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.008' protocols: - x402: {} security: - x402: [] /api/news/pulse: get: operationId: getNewsPulse summary: Synthesized news coverage metrics, volume velocity, and sentiment aggregates. parameters: - name: topic in: query required: true schema: type: string description: Comma-separated keywords - name: window in: query required: false schema: type: string default: 6h description: Timeframe window '1h', '6h', '24h' responses: '200': description: News pulse aggregate retrieved content: application/json: schema: type: object properties: topic: type: string window: type: string articleCount: type: integer clusterCount: type: integer sentiment: type: object velocity: type: object topSources: type: array items: type: object topHeadlines: type: array items: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.02' protocols: - x402: {} security: - x402: [] /api/report/agent-spend: get: operationId: getAgentSpendReport summary: Resolves on-chain USDC outflows to named merchants and listed services. JSON = $0.10, PDF = $0.25. parameters: - name: address in: query required: true schema: type: string description: Target EVM wallet address to analyze - name: days in: query required: false schema: type: integer default: 30 description: History query window (7-90 days) - name: format in: query required: false schema: type: string default: json description: 'Output format: ''json'' ($0.10) or ''pdf'' ($0.25)' responses: '200': description: Agent spend report returned successfully content: application/json: schema: type: object properties: address: type: string totalSpendUsdc: type: number txCount: type: integer byMerchant: type: array items: type: object resolutionRate: type: number application/pdf: schema: type: string format: binary '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.50' protocols: - x402: {} security: - x402: [] /api/trends/category: get: operationId: getCategoryTrends summary: Historical metrics, active listings share, price distribution, and call volume momentum. parameters: - name: tag in: query required: true schema: type: string description: Bazaar tag or category name to analyze - name: window in: query required: false schema: type: integer default: 7 description: Number of snapshot dates to trace (7-30) responses: '200': description: Category trends aggregate retrieved content: application/json: schema: type: object properties: tag: type: string momentum: type: object pricingGuidance: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.25' protocols: - x402: {} security: - x402: [] /api/trends/competitors: get: operationId: getListingCompetitors summary: Finds the closest competitor listings by tag overlap and semantic token similarity. parameters: - name: resource in: query required: false schema: type: string description: Listing resource URL to analyze - name: payTo in: query required: false schema: type: string description: Merchant payTo address to analyze - name: limit in: query required: false schema: type: integer default: 10 description: Max competitors to return (1-25) responses: '200': description: Listing competitor set retrieved content: application/json: schema: type: object properties: competitors: type: array items: type: object marketPosition: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' x-payment-info: price: mode: fixed currency: USD amount: '0.50' protocols: - x402: {} security: - x402: [] /api/market/history: get: operationId: getMarketHistory summary: Historical time series of the x402 Bazaar, reconstructed from daily snapshots. Per-day ecosystem GMV, merchant and listing counts, price-band distribution and median/P90 pricing; per-merchant lifecycle with first-seen, last-seen and departure; every observed price change with date and magnitude; and the biggest movers ranked by change in unique paying wallets rather than call count. The Coinbase discovery API returns only the current catalogue and keeps no archive. parameters: - name: days in: query required: false schema: type: integer maximum: 400 description: Limit to the most recent N daily snapshots. Omit for the full archive. - name: merchant in: query required: false schema: type: string description: Optional domain filter, e.g. example.com, to scope merchant and price detail. responses: '200': description: Historical market report content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' '503': description: Snapshot archive temporarily unavailable; not charged, safe to retry x-payment-info: price: mode: fixed currency: USD amount: '25.00' protocols: - x402: {} security: - x402: [] /api/market/listing-intel: get: operationId: getListingIntel summary: 'Audit your own x402 Bazaar listings: authenticity scoring that separates genuine demand from self-traffic, per-listing health diagnostics, price-band guidance from what measurably sells, and your revenue percentile across all indexed merchants.' parameters: - name: domain in: query required: false schema: type: string description: Merchant domain to audit, e.g. example.com. Provide this or pay_to. - name: pay_to in: query required: false schema: type: string description: Receiving wallet address (0x...) whose listings should be audited. - name: tag in: query required: false schema: type: string description: Optional keyword to scope pricing guidance to comparable services. responses: '200': description: Listing intelligence report content: application/json: schema: type: object '402': description: Payment Required (x402) content: application/json: schema: $ref: '#/components/schemas/PaymentRequired' '503': description: Snapshot archive temporarily unavailable; not charged, safe to retry x-payment-info: price: mode: fixed currency: USD amount: '1.00' protocols: - x402: {} security: - x402: [] components: schemas: PaymentRequired: type: object properties: x402Version: type: integer accepts: type: array items: type: object properties: scheme: type: string network: type: string maxAmountRequired: type: string resource: type: string description: type: string payTo: type: string asset: type: string facilitatorUrl: type: string WeatherResult: type: object properties: location: type: string latitude: type: number longitude: type: number days: type: array items: type: object properties: date: type: string temp_max_c: type: number temp_min_c: type: number precipitation_mm: type: number condition: type: string summary: type: object properties: avg_temp_c: type: number total_precipitation_mm: type: number days_with_rain: type: integer CsvResult: type: object properties: status: type: string stats: type: object properties: rowsBefore: type: integer rowsAfter: type: integer issuesFixed: type: integer columns: type: integer data: type: array items: type: object RiskResult: type: object properties: address: type: string network: type: string riskScore: type: integer riskLevel: type: string enum: - critical - high - medium - low - minimal flags: type: array items: type: object properties: code: type: string severity: type: string enum: - critical - high - medium - low - info label: type: string detail: type: string profile: type: object properties: type: type: string enum: - eoa - contract - empty balanceEth: type: string balanceWei: type: string transactionCount: type: integer hasCode: type: boolean codeSize: type: integer isProxy: type: boolean implementationAddress: type: string nullable: true metadata: type: object properties: queriedAt: type: string format: date-time processingTime: type: string signalsAnalyzed: type: integer warnings: type: array items: type: string WalletIntelResult: type: object properties: address: type: string chain: type: string profile: type: object properties: type: type: string enum: - eoa - contract - empty balanceEth: type: string balanceUsd: type: string transactionCount: type: integer isContract: type: boolean walletAge: type: string tokens: type: array items: type: object properties: symbol: type: string name: type: string balance: type: string contractAddress: type: string activity: type: object properties: totalTransactions: type: integer level: type: string enum: - empty - new - moderate - active - whale tags: type: array items: type: string metadata: type: object properties: queriedAt: type: string format: date-time processingTime: type: string dataSource: type: string warnings: type: array items: type: string DefiYieldsResponse: type: object properties: count: type: integer filters: type: object properties: token: type: string chain: type: string nullable: true min_tvl: type: integer yields: type: array items: type: object properties: protocol: type: string chain: type: string pool: type: string symbol: type: string apy: type: number apyBase: type: number nullable: true apyReward: type: number nullable: true tvl: type: number tvlFormatted: type: string riskLevel: type: string poolType: type: string url: type: string source: type: string processingTime: type: string GasOracleResponse: type: object properties: chain: type: string blockNumber: type: integer timestamp: type: string format: date-time gasPrice: type: object properties: slow: type: object properties: gwei: type: number maxFee: type: number maxPriorityFee: type: number estimatedSeconds: type: integer standard: type: object properties: gwei: type: number maxFee: type: number maxPriorityFee: type: number estimatedSeconds: type: integer fast: type: object properties: gwei: type: number maxFee: type: number maxPriorityFee: type: number estimatedSeconds: type: integer estimatedCosts: type: object properties: ethTransfer: type: object properties: slow: type: string standard: type: string fast: type: string erc20Transfer: type: object properties: slow: type: string standard: type: string fast: type: string swap: type: object properties: slow: type: string standard: type: string fast: type: string networkStatus: type: string recommendation: type: string source: type: string processingTime: type: string WatchSpec: type: object required: - kind - target - condition properties: kind: type: string enum: - price - gas - weather - wallet - endpoint - news target: type: string description: Kind-specific target details condition: type: object required: - op - field properties: op: type: string enum: - gt - lt - crosses - changes field: type: string value: type: number notify: type: object properties: email: type: string format: email authorizedPayers: type: array items: type: string WatchCheckResult: type: object properties: watchId: type: string format: uuid kind: type: string target: type: string triggered: type: boolean delta: type: object nullable: true properties: prev: type: object nullable: true curr: type: object checkedAt: type: integer error: type: string securitySchemes: x402: type: apiKey name: X-Payment in: header description: Base64 encoded x402 payment payload signed by the agent wallet.