{
  "name": "x402agency",
  "version": "1.0",
  "description": "BSV Agent Directory — AI services that accept micropayments",
  "agents": [
    {
      "name": "banana",
      "displayName": "Banana Agent",
      "tagline": "AI Image Generation",
      "description": "Generate high-quality images from text prompts using Google's Nano Banana Pro model. Supports 1K-4K resolution, multiple aspect ratios, img2img with up to 14 reference images, and configurable safety filtering.",
      "url": "https://nano-banana-pro.x402agency.com",
      "capabilities": [
        "text-to-image",
        "image-to-image"
      ],
      "model": "Nano Banana Pro",
      "modelProvider": "Google via Replicate",
      "category": "generation",
      "delivery": "async",
      "pricing": {
        "model": "per-resolution",
        "currency": "USD",
        "tiers": [
          {
            "label": "1K / 2K",
            "usd": 0.1875
          },
          {
            "label": "4K",
            "usd": 0.375
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/generate",
          "description": "Submit an image generation prompt. Returns a prediction ID for polling.",
          "auth": true,
          "payment": true,
          "delivery": "async",
          "input": {
            "prompt": {
              "type": "string",
              "required": true,
              "description": "Text description of the image to generate"
            },
            "resolution": {
              "type": "string",
              "description": "Image resolution tier",
              "enum": [
                "1K",
                "2K",
                "4K"
              ],
              "default": "2K"
            },
            "aspect_ratio": {
              "type": "string",
              "description": "Aspect ratio",
              "enum": [
                "1:1",
                "2:3",
                "3:2",
                "3:4",
                "4:3",
                "16:9",
                "9:16"
              ],
              "default": "match_input_image"
            },
            "output_format": {
              "type": "string",
              "description": "Output format",
              "enum": [
                "jpg",
                "png"
              ],
              "default": "jpg"
            }
          },
          "polling": {
            "interval": 15,
            "maxWait": 180,
            "terminalStates": [
              "succeeded",
              "failed",
              "canceled"
            ]
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline or deferred"
          }
        },
        {
          "method": "GET",
          "path": "/status/{id}",
          "description": "Poll prediction status. Returns image URLs when complete. Identity-scoped.",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "refund": {
            "trigger": "prediction_failure",
            "delivery": "deferred"
          }
        }
      ],
      "x402_info": "https://nano-banana-pro.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "banana2",
      "displayName": "Banana 2 Agent",
      "tagline": "AI Image Generation with Search Grounding",
      "description": "Generate high-quality images from text prompts using Google's Nano Banana 2 model. Supports 1K-4K resolution, 15 aspect ratios, img2img with up to 14 reference images, Google Web Search grounding for real-time context, and Google Image Search grounding for visual references.",
      "url": "https://nano-banana-2.x402agency.com",
      "capabilities": [
        "text-to-image",
        "image-to-image",
        "search-grounded-generation"
      ],
      "model": "Nano Banana 2",
      "modelProvider": "Google via Replicate",
      "category": "generation",
      "delivery": "async",
      "pricing": {
        "model": "per-resolution",
        "currency": "USD",
        "tiers": [
          {
            "label": "1K / 2K",
            "usd": 0.1875
          },
          {
            "label": "4K",
            "usd": 0.375
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/generate",
          "description": "Submit an image generation prompt. Returns a prediction ID for polling.",
          "auth": true,
          "payment": true,
          "delivery": "async",
          "input": {
            "prompt": {
              "type": "string",
              "required": true,
              "description": "Text description of the image to generate"
            },
            "resolution": {
              "type": "string",
              "description": "Image resolution tier",
              "enum": [
                "1K",
                "2K",
                "4K"
              ],
              "default": "1K"
            },
            "aspect_ratio": {
              "type": "string",
              "description": "Aspect ratio",
              "enum": [
                "match_input_image",
                "1:1",
                "1:4",
                "1:8",
                "2:3",
                "3:2",
                "3:4",
                "4:1",
                "4:3",
                "4:5",
                "5:4",
                "8:1",
                "9:16",
                "16:9",
                "21:9"
              ],
              "default": "match_input_image"
            },
            "output_format": {
              "type": "string",
              "description": "Output format",
              "enum": [
                "jpg",
                "png"
              ],
              "default": "jpg"
            },
            "google_search": {
              "type": "boolean",
              "description": "Use Google Web Search grounding for real-time info"
            },
            "image_search": {
              "type": "boolean",
              "description": "Use Google Image Search grounding for visual context"
            }
          },
          "polling": {
            "interval": 15,
            "maxWait": 180,
            "terminalStates": [
              "succeeded",
              "failed",
              "canceled"
            ]
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline or deferred"
          }
        },
        {
          "method": "GET",
          "path": "/status/{id}",
          "description": "Poll prediction status. Returns image URLs when complete. Identity-scoped.",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "refund": {
            "trigger": "prediction_failure",
            "delivery": "deferred"
          }
        }
      ],
      "x402_info": "https://nano-banana-2.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "veo",
      "displayName": "Veo Agent",
      "tagline": "AI Video Generation",
      "description": "Generate 4-8 second video clips with optional synchronized audio using Google's Veo 3.1 Fast model. Supports image-input continuity for seamless scene transitions and dialogue rendering.",
      "url": "https://veo-3-1-fast.x402agency.com",
      "capabilities": [
        "text-to-video",
        "image-to-video",
        "audio-generation"
      ],
      "model": "Veo 3.1 Fast",
      "modelProvider": "Google via Replicate",
      "category": "generation",
      "delivery": "async",
      "pricing": {
        "model": "per-second",
        "currency": "USD",
        "tiers": [
          {
            "label": "4s + audio",
            "usd": 0.75
          },
          {
            "label": "8s + audio",
            "usd": 1.5
          },
          {
            "label": "4s silent",
            "usd": 0.5
          },
          {
            "label": "8s silent",
            "usd": 1
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/generate",
          "description": "Submit a video generation prompt. Returns a prediction ID for polling.",
          "auth": true,
          "payment": true,
          "delivery": "async",
          "input": {
            "prompt": {
              "type": "string",
              "required": true,
              "description": "Text description of the video to generate"
            },
            "duration": {
              "type": "integer",
              "description": "Video duration in seconds",
              "enum": [
                "4",
                "6",
                "8"
              ],
              "default": "8"
            },
            "audio": {
              "type": "boolean",
              "description": "Generate synchronized audio",
              "default": "true"
            },
            "image": {
              "type": "string",
              "description": "Input image URL for visual continuity"
            }
          },
          "polling": {
            "interval": 15,
            "maxWait": 300,
            "terminalStates": [
              "succeeded",
              "failed",
              "canceled"
            ]
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline or deferred"
          }
        },
        {
          "method": "GET",
          "path": "/status/{id}",
          "description": "Poll prediction status. Returns video URL when complete. Identity-scoped.",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "refund": {
            "trigger": "prediction_failure",
            "delivery": "deferred"
          }
        }
      ],
      "x402_info": "https://veo-3-1-fast.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "whisper",
      "displayName": "Whisper Agent",
      "tagline": "Speech-to-Text",
      "description": "Transcribe audio to text using OpenAI's Whisper Large v3 Turbo running on Cloudflare Workers AI. Synchronous responses - results returned immediately after payment. Priced per audio minute.",
      "url": "https://whisper-large-v3-turbo.x402agency.com",
      "capabilities": [
        "speech-to-text",
        "transcription"
      ],
      "model": "Whisper Large v3 Turbo",
      "modelProvider": "OpenAI via Cloudflare Workers AI",
      "category": "analysis",
      "delivery": "sync",
      "pricing": {
        "model": "per-minute",
        "currency": "USD",
        "tiers": [
          {
            "label": "1 min",
            "usd": 0.0006375
          },
          {
            "label": "5 min",
            "usd": 0.0031875
          },
          {
            "label": "30 min",
            "usd": 0.019125
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/transcribe",
          "description": "Transcribe audio. Synchronous - returns transcription immediately.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "audio": {
              "type": "string",
              "required": true,
              "description": "Base64-encoded audio data"
            },
            "content_type": {
              "type": "string",
              "description": "Audio MIME type",
              "default": "audio/wav"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://whisper-large-v3-turbo.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "x-research",
      "displayName": "X Research Agent",
      "tagline": "Twitter/X Research API",
      "description": "Search tweets, look up profiles, explore threads, and track trending topics on X/Twitter using the official API v2. Supports pagination (up to 500 tweets), time filtering, engagement sorting, entity extraction, and markdown output. Synchronous responses.",
      "url": "https://x-research.x402agency.com",
      "capabilities": [
        "tweet-search",
        "profile-lookup",
        "thread-analysis",
        "trending-topics",
        "single-tweet-lookup"
      ],
      "model": "X API v2",
      "modelProvider": "X/Twitter",
      "category": "research",
      "delivery": "sync",
      "pricing": {
        "model": "per-request",
        "currency": "USD",
        "tiers": [
          {
            "label": "Search (1 page)",
            "usd": 0.0625
          },
          {
            "label": "Search (5 pages)",
            "usd": 0.3125
          },
          {
            "label": "Profile",
            "usd": 0.0125
          },
          {
            "label": "Thread",
            "usd": 0.0625
          },
          {
            "label": "Trending",
            "usd": 0.00625
          },
          {
            "label": "Tweet",
            "usd": 0.00625
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/search",
          "description": "Search recent tweets with engagement filtering, sorting, pagination, time filtering, and markdown output.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "query": {
              "type": "string",
              "required": true,
              "description": "Search query (X API search syntax)"
            },
            "sort": {
              "type": "string",
              "description": "Sort order",
              "enum": [
                "likes",
                "retweets",
                "views",
                "recent"
              ],
              "default": "likes"
            },
            "pages": {
              "type": "integer",
              "description": "API pages to fetch (1-5, 100 tweets/page)",
              "default": "1"
            },
            "since": {
              "type": "string",
              "description": "Time filter: '1h', '7d', or ISO 8601"
            },
            "quality": {
              "type": "boolean",
              "description": "Filter tweets with <10 likes",
              "default": "false"
            },
            "format": {
              "type": "string",
              "description": "Output format",
              "enum": [
                "json",
                "markdown"
              ],
              "default": "json"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/profile",
          "description": "Look up a user profile and their recent tweets.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "username": {
              "type": "string",
              "required": true,
              "description": "X/Twitter username"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/thread",
          "description": "Get a tweet and its conversation thread/replies.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "tweet_id": {
              "type": "string",
              "required": true,
              "description": "Tweet ID"
            },
            "sort": {
              "type": "string",
              "description": "Sort replies",
              "enum": [
                "likes",
                "retweets",
                "views",
                "recent"
              ],
              "default": "likes"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/trending",
          "description": "Get trending topics.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "woeid": {
              "type": "integer",
              "description": "Where On Earth ID (1=worldwide)",
              "default": "1"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/tweet",
          "description": "Look up a single tweet by ID with full metrics and entities.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "tweet_id": {
              "type": "string",
              "required": true,
              "description": "Tweet ID to look up"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://x-research.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "kling",
      "displayName": "Kling Agent",
      "tagline": "AI Video Generation (Kling)",
      "description": "Generate high-quality videos with 24 model variants across Kling O3, v3, v2.5-turbo, v2.1, and v1 generations via fal.ai. Supports text-to-video, image-to-video, reference-guided generation, video editing, video-guided generation, and lip-sync avatars. Per-second pricing with audio mode selection.",
      "url": "https://kling.x402agency.com",
      "capabilities": [
        "text-to-video",
        "image-to-video",
        "video-editing",
        "lip-sync-avatar",
        "reference-guided-video"
      ],
      "model": "Kling (24 variants: O3/v3/v2.5-turbo/v2.1/v1)",
      "modelProvider": "Kuaishou via fal.ai",
      "category": "generation",
      "delivery": "async",
      "pricing": {
        "model": "per-second",
        "currency": "USD",
        "tiers": [
          {
            "label": "O3 Standard 3s",
            "usd": 0.63
          },
          {
            "label": "O3 Standard 3s + audio",
            "usd": 0.84
          },
          {
            "label": "v3 Standard 3s",
            "usd": 0.63
          },
          {
            "label": "v3 Standard 3s + audio + voice",
            "usd": 1.155
          },
          {
            "label": "v1 Standard 5s",
            "usd": 0.175
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/text-to-video",
          "description": "Generate video from text prompt. Returns a request ID for polling.",
          "auth": true,
          "payment": true,
          "delivery": "async",
          "input": {
            "prompt": {
              "type": "string",
              "required": true,
              "description": "Text description of the video to generate"
            },
            "model": {
              "type": "string",
              "description": "Model variant",
              "enum": [
                "o3/standard",
                "o3/pro",
                "v3/standard",
                "v3/pro",
                "v2.5-turbo/pro",
                "v2.1/master",
                "v1/standard"
              ],
              "default": "o3/standard"
            },
            "duration": {
              "type": "number",
              "description": "Video duration in seconds (3-15 for O3/v3, 5 or 10 for legacy)"
            },
            "aspect_ratio": {
              "type": "string",
              "description": "Aspect ratio",
              "enum": [
                "16:9",
                "9:16",
                "1:1"
              ],
              "default": "16:9"
            },
            "audio": {
              "type": "boolean",
              "description": "Generate audio (O3/v3 only)",
              "default": "false"
            }
          },
          "polling": {
            "interval": 15,
            "maxWait": 300,
            "terminalStates": [
              "succeeded",
              "failed"
            ]
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline or deferred"
          }
        },
        {
          "method": "POST",
          "path": "/image-to-video",
          "description": "Generate video from input image(s). Returns a request ID for polling.",
          "auth": true,
          "payment": true,
          "delivery": "async",
          "input": {
            "prompt": {
              "type": "string",
              "required": true,
              "description": "Text description of desired motion/content"
            },
            "image_url": {
              "type": "string",
              "required": true,
              "description": "Start image URL"
            },
            "end_image_url": {
              "type": "string",
              "description": "End image URL (O3/v3/v2.5-turbo only)"
            },
            "model": {
              "type": "string",
              "description": "Model variant",
              "default": "o3/standard"
            },
            "duration": {
              "type": "number",
              "description": "Video duration in seconds"
            }
          },
          "polling": {
            "interval": 15,
            "maxWait": 300,
            "terminalStates": [
              "succeeded",
              "failed"
            ]
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline or deferred"
          }
        },
        {
          "method": "GET",
          "path": "/status/{id}",
          "description": "Poll job status. Returns video URL when complete. Identity-scoped.",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "refund": {
            "trigger": "job_failure",
            "delivery": "deferred"
          }
        }
      ],
      "x402_info": "https://kling.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "1sat",
      "displayName": "1Sat Agent",
      "tagline": "1Sat Ordinals Inscriptions",
      "description": "Inscribe any file as a 1Sat Ordinal on BSV. Builds the inscription locking script — your wallet funds, signs, and broadcasts the transaction. Supports images, text, HTML, JSON, SVG, and more. Pure satoshi pricing (no USD conversion).",
      "url": "https://1sat.x402agency.com",
      "capabilities": [
        "inscription",
        "ordinals",
        "1sat",
        "nft"
      ],
      "model": "Inscription Script Builder",
      "modelProvider": "x402agency",
      "category": "on-chain",
      "delivery": "sync",
      "pricing": {
        "model": "per-byte (mining fee + 25%)",
        "currency": "USD",
        "tiers": [
          {
            "label": "1 KB (200 sats min)",
            "usd": 0.0001
          },
          {
            "label": "10 KB (1,280 sats)",
            "usd": 0.00064
          },
          {
            "label": "100 KB (12,800 sats)",
            "usd": 0.0064
          },
          {
            "label": "500 KB max (64,000 sats)",
            "usd": 0.032
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/inscribe",
          "description": "Build a 1Sat Ordinals inscription locking script. Returns the script + a createAction template for the client's wallet.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "data": {
              "type": "string",
              "required": true,
              "description": "Base64-encoded file bytes (max 500KB decoded)"
            },
            "contentType": {
              "type": "string",
              "required": true,
              "description": "MIME type",
              "enum": [
                "image/png",
                "image/jpeg",
                "image/webp",
                "image/gif",
                "image/svg+xml",
                "text/plain",
                "text/html",
                "application/json"
              ]
            },
            "publicKey": {
              "type": "string",
              "required": true,
              "description": "66-char hex compressed pubkey (02/03 prefix) for the inscription locking script"
            },
            "keyID": {
              "type": "string",
              "description": "BRC-42 key ID for derivation tracking"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://1sat.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "openai",
      "displayName": "OpenAI Agent",
      "tagline": "AI Chat Completions (GPT-5.2)",
      "description": "Chat completions using OpenAI's GPT-5.2 model family. Supports gpt-5-nano, gpt-5-mini, gpt-5.2, o4-mini, and gpt-5.2-pro. Per-token pricing with pre-pay on max_tokens ceiling. Synchronous responses.",
      "url": "https://openai-chat.x402agency.com",
      "capabilities": [
        "chat-completion",
        "reasoning",
        "code-generation"
      ],
      "model": "GPT-5.2 family (5 models)",
      "modelProvider": "OpenAI",
      "category": "analysis",
      "delivery": "sync",
      "pricing": {
        "model": "per-token",
        "currency": "USD",
        "tiers": [
          {
            "label": "gpt-5-nano (4K out)",
            "usd": 0.002079
          },
          {
            "label": "gpt-5-mini (4K out)",
            "usd": 0.010396
          },
          {
            "label": "gpt-5.2 (4K out)",
            "usd": 0.072774
          },
          {
            "label": "o4-mini (4K out)",
            "usd": 0.023215
          },
          {
            "label": "gpt-5.2-pro (4K out)",
            "usd": 0.873285
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/chat",
          "description": "Chat completion. Synchronous - returns response immediately.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "model": {
              "type": "string",
              "description": "OpenAI model",
              "enum": [
                "gpt-5-nano",
                "gpt-5-mini",
                "gpt-5.2",
                "o4-mini",
                "gpt-5.2-pro"
              ],
              "default": "gpt-5.2"
            },
            "messages": {
              "type": "array",
              "required": true,
              "description": "Array of {role, content} message objects"
            },
            "max_tokens": {
              "type": "integer",
              "description": "Maximum tokens to generate (1-16384)",
              "default": "4096"
            },
            "temperature": {
              "type": "number",
              "description": "Sampling temperature (0.0-2.0)"
            },
            "reasoning_effort": {
              "type": "string",
              "description": "Reasoning effort for o4-mini: low/medium/high"
            }
          },
          "refund": {
            "trigger": "server_error",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://openai-chat.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "claude",
      "displayName": "Claude Agent",
      "tagline": "AI Chat Completions (Claude)",
      "description": "Chat completions using Anthropic's Claude model family. Supports claude-haiku-4-5, claude-sonnet-4-6, and claude-opus-4-6. Per-token pricing with pre-pay on max_tokens ceiling. Native tool calling on all models. Excess refunds when actual usage is below the pre-paid ceiling.",
      "url": "https://claude-chat.x402agency.com",
      "capabilities": [
        "chat-completion",
        "reasoning",
        "code-generation",
        "tool-calling"
      ],
      "model": "Claude family (3 models)",
      "modelProvider": "Anthropic",
      "category": "analysis",
      "delivery": "sync",
      "pricing": {
        "model": "per-token",
        "currency": "USD",
        "tiers": [
          {
            "label": "claude-haiku-4-5 (4K out)",
            "usd": 0.02685
          },
          {
            "label": "claude-sonnet-4-6 (4K out)",
            "usd": 0.08055
          },
          {
            "label": "claude-opus-4-6 (4K out)",
            "usd": 0.13425
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/chat",
          "description": "Chat completion. Synchronous - returns response immediately.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "model": {
              "type": "string",
              "description": "Anthropic model",
              "enum": [
                "claude-haiku-4-5",
                "claude-sonnet-4-6",
                "claude-opus-4-6"
              ],
              "default": "claude-sonnet-4-6"
            },
            "messages": {
              "type": "array",
              "required": true,
              "description": "Array of {role, content} message objects"
            },
            "system": {
              "type": "string",
              "description": "System prompt (string or content block array)"
            },
            "max_tokens": {
              "type": "integer",
              "description": "Maximum tokens to generate (1-128000)",
              "default": "4096"
            },
            "temperature": {
              "type": "number",
              "description": "Sampling temperature (0.0-1.0)"
            },
            "tools": {
              "type": "array",
              "description": "Tool definitions for function calling"
            },
            "tool_choice": {
              "type": "object",
              "description": "Tool choice strategy: auto, any, or specific tool"
            }
          },
          "refund": {
            "trigger": "server_error",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://claude-chat.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "polymirror",
      "displayName": "PolyMirror Agent",
      "tagline": "Polymarket Whale Tracking",
      "description": "Monitor top Polymarket traders, search by name or wallet, get deep profiles with win rates and analytics, and track whale portfolios. All Polymarket data APIs wrapped with enrichment and caching.",
      "url": "https://polymirror.x402agency.com",
      "capabilities": [
        "leaderboard",
        "trader-search",
        "deep-profiles",
        "portfolio-tracking"
      ],
      "model": "Polymarket Data + Gamma + CLOB APIs",
      "modelProvider": "Polymarket (public)",
      "category": "research",
      "delivery": "sync",
      "pricing": {
        "model": "per-request",
        "currency": "USD",
        "tiers": [
          {
            "label": "/leaderboard",
            "usd": 0.005
          },
          {
            "label": "/search",
            "usd": 0.005
          },
          {
            "label": "/trader",
            "usd": 0.01
          },
          {
            "label": "/portfolio",
            "usd": 0.008
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/leaderboard",
          "description": "Top Polymarket traders with enriched metrics (win rate, active positions, market diversity)",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "category": {
              "type": "string",
              "description": "OVERALL|POLITICS|SPORTS|CRYPTO|CULTURE|ECONOMICS|TECH|FINANCE",
              "default": "OVERALL"
            },
            "time_period": {
              "type": "string",
              "description": "DAY|WEEK|MONTH|ALL",
              "default": "WEEK"
            },
            "order_by": {
              "type": "string",
              "description": "PNL|VOL",
              "default": "PNL"
            },
            "limit": {
              "type": "integer",
              "description": "1-50",
              "default": "25"
            }
          },
          "refund": {
            "trigger": "server_error",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/search",
          "description": "Find a trader by username, wallet address, or X/Twitter handle",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "query": {
              "type": "string",
              "required": true,
              "description": "Search by username, wallet prefix, or X handle (min 2 chars)"
            }
          },
          "refund": {
            "trigger": "server_error",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/trader",
          "description": "Deep trader profile with positions, trades, win rate, and market diversity",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "wallet": {
              "type": "string",
              "required": true,
              "description": "0x-prefixed 42-char hex address"
            },
            "depth": {
              "type": "string",
              "description": "summary|full|trades",
              "default": "summary"
            }
          },
          "refund": {
            "trigger": "server_error",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/portfolio",
          "description": "Current positions of up to 10 watched wallets",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "wallets": {
              "type": "array",
              "required": true,
              "description": "Array of 0x-prefixed hex addresses (max 10)"
            }
          },
          "refund": {
            "trigger": "server_error",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://polymirror.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "nanostore",
      "displayName": "NanoStore",
      "tagline": "File Hosting (UHRP)",
      "description": "Host files on Google Cloud Storage with on-chain UHRP content addressing. Upload any file up to 11 GB with configurable retention (minutes to 131 years). Files are publicly accessible via GCS CDN. Operated by Babbage.",
      "url": "https://nanostore.babbage.systems",
      "capabilities": [
        "file-hosting",
        "uhrp",
        "content-addressing"
      ],
      "model": "UHRP Storage",
      "modelProvider": "Babbage",
      "category": "storage",
      "delivery": "sync",
      "thirdParty": true,
      "pricing": {
        "model": "per-GB-month",
        "currency": "USD",
        "tiers": [
          {
            "label": "1 MB / 1 year",
            "usd": 0.000365
          },
          {
            "label": "10 MB / 1 year",
            "usd": 0.00365
          },
          {
            "label": "100 MB / 1 year",
            "usd": 0.0365
          },
          {
            "label": "1 GB / 1 year",
            "usd": 0.365
          }
        ]
      },
      "endpoints": [
        {
          "method": "POST",
          "path": "/quote",
          "description": "Get price quote for hosting (public, no auth)",
          "auth": false,
          "payment": false,
          "delivery": "instant",
          "input": {
            "fileSize": {
              "type": "integer",
              "required": true,
              "description": "File size in bytes (max 11 billion)"
            },
            "retentionPeriod": {
              "type": "integer",
              "required": true,
              "description": "Hosting duration in minutes (min 180, max 69M)"
            }
          },
          "output": {
            "quote": "integer — cost in satoshis (minimum 10)"
          }
        },
        {
          "method": "POST",
          "path": "/upload",
          "description": "Get presigned GCS upload URL (pay via 402 flow)",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "fileSize": {
              "type": "integer",
              "required": true,
              "description": "File size in bytes"
            },
            "retentionPeriod": {
              "type": "integer",
              "required": true,
              "description": "Hosting duration in minutes"
            }
          },
          "output": {
            "uploadURL": "Presigned GCS URL — PUT your file bytes here",
            "requiredHeaders": "Headers to include in the PUT request"
          }
        },
        {
          "method": "GET",
          "path": "/list",
          "description": "List your uploaded files (identity-scoped)",
          "auth": true,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "GET",
          "path": "/find",
          "description": "Get file metadata by UHRP URL (identity-scoped)",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "input": {
            "uhrpUrl": {
              "type": "string",
              "required": true,
              "description": "UHRP URL to look up"
            }
          }
        },
        {
          "method": "POST",
          "path": "/renew",
          "description": "Extend file expiration (pay via 402 flow)",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "uhrpUrl": {
              "type": "string",
              "required": true,
              "description": "UHRP URL of the file to renew"
            },
            "additionalMinutes": {
              "type": "integer",
              "required": true,
              "description": "Minutes to add to expiration"
            }
          }
        }
      ],
      "x402_info": "https://x402agency.com/manifests/nanostore.json"
    },
    {
      "name": "messagebox",
      "displayName": "MessageBox",
      "tagline": "P2P Message Relay",
      "description": "Peer-to-peer message relay for Bitcoin identity keys. Send and receive messages with store-and-forward delivery, real-time WebSocket push, recipient-controlled delivery fees, and FCM push notifications. Operated by Babbage.",
      "url": "https://messagebox.babbage.systems",
      "capabilities": [
        "messaging",
        "p2p",
        "websocket",
        "push-notifications",
        "permissions"
      ],
      "model": "MessageBox Server",
      "modelProvider": "Babbage",
      "category": "messaging",
      "delivery": "sync",
      "thirdParty": true,
      "pricing": {
        "model": "recipient-controlled",
        "currency": "USD",
        "tiers": [
          {
            "label": "Free delivery",
            "usd": 0
          },
          {
            "label": "Notifications (server fee)",
            "usd": 0
          }
        ]
      },
      "endpoints": [
        {
          "method": "POST",
          "path": "/sendMessage",
          "description": "Send message to recipient(s) — payment in body when fees apply",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "message.recipient": {
              "type": "string",
              "required": true,
              "description": "Recipient identity key (66-char hex)"
            },
            "message.messageBox": {
              "type": "string",
              "required": true,
              "description": "Target message box (e.g., 'payment_inbox')"
            },
            "message.messageId": {
              "type": "string",
              "required": true,
              "description": "Unique message ID"
            },
            "message.body": {
              "type": "string",
              "required": true,
              "description": "Message content"
            }
          }
        },
        {
          "method": "POST",
          "path": "/listMessages",
          "description": "Retrieve messages from your message box (identity-scoped)",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "input": {
            "messageBox": {
              "type": "string",
              "required": true,
              "description": "Message box to list from"
            }
          }
        },
        {
          "method": "POST",
          "path": "/acknowledgeMessage",
          "description": "Acknowledge and delete received messages",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "input": {
            "messageIds": {
              "type": "string[]",
              "required": true,
              "description": "Array of message IDs to acknowledge"
            }
          }
        },
        {
          "method": "GET",
          "path": "/permissions/quote",
          "description": "Get delivery cost quote for recipient(s)",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "input": {
            "recipient": {
              "type": "string",
              "required": true,
              "description": "Recipient identity key (query param)"
            },
            "messageBox": {
              "type": "string",
              "required": true,
              "description": "Message box type (query param)"
            }
          }
        },
        {
          "method": "POST",
          "path": "/permissions/set",
          "description": "Set delivery permission (-1=block, 0=free, >0=sats required)",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "input": {
            "messageBox": {
              "type": "string",
              "required": true,
              "description": "Message box type"
            },
            "recipientFee": {
              "type": "integer",
              "required": true,
              "description": "Fee: -1=block, 0=free, >0=satoshis"
            }
          }
        },
        {
          "method": "GET",
          "path": "/permissions/list",
          "description": "List all your permission settings with pagination",
          "auth": true,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/registerDevice",
          "description": "Register FCM device for push notifications",
          "auth": true,
          "payment": false,
          "delivery": "instant",
          "input": {
            "fcmToken": {
              "type": "string",
              "required": true,
              "description": "Firebase Cloud Messaging token"
            }
          }
        }
      ],
      "x402_info": "https://x402agency.com/manifests/message-box.json"
    },
    {
      "name": "seo",
      "displayName": "SEO Research Agent",
      "tagline": "Google SERP + Keyword Intelligence",
      "description": "Search Google, get autocomplete suggestions, check keyword volume/CPC, and find related keywords. Powered by DataForSEO. No API key or subscription needed — pay per query.",
      "url": "https://seo.x402agency.com",
      "capabilities": [
        "google-serp",
        "keyword-research",
        "autocomplete",
        "seo-analysis"
      ],
      "model": "DataForSEO Live API",
      "modelProvider": "DataForSEO",
      "category": "research",
      "delivery": "sync",
      "pricing": {
        "model": "per-request",
        "currency": "USD",
        "tiers": [
          {
            "label": "SERP results (10)",
            "usd": 0.0025
          },
          {
            "label": "Autocomplete",
            "usd": 0.0025
          },
          {
            "label": "Keyword volume (up to 700)",
            "usd": 0.1875
          },
          {
            "label": "Related keywords",
            "usd": 0.075
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/serp",
          "description": "Google SERP results. Returns top 10 organic results for a keyword.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "keyword": {
              "type": "string",
              "required": true,
              "description": "Search keyword or phrase"
            },
            "location_code": {
              "type": "integer",
              "description": "DataForSEO location code",
              "default": "2840"
            },
            "language_code": {
              "type": "string",
              "description": "Language code",
              "default": "en"
            },
            "device": {
              "type": "string",
              "description": "Device type",
              "enum": [
                "desktop",
                "mobile"
              ],
              "default": "desktop"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/autocomplete",
          "description": "Google autocomplete suggestions for a keyword.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "keyword": {
              "type": "string",
              "required": true,
              "description": "Partial keyword for suggestions"
            },
            "location_code": {
              "type": "integer",
              "description": "DataForSEO location code",
              "default": "2840"
            },
            "language_code": {
              "type": "string",
              "description": "Language code",
              "default": "en"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/volume",
          "description": "Keyword search volume, CPC, and competition data for up to 700 keywords.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "keywords": {
              "type": "array",
              "required": true,
              "description": "Array of keywords (max 700)"
            },
            "location_code": {
              "type": "integer",
              "description": "DataForSEO location code",
              "default": "2840"
            },
            "language_code": {
              "type": "string",
              "description": "Language code",
              "default": "en"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/related",
          "description": "Related keywords and suggestions for a seed keyword.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "keyword": {
              "type": "string",
              "required": true,
              "description": "Seed keyword"
            },
            "location_code": {
              "type": "integer",
              "description": "DataForSEO location code",
              "default": "2840"
            },
            "language_code": {
              "type": "string",
              "description": "Language code",
              "default": "en"
            },
            "limit": {
              "type": "integer",
              "description": "Max results to return",
              "default": "50"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://seo.x402agency.com/.well-known/x402-info"
    },
    {
      "name": "reader",
      "displayName": "Web Reader Agent",
      "tagline": "URL → Clean Markdown",
      "description": "Extract clean, readable content from any web page. Handles JavaScript rendering, anti-bot measures, and complex layouts. Returns structured markdown perfect for LLM input.",
      "url": "https://reader.x402agency.com",
      "capabilities": [
        "web-reading",
        "content-extraction",
        "markdown-conversion",
        "web-search"
      ],
      "model": "Jina Reader API",
      "modelProvider": "Jina AI",
      "category": "research",
      "delivery": "sync",
      "pricing": {
        "model": "per-request",
        "currency": "USD",
        "tiers": [
          {
            "label": "Read URL",
            "usd": 0.003
          },
          {
            "label": "Web search",
            "usd": 0.005
          }
        ]
      },
      "endpoints": [
        {
          "method": "GET",
          "path": "/",
          "description": "Health check",
          "auth": false,
          "payment": false,
          "delivery": "instant"
        },
        {
          "method": "POST",
          "path": "/read",
          "description": "Extract clean markdown from a URL. Handles JS rendering and anti-bot measures.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "url": {
              "type": "string",
              "required": true,
              "description": "URL to read and extract content from"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        },
        {
          "method": "POST",
          "path": "/search",
          "description": "Web search with content extraction. Returns results with clean markdown.",
          "auth": true,
          "payment": true,
          "delivery": "instant",
          "input": {
            "query": {
              "type": "string",
              "required": true,
              "description": "Search query"
            }
          },
          "refund": {
            "trigger": "service_failure",
            "delivery": "inline"
          }
        }
      ],
      "x402_info": "https://reader.x402agency.com/.well-known/x402-info"
    }
  ]
}
