{
  "name": "APIbase \u2014 The API Hub for AI Agents",
  "description": "Unified MCP gateway to 514 tools. Dual-rail: x402 + MPP.",
  "version": "2.1.0",
  "tools": [
    {
      "name": "weather.conditions.current",
      "description": "Get current weather conditions for a location",
      "inputSchema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name, coordinates (lat,lon), or zip code"
          },
          "units": {
            "type": "string",
            "enum": [
              "metric",
              "imperial"
            ],
            "description": "Temperature units system"
          }
        },
        "required": [
          "location"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.conditions.forecast",
      "description": "Get weather forecast for a location",
      "inputSchema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name, coordinates (lat,lon), or zip code"
          },
          "type": {
            "type": "string",
            "enum": [
              "hourly",
              "daily",
              "both"
            ],
            "description": "Forecast granularity: hourly, daily, or both"
          },
          "units": {
            "type": "string",
            "enum": [
              "metric",
              "imperial"
            ],
            "description": "Temperature units system"
          }
        },
        "required": [
          "location"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.alerts.get",
      "description": "Get active weather alerts for a location",
      "inputSchema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name, coordinates (lat,lon), or zip code"
          }
        },
        "required": [
          "location"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.conditions.history",
      "description": "Get historical weather data for a location and date",
      "inputSchema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name, coordinates (lat,lon), or zip code"
          },
          "date": {
            "type": "string",
            "description": "Historical date in YYYY-MM-DD format"
          },
          "units": {
            "type": "string",
            "enum": [
              "metric",
              "imperial"
            ],
            "description": "Temperature units system"
          }
        },
        "required": [
          "location",
          "date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.air.quality",
      "description": "Get air quality index for a location",
      "inputSchema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "City name, coordinates (lat,lon), or zip code"
          },
          "include_forecast": {
            "type": "boolean",
            "description": "Include air quality forecast for next 24h"
          }
        },
        "required": [
          "location"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.location.geocode",
      "description": "Geocode a location query to coordinates",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Location name or coordinates to geocode"
          },
          "type": {
            "type": "string",
            "enum": [
              "forward",
              "reverse"
            ],
            "description": "Geocoding direction: forward (name to coords) or reverse (coords to name)"
          },
          "limit": {
            "type": "integer",
            "maximum": 5,
            "description": "Max number of results (1-5)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.conditions.compare",
      "description": "Compare weather across multiple locations",
      "inputSchema": {
        "type": "object",
        "properties": {
          "locations": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "City name or coordinates"
            },
            "description": "List of 2-5 locations to compare",
            "minItems": 2,
            "maxItems": 5
          },
          "units": {
            "type": "string",
            "enum": [
              "metric",
              "imperial"
            ],
            "description": "Temperature units system"
          }
        },
        "required": [
          "locations"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.price.current",
      "description": "Get current prices for cryptocurrencies",
      "inputSchema": {
        "type": "object",
        "properties": {
          "coins": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "CoinGecko coin ID (e.g. bitcoin, ethereum)"
            },
            "description": "List of coin IDs to get prices for",
            "maxItems": 50
          },
          "vs_currencies": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Currency code (e.g. usd, eur, btc)"
            },
            "description": "Target currencies for price conversion"
          },
          "include_24h_change": {
            "type": "boolean",
            "description": "Include 24-hour price change percentage"
          },
          "include_market_cap": {
            "type": "boolean",
            "description": "Include market capitalization"
          },
          "include_volume": {
            "type": "boolean",
            "description": "Include 24-hour trading volume"
          }
        },
        "required": [
          "coins"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.market.overview",
      "description": "Get cryptocurrency market data by category",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "defi",
              "layer-1",
              "layer-2",
              "gaming",
              "ai-big-data",
              "meme-token",
              "stablecoins",
              "nft",
              "exchange-based-tokens",
              "real-world-assets"
            ],
            "description": "Filter by market category"
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "market_cap_desc",
              "market_cap_asc",
              "volume_desc",
              "price_desc",
              "price_change_24h_desc"
            ],
            "description": "Sort order for results"
          },
          "limit": {
            "type": "integer",
            "maximum": 250,
            "description": "Max number of results (1-250)"
          },
          "include_sparkline": {
            "type": "boolean",
            "description": "Include 7-day sparkline price data"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.coin.detail",
      "description": "Get detailed information about a cryptocurrency",
      "inputSchema": {
        "type": "object",
        "properties": {
          "coin_id": {
            "type": "string",
            "description": "CoinGecko coin ID (e.g. bitcoin, ethereum)"
          },
          "include_description": {
            "type": "boolean",
            "description": "Include coin description text"
          },
          "include_developer": {
            "type": "boolean",
            "description": "Include developer/GitHub stats"
          },
          "include_community": {
            "type": "boolean",
            "description": "Include community/social stats"
          }
        },
        "required": [
          "coin_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.price.history",
      "description": "Get price history for a cryptocurrency",
      "inputSchema": {
        "type": "object",
        "properties": {
          "coin_id": {
            "type": "string",
            "description": "CoinGecko coin ID (e.g. bitcoin, ethereum)"
          },
          "days": {
            "type": "integer",
            "maximum": 365,
            "description": "Number of days of history (1-365)"
          },
          "interval": {
            "type": "string",
            "enum": [
              "5m",
              "hourly",
              "daily"
            ],
            "description": "Data point interval for price history (5m, hourly, or daily)"
          },
          "format": {
            "type": "string",
            "enum": [
              "timeseries",
              "ohlcv"
            ],
            "description": "Response format: timeseries (price points) or ohlcv (candlestick data)"
          }
        },
        "required": [
          "coin_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.trending.get",
      "description": "Get trending cryptocurrencies",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_nfts": {
            "type": "boolean",
            "description": "Include trending NFT collections"
          },
          "include_categories": {
            "type": "boolean",
            "description": "Include trending categories"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.global.stats",
      "description": "Get global cryptocurrency market statistics",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_defi": {
            "type": "boolean",
            "description": "Include DeFi-specific global stats"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.dex.pools",
      "description": "Get DEX liquidity pool data",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for pool name or token"
          },
          "network": {
            "type": "string",
            "enum": [
              "ethereum",
              "bsc",
              "polygon",
              "arbitrum",
              "solana",
              "base",
              "avalanche",
              "optimism"
            ],
            "description": "Blockchain network to query (e.g. ethereum, bsc, polygon, solana)"
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "volume_24h",
              "liquidity",
              "price_change_24h",
              "transactions_24h"
            ],
            "description": "Sort order for pool results"
          },
          "limit": {
            "type": "integer",
            "maximum": 50,
            "description": "Max number of results (1-50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.token.lookup",
      "description": "Get token info by contract address",
      "inputSchema": {
        "type": "object",
        "properties": {
          "contract_address": {
            "type": "string",
            "description": "Token contract address (e.g. 0x...)"
          },
          "network": {
            "type": "string",
            "enum": [
              "ethereum",
              "bsc",
              "polygon",
              "arbitrum",
              "solana",
              "base",
              "avalanche",
              "optimism"
            ],
            "description": "Blockchain network to query (e.g. ethereum, bsc, polygon, solana)"
          }
        },
        "required": [
          "contract_address"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.coin.search",
      "description": "Search for cryptocurrencies by name or symbol",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for coin name, symbol, or ID"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.market.search",
      "description": "Search prediction markets on Polymarket",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for prediction markets"
          },
          "category": {
            "type": "string",
            "enum": [
              "politics",
              "crypto",
              "sports",
              "finance",
              "science",
              "culture",
              "geopolitics",
              "iran",
              "economics"
            ],
            "description": "Filter by market category"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "resolved",
              "all"
            ],
            "description": "Filter by market status"
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "volume",
              "newest",
              "ending_soon",
              "probability_high",
              "probability_low"
            ],
            "description": "Sort order for results"
          },
          "limit": {
            "type": "integer",
            "maximum": 100,
            "description": "Max number of results (1-100)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.market.detail",
      "description": "Get detailed info about a prediction market",
      "inputSchema": {
        "type": "object",
        "properties": {
          "market_id": {
            "type": "string",
            "description": "Polymarket condition ID or slug"
          },
          "include_orderbook": {
            "type": "boolean",
            "description": "Include current order book snapshot"
          },
          "include_history": {
            "type": "boolean",
            "description": "Include recent price history"
          }
        },
        "required": [
          "market_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.market.prices",
      "description": "Get midpoint price for a prediction market token",
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_id": {
            "type": "string",
            "description": "Polymarket CLOB token ID"
          }
        },
        "required": [
          "token_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.market.history",
      "description": "Get price history for a prediction market",
      "inputSchema": {
        "type": "object",
        "properties": {
          "market_id": {
            "type": "string",
            "description": "Polymarket condition ID"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1h",
              "4h",
              "1d",
              "1w"
            ],
            "description": "Price data interval for history (1h, 4h, 1d, or 1w)"
          },
          "days": {
            "type": "integer",
            "maximum": 365,
            "description": "Number of days of history (1-365)"
          }
        },
        "required": [
          "market_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.market.orderbook",
      "description": "Get order book for a prediction market",
      "inputSchema": {
        "type": "object",
        "properties": {
          "market_id": {
            "type": "string",
            "description": "Polymarket condition ID"
          },
          "depth": {
            "type": "integer",
            "maximum": 50,
            "description": "Number of price levels per side (1-50)"
          }
        },
        "required": [
          "market_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.market.trending",
      "description": "Get trending prediction markets",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sort_by": {
            "type": "string",
            "enum": [
              "volume_24h",
              "newest",
              "biggest_move",
              "ending_soon"
            ],
            "description": "Sort order for trending markets"
          },
          "category": {
            "type": "string",
            "enum": [
              "politics",
              "crypto",
              "sports",
              "finance",
              "science",
              "culture",
              "geopolitics"
            ],
            "description": "Filter by market category"
          },
          "limit": {
            "type": "integer",
            "maximum": 50,
            "description": "Max number of results (1-50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.trading.place_order",
      "description": "Place a limit order on Polymarket",
      "inputSchema": {
        "type": "object",
        "properties": {
          "token_id": {
            "type": "string",
            "description": "Polymarket CLOB token ID to trade"
          },
          "price": {
            "type": "number",
            "description": "Limit price between 0.01 and 0.99",
            "minimum": 0.01,
            "maximum": 0.99
          },
          "side": {
            "type": "string",
            "enum": [
              "buy",
              "sell"
            ],
            "description": "Order side: buy or sell"
          },
          "size": {
            "type": "number",
            "description": "Order size in USDC units",
            "minimum": 1
          },
          "order_type": {
            "type": "string",
            "enum": [
              "GTC",
              "GTD",
              "FOK"
            ],
            "description": "Order type: Good-Til-Cancelled, Good-Til-Date, Fill-Or-Kill"
          },
          "tick_size": {
            "type": "string",
            "description": "Minimum price increment (e.g. 0.01, 0.001)"
          },
          "neg_risk": {
            "type": "boolean",
            "description": "Whether this is a negative risk market"
          }
        },
        "required": [
          "token_id",
          "price",
          "side",
          "size"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.trading.cancel_order",
      "description": "Cancel an open order on Polymarket",
      "inputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "Polymarket order ID to cancel (from open_orders response)"
          }
        },
        "required": [
          "order_id"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.trading.open_orders",
      "description": "Get open orders on Polymarket",
      "inputSchema": {
        "type": "object",
        "properties": {
          "market_id": {
            "type": "string",
            "description": "Filter orders by market condition ID"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.trading.history",
      "description": "Get trade history on Polymarket",
      "inputSchema": {
        "type": "object",
        "properties": {
          "market_id": {
            "type": "string",
            "description": "Filter trades by market condition ID"
          },
          "limit": {
            "type": "integer",
            "maximum": 100,
            "description": "Max number of results (1-100)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "polymarket.account.balance",
      "description": "Get balance/allowance on Polymarket",
      "inputSchema": {
        "type": "object",
        "properties": {
          "asset_type": {
            "type": "string",
            "enum": [
              "COLLATERAL",
              "CONDITIONAL"
            ],
            "description": "Asset type: COLLATERAL (USDC) or CONDITIONAL (outcome tokens)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sabre.flights.search",
      "description": "Search for real-time flight offers with prices between airports (Sabre GDS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Origin airport IATA code (e.g. JFK, LAX)",
            "minLength": 3,
            "maxLength": 3
          },
          "destination": {
            "type": "string",
            "description": "Destination airport IATA code (e.g. CDG, LHR)",
            "minLength": 3,
            "maxLength": 3
          },
          "departure_date": {
            "type": "string",
            "description": "Departure date in YYYY-MM-DD format"
          },
          "return_date": {
            "type": "string",
            "description": "Return date in YYYY-MM-DD format for round trips"
          },
          "point_of_sale": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "2-letter country code for pricing (e.g. US, GB)",
            "default": "US"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max number of flight offers (1-50)"
          }
        },
        "required": [
          "origin",
          "destination",
          "departure_date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sabre.flights.destinations",
      "description": "Find cheapest flight destinations from an origin airport",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Origin airport IATA code (e.g. JFK, LAX)",
            "minLength": 3,
            "maxLength": 3
          },
          "departure_date": {
            "type": "string",
            "description": "Departure date in YYYY-MM-DD format"
          },
          "return_date": {
            "type": "string",
            "description": "Return date in YYYY-MM-DD format"
          },
          "point_of_sale": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "2-letter country code for pricing (e.g. US, GB)",
            "default": "US"
          },
          "max_fare": {
            "type": "number",
            "minimum": 0,
            "description": "Maximum fare in USD to filter results"
          }
        },
        "required": [
          "origin",
          "departure_date",
          "return_date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sabre.reference.airline",
      "description": "Look up airline details by IATA or ICAO code",
      "inputSchema": {
        "type": "object",
        "properties": {
          "airline_code": {
            "type": "string",
            "description": "Airline IATA (2-char) or ICAO (3-char) code",
            "minLength": 2,
            "maxLength": 3
          }
        },
        "required": [
          "airline_code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sabre.reference.themes",
      "description": "Get travel theme categories (beach, skiing, romantic, etc.)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "description": "Response locale (e.g. en-US, de-DE)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "amadeus.flights.search",
      "description": "Search for real-time flight offers between airports with prices, airlines, stops, and duration (Amadeus)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Origin airport IATA code (e.g. JFK, LAX)",
            "minLength": 3,
            "maxLength": 3
          },
          "destination": {
            "type": "string",
            "description": "Destination airport IATA code (e.g. CDG, LHR)",
            "minLength": 3,
            "maxLength": 3
          },
          "departure_date": {
            "type": "string",
            "description": "Departure date in YYYY-MM-DD format"
          },
          "return_date": {
            "type": "string",
            "description": "Return date in YYYY-MM-DD format for round trips"
          },
          "adults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Number of adult passengers (1-9)",
            "default": 1
          },
          "travel_class": {
            "type": "string",
            "enum": [
              "ECONOMY",
              "PREMIUM_ECONOMY",
              "BUSINESS",
              "FIRST"
            ],
            "description": "Cabin class: ECONOMY, PREMIUM_ECONOMY, BUSINESS, or FIRST (default ECONOMY)",
            "default": "ECONOMY"
          },
          "nonstop": {
            "type": "boolean",
            "description": "Only return non-stop flights",
            "default": false
          },
          "max_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max number of flight offers (1-50)",
            "default": 10
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "Price currency ISO code (e.g. USD, EUR)",
            "default": "USD"
          }
        },
        "required": [
          "origin",
          "destination",
          "departure_date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "amadeus.flights.price",
      "description": "Confirm and get final pricing for a flight offer from Amadeus flight search",
      "inputSchema": {
        "type": "object",
        "properties": {
          "flight_offer": {
            "type": "object",
            "additionalProperties": {},
            "description": "Flight offer object from flight_search results"
          }
        },
        "required": [
          "flight_offer"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "amadeus.flights.status",
      "description": "Get real-time status of a specific flight \u2014 delays, cancellations, gate info (Amadeus)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "carrier_code": {
            "type": "string",
            "description": "Airline IATA or ICAO code (e.g. AA, UAL)",
            "minLength": 2,
            "maxLength": 3
          },
          "flight_number": {
            "type": "string",
            "description": "Flight number (e.g. 100, 1234)",
            "minLength": 1,
            "maxLength": 5
          },
          "date": {
            "type": "string",
            "description": "Flight date in YYYY-MM-DD format"
          }
        },
        "required": [
          "carrier_code",
          "flight_number",
          "date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "amadeus.airports.search",
      "description": "Search airports and cities by keyword or IATA code with autocomplete (Amadeus)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "Airport or city name to search (e.g. London, JFK)",
            "minLength": 1,
            "maxLength": 100
          },
          "subType": {
            "type": "string",
            "enum": [
              "AIRPORT",
              "CITY"
            ],
            "description": "Filter by location type"
          }
        },
        "required": [
          "keyword"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "amadeus.airports.nearest",
      "description": "Find nearest airports by geographic coordinates (Amadeus)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees (-90 to 90)",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees (-180 to 180)",
            "minimum": -180,
            "maximum": 180
          },
          "radius": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Search radius in km (1-500)",
            "default": 500
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "amadeus.airports.routes",
      "description": "Get all direct flight destinations from an airport (Amadeus)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "airport_code": {
            "type": "string",
            "description": "Airport IATA code (e.g. JFK, LAX)",
            "minLength": 3,
            "maxLength": 3
          }
        },
        "required": [
          "airport_code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "amadeus.reference.airline",
      "description": "Look up airline details by IATA or ICAO code (Amadeus)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "airline_code": {
            "type": "string",
            "description": "Airline IATA (2-char) or ICAO (3-char) code",
            "minLength": 2,
            "maxLength": 3
          }
        },
        "required": [
          "airline_code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aviasales.flights.search",
      "description": "Search for flights between airports",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Departure city or airport IATA code (e.g. MOW, JFK, BKK)",
            "minLength": 2,
            "maxLength": 4
          },
          "destination": {
            "type": "string",
            "minLength": 2,
            "maxLength": 4,
            "description": "Arrival IATA code (omit to search all destinations)"
          },
          "departure_date": {
            "type": "string",
            "description": "Departure date in YYYY-MM-DD format (filters results to this date and later)"
          },
          "direct_only": {
            "type": "boolean",
            "description": "Only show non-stop flights (default false)"
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "Currency code for prices (default usd)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Max number of results to return (default 10)"
          }
        },
        "required": [
          "origin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aviasales.flights.calendar",
      "description": "Get flight price calendar for a route",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Departure city or airport IATA code (e.g. MOW, JFK)",
            "minLength": 2,
            "maxLength": 4
          },
          "destination": {
            "type": "string",
            "description": "Arrival IATA code (e.g. BKK, LON)",
            "minLength": 2,
            "maxLength": 4
          },
          "month": {
            "type": "string",
            "description": "Month in YYYY-MM format to get calendar prices (e.g. 2026-06)"
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "Currency code for prices (default usd)"
          }
        },
        "required": [
          "origin",
          "destination"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aviasales.flights.cheap",
      "description": "Find cheapest flights from an origin",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Departure city or airport IATA code (e.g. MOW, BER)",
            "minLength": 2,
            "maxLength": 4
          },
          "destination": {
            "type": "string",
            "minLength": 2,
            "maxLength": 4,
            "description": "Arrival IATA code (omit to find cheapest flights to anywhere)"
          },
          "departure_month": {
            "type": "string",
            "description": "Filter by departure month in YYYY-MM format"
          },
          "direct_only": {
            "type": "boolean",
            "description": "Only return direct (non-stop) flights"
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "Currency code for prices (default usd)"
          }
        },
        "required": [
          "origin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aviasales.flights.popular",
      "description": "Get popular flight routes from an origin",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Departure city IATA code (e.g. MOW, NYC, LON)",
            "minLength": 2,
            "maxLength": 4
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "Currency code for prices (default usd)"
          }
        },
        "required": [
          "origin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aviasales.flights.nearby",
      "description": "Find nearby flight destinations",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Departure city IATA code (e.g. MOW)",
            "minLength": 2,
            "maxLength": 4
          },
          "destination": {
            "type": "string",
            "description": "Target destination IATA code \u2014 also searches nearby airports",
            "minLength": 2,
            "maxLength": 4
          },
          "depart_date": {
            "type": "string",
            "description": "Departure date in YYYY-MM-DD format"
          },
          "return_date": {
            "type": "string",
            "description": "Return date in YYYY-MM-DD format"
          },
          "flexibility": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7,
            "description": "Date flexibility in days (+/- from given dates)"
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "Currency code for prices (default usd)"
          }
        },
        "required": [
          "origin",
          "destination"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aviasales.reference.airport",
      "description": "Look up airport by name or code",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Airport name, city name, or IATA code to search for (e.g. Bangkok, JFK, Heathrow)",
            "minLength": 1
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hyperliquid.markets.data",
      "description": "Get market metadata and mid prices for all perpetual pairs on Hyperliquid",
      "inputSchema": {
        "type": "object",
        "properties": {
          "coin": {
            "type": "string",
            "description": "Specific coin symbol (e.g. BTC, ETH). Omit for all markets."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hyperliquid.markets.orderbook",
      "description": "Get L2 order book depth for a perpetual pair on Hyperliquid",
      "inputSchema": {
        "type": "object",
        "properties": {
          "coin": {
            "type": "string",
            "description": "Coin symbol (e.g. BTC, ETH)"
          },
          "n_sig_figs": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Number of significant figures for price levels"
          },
          "mantissa": {
            "type": "integer",
            "description": "Mantissa for price rounding"
          }
        },
        "required": [
          "coin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hyperliquid.markets.klines",
      "description": "Get candlestick (OHLCV) data for a perpetual pair on Hyperliquid",
      "inputSchema": {
        "type": "object",
        "properties": {
          "coin": {
            "type": "string",
            "description": "Coin symbol (e.g. BTC, ETH)"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1m",
              "3m",
              "5m",
              "15m",
              "30m",
              "1h",
              "2h",
              "4h",
              "6h",
              "8h",
              "12h",
              "1d",
              "3d",
              "1w",
              "1M"
            ],
            "description": "Candlestick interval (1m, 5m, 15m, 1h, 4h, 1d, 1w)"
          },
          "start_time": {
            "type": "integer",
            "description": "Start time in milliseconds since epoch"
          },
          "end_time": {
            "type": "integer",
            "description": "End time in milliseconds since epoch"
          }
        },
        "required": [
          "coin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hyperliquid.account.positions",
      "description": "Get open positions for a user wallet on Hyperliquid",
      "inputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "string",
            "description": "User wallet address (0x...)"
          }
        },
        "required": [
          "user"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hyperliquid.account.summary",
      "description": "Get account summary and margin details for a user wallet on Hyperliquid",
      "inputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "string",
            "description": "User wallet address (0x...)"
          }
        },
        "required": [
          "user"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hyperliquid.vaults.details",
      "description": "Get vault details including performance and TVL on Hyperliquid",
      "inputSchema": {
        "type": "object",
        "properties": {
          "vault_address": {
            "type": "string",
            "description": "Vault contract address (0x...)"
          }
        },
        "required": [
          "vault_address"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ticketmaster.events.search",
      "description": "Search for events (concerts, sports, theatre, festivals) by keyword, city, date, or category across 26+ countries (Ticketmaster)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "Search keyword (e.g. \"concert\", \"NBA\", \"Taylor Swift\")"
          },
          "city": {
            "type": "string",
            "description": "City name to filter events (e.g. \"New York\", \"London\")"
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\", \"DE\")"
          },
          "stateCode": {
            "type": "string",
            "description": "State code for US/CA events (e.g. \"NY\", \"CA\", \"ON\")"
          },
          "classificationName": {
            "type": "string",
            "description": "Event category filter (e.g. \"Music\", \"Sports\", \"Arts & Theatre\")"
          },
          "startDateTime": {
            "type": "string",
            "description": "Start date/time in ISO 8601 format with Z suffix (e.g. \"2026-04-01T00:00:00Z\")"
          },
          "endDateTime": {
            "type": "string",
            "description": "End date/time in ISO 8601 format with Z suffix (e.g. \"2026-12-31T23:59:59Z\")"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of results per page (1-200, default 20)"
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Page number for pagination (0-based, default 0)"
          },
          "sort": {
            "type": "string",
            "description": "Sort order (e.g. \"date,asc\", \"relevance,desc\", \"name,asc\")"
          },
          "locale": {
            "type": "string",
            "description": "Locale for response (e.g. \"en-us\", \"fr-fr\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ticketmaster.events.details",
      "description": "Get full details for an event \u2014 dates, venues, prices, images, classifications, seat map (Ticketmaster)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Ticketmaster event ID (e.g. \"vvG1iZ4JkS1GKT\")"
          },
          "locale": {
            "type": "string",
            "description": "Locale for response (e.g. \"en-us\")"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ticketmaster.events.nearby",
      "description": "Find events near geographic coordinates with radius filter (Ticketmaster)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "latlong": {
            "type": "string",
            "description": "Latitude,longitude coordinates (e.g. \"40.7128,-74.0060\" for NYC)"
          },
          "radius": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Search radius (default unit: miles, max 500)"
          },
          "unit": {
            "type": "string",
            "enum": [
              "miles",
              "km"
            ],
            "description": "Distance unit for radius (default: miles)"
          },
          "keyword": {
            "type": "string",
            "description": "Optional keyword filter (e.g. \"jazz\", \"basketball\")"
          },
          "classificationName": {
            "type": "string",
            "description": "Event category filter (e.g. \"Music\", \"Sports\")"
          },
          "startDateTime": {
            "type": "string",
            "description": "Start date/time in ISO 8601 format with Z suffix"
          },
          "endDateTime": {
            "type": "string",
            "description": "End date/time in ISO 8601 format with Z suffix"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of results per page (1-200, default 20)"
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Page number for pagination (0-based, default 0)"
          },
          "sort": {
            "type": "string",
            "description": "Sort order (e.g. \"date,asc\", \"distance,asc\")"
          },
          "locale": {
            "type": "string",
            "description": "Locale for response (e.g. \"en-us\")"
          }
        },
        "required": [
          "latlong"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ticketmaster.events.by_artist",
      "description": "Find events by artist or performer name with optional country and date filters (Ticketmaster)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "Artist/performer name to search (e.g. \"Beyonce\", \"Coldplay\")"
          },
          "attractionId": {
            "type": "string",
            "description": "Ticketmaster attraction ID for exact artist match"
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\")"
          },
          "startDateTime": {
            "type": "string",
            "description": "Start date/time in ISO 8601 format with Z suffix"
          },
          "endDateTime": {
            "type": "string",
            "description": "End date/time in ISO 8601 format with Z suffix"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of results per page (1-200, default 20)"
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Page number for pagination (0-based, default 0)"
          },
          "sort": {
            "type": "string",
            "description": "Sort order (e.g. \"date,asc\", \"relevance,desc\")"
          },
          "locale": {
            "type": "string",
            "description": "Locale for response (e.g. \"en-us\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ticketmaster.events.by_venue",
      "description": "Get upcoming events at a specific venue by venue ID (Ticketmaster)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "venueId": {
            "type": "string",
            "description": "Ticketmaster venue ID (e.g. \"KovZpZA7AAEA\" for Madison Square Garden)"
          },
          "keyword": {
            "type": "string",
            "description": "Optional keyword filter for events at this venue"
          },
          "startDateTime": {
            "type": "string",
            "description": "Start date/time in ISO 8601 format with Z suffix"
          },
          "endDateTime": {
            "type": "string",
            "description": "End date/time in ISO 8601 format with Z suffix"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of results per page (1-200, default 20)"
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Page number for pagination (0-based, default 0)"
          },
          "sort": {
            "type": "string",
            "description": "Sort order (e.g. \"date,asc\", \"relevance,desc\")"
          },
          "locale": {
            "type": "string",
            "description": "Locale for response (e.g. \"en-us\")"
          }
        },
        "required": [
          "venueId"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ticketmaster.events.trending",
      "description": "Get trending and popular events sorted by relevance (Ticketmaster)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\")"
          },
          "classificationName": {
            "type": "string",
            "description": "Event category filter (e.g. \"Music\", \"Sports\")"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of results per page (1-200, default 20)"
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Page number for pagination (0-based, default 0)"
          },
          "locale": {
            "type": "string",
            "description": "Locale for response (e.g. \"en-us\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ticketmaster.events.categories",
      "description": "Get all event classification categories \u2014 segments, genres, sub-genres (Ticketmaster)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of results per page (1-200, default 20)"
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Page number for pagination (0-based, default 0)"
          },
          "locale": {
            "type": "string",
            "description": "Locale for response (e.g. \"en-us\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tmdb.movies.search",
      "description": "Search for movies, TV shows, and people by name across 1M+ titles in 39 languages (TMDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query (movie, TV show, or person name)"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en-US\", \"de-DE\", \"ja-JP\"). Default: en-US"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Page number (1-500, default 1)"
          },
          "include_adult": {
            "type": "boolean",
            "description": "Include adult content in results (default false)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tmdb.movies.details",
      "description": "Get full movie details \u2014 cast, crew, trailers, ratings, streaming providers, runtime, budget, revenue (TMDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "TMDB movie ID (e.g. 550 for Fight Club, 27205 for Inception)"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en-US\"). Default: en-US"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tmdb.movies.discover",
      "description": "Discover movies or TV shows by genre, year, rating, language, and sort order (TMDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "movie",
              "tv"
            ],
            "description": "Content type to discover: \"movie\" or \"tv\" (default \"movie\")"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en-US\"). Default: en-US"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Page number (1-500, default 1)"
          },
          "sort_by": {
            "type": "string",
            "description": "Sort field (e.g. \"popularity.desc\", \"vote_average.desc\", \"revenue.desc\", \"primary_release_date.desc\")"
          },
          "with_genres": {
            "type": "string",
            "description": "Comma-separated genre IDs to filter (e.g. \"28,12\" for Action+Adventure)"
          },
          "year": {
            "type": "integer",
            "description": "Filter by release year (movies only)"
          },
          "primary_release_year": {
            "type": "integer",
            "description": "Filter by primary release year (movies only)"
          },
          "first_air_date_year": {
            "type": "integer",
            "description": "Filter by first air date year (TV only)"
          },
          "vote_average_gte": {
            "type": "number",
            "minimum": 0,
            "maximum": 10,
            "description": "Minimum vote average (0-10)"
          },
          "vote_average_lte": {
            "type": "number",
            "minimum": 0,
            "maximum": 10,
            "description": "Maximum vote average (0-10)"
          },
          "with_original_language": {
            "type": "string",
            "description": "ISO 639-1 original language filter (e.g. \"en\", \"ko\", \"ja\")"
          },
          "region": {
            "type": "string",
            "description": "ISO 3166-1 region for release dates (e.g. \"US\", \"GB\")"
          },
          "include_adult": {
            "type": "boolean",
            "description": "Include adult content (default false)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tmdb.movies.trending",
      "description": "Get trending movies, TV shows, or people \u2014 daily or weekly (TMDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "movie",
              "tv",
              "person",
              "all"
            ],
            "description": "Content type: \"movie\", \"tv\", \"person\", or \"all\" (default \"movie\")"
          },
          "window": {
            "type": "string",
            "enum": [
              "day",
              "week"
            ],
            "description": "Time window: \"day\" or \"week\" (default \"week\")"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en-US\"). Default: en-US"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Page number (1-500, default 1)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tmdb.movies.similar",
      "description": "Get movie recommendations based on a movie ID \u2014 similar genres, themes, cast (TMDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "TMDB movie ID to get recommendations for"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en-US\"). Default: en-US"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Page number (1-500, default 1)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tmdb.movies.person",
      "description": "Search for actors, directors, or crew by name, or get full filmography by person ID (TMDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Person name to search for (e.g. \"Tom Hanks\", \"Miyazaki\"). Use either query or id"
          },
          "id": {
            "type": "integer",
            "description": "TMDB person ID for detailed filmography (e.g. 31 for Tom Hanks). Use either id or query"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en-US\"). Default: en-US"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Page number for search results (1-500, default 1)"
          },
          "include_adult": {
            "type": "boolean",
            "description": "Include adult content (default false)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tmdb.movies.where_to_watch",
      "description": "Find streaming, rental, and purchase options for a movie or TV show by country (TMDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "TMDB movie or TV show ID"
          },
          "type": {
            "type": "string",
            "enum": [
              "movie",
              "tv"
            ],
            "description": "Content type: \"movie\" or \"tv\" (default \"movie\")"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.nutrition.food_search",
      "description": "Search 350K+ foods in the USDA FoodData Central database \u2014 nutrition facts, ingredients, branded products, and reference foods",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Food search query (e.g. \"chicken breast\", \"brown rice\", \"vitamin D milk\")"
          },
          "data_type": {
            "type": "string",
            "enum": [
              "Foundation",
              "Branded",
              "SR Legacy",
              "all"
            ],
            "description": "USDA data type filter: \"Foundation\" (reference foods), \"Branded\" (brand-name products), \"SR Legacy\" (legacy reference), \"all\" (default)"
          },
          "brand_owner": {
            "type": "string",
            "description": "Filter by brand owner name (e.g. \"General Mills\", \"Tyson\")"
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Results per page (1-200, default 50)"
          },
          "page_number": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.nutrition.food_details",
      "description": "Get detailed nutrition data for a food item \u2014 up to 150 nutrients, portions, serving sizes, ingredients (USDA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fdc_id": {
            "type": "integer",
            "description": "USDA FoodData Central food ID (e.g. 171705 for chicken breast)"
          }
        },
        "required": [
          "fdc_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.safety.drug_events",
      "description": "Search FDA FAERS database for drug adverse event reports \u2014 side effects, reactions, patient demographics (OpenFDA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "OpenFDA search query for adverse events (e.g. \"patient.drug.medicinalproduct:aspirin\", \"patient.reaction.reactionmeddrapt:headache\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results (1-100, default 10)"
          },
          "skip": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of results to skip for pagination"
          }
        },
        "required": [
          "search"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.safety.food_recalls",
      "description": "Search FDA food enforcement and recall reports \u2014 contamination, mislabeling, safety alerts (OpenFDA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "OpenFDA search query for food recalls (e.g. \"reason_for_recall:salmonella\", \"recalling_firm:\"Tyson\"\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results (1-100, default 10)"
          },
          "skip": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of results to skip for pagination"
          },
          "status": {
            "type": "string",
            "enum": [
              "Ongoing",
              "Completed",
              "Terminated"
            ],
            "description": "Filter by recall status"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.safety.drug_labels",
      "description": "Search drug labeling data \u2014 indications, dosage, warnings, interactions, contraindications (OpenFDA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "OpenFDA search query for drug labels (e.g. \"openfda.brand_name:ibuprofen\", \"openfda.generic_name:metformin\", \"drug_interactions:warfarin\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results (1-100, default 10)"
          },
          "skip": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of results to skip for pagination"
          }
        },
        "required": [
          "search"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.supplements.search",
      "description": "Search 200K+ dietary supplement labels in the NIH DSLD database \u2014 vitamins, minerals, herbal products",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Supplement search query (e.g. \"vitamin D\", \"fish oil\", \"probiotics\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results (1-100, default 25)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Result offset for pagination"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.supplements.details",
      "description": "Get full supplement label data \u2014 ingredients, amounts per serving, daily values, target groups (NIH DSLD)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dsld_id": {
            "type": "integer",
            "description": "NIH DSLD supplement label ID"
          }
        },
        "required": [
          "dsld_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.currency.rates",
      "description": "Get currency exchange rates for 200+ fiat and crypto currencies with optional historical dates (fawazahmed0 CDN)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "base": {
            "type": "string",
            "description": "Base currency code (e.g. \"usd\", \"eur\", \"btc\"). Lowercase. 200+ currencies supported.",
            "minLength": 2,
            "maxLength": 10
          },
          "date": {
            "type": "string",
            "description": "Historical date in YYYY-MM-DD format. Omit for latest rates."
          },
          "currencies": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Currency code (e.g. \"eur\", \"gbp\", \"jpy\")"
            },
            "maxItems": 50,
            "description": "Filter to specific target currencies (e.g. [\"eur\",\"gbp\"]). Omit for all."
          }
        },
        "required": [
          "base"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.currency.ecb",
      "description": "Get official European Central Bank reference exchange rates for ~33 fiat currencies (Frankfurter/ECB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "base": {
            "type": "string",
            "description": "Base currency code, uppercase (e.g. \"USD\", \"EUR\"). ~33 ECB currencies.",
            "minLength": 3,
            "maxLength": 3
          },
          "date": {
            "type": "string",
            "description": "Historical date in YYYY-MM-DD format. Omit for latest ECB rates."
          },
          "currencies": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Currency code (e.g. \"EUR\", \"GBP\", \"JPY\")"
            },
            "maxItems": 33,
            "description": "Filter to specific target currencies (e.g. [\"EUR\",\"GBP\"]). Omit for all ECB currencies."
          }
        },
        "required": [
          "base"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.macro.indicator",
      "description": "Get US economic data from 816K+ FRED series \u2014 GDP, CPI, unemployment, interest rates, money supply (Federal Reserve)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "series_id": {
            "type": "string",
            "description": "FRED series ID (e.g. \"GDP\", \"CPIAUCSL\", \"UNRATE\", \"DFF\", \"T10Y2Y\"). Browse at fred.stlouisfed.org.",
            "minLength": 1,
            "maxLength": 50
          },
          "observation_start": {
            "type": "string",
            "description": "Start date for observations in YYYY-MM-DD format."
          },
          "observation_end": {
            "type": "string",
            "description": "End date for observations in YYYY-MM-DD format."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100000,
            "description": "Maximum number of observations to return (default 100000)."
          },
          "sort_order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Sort order by observation date. Default \"asc\"."
          }
        },
        "required": [
          "series_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.macro.country",
      "description": "Get global development indicators from World Bank \u2014 GDP, population, inflation, trade, poverty for 200+ countries",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "description": "ISO 3166 country code (e.g. \"US\", \"DE\", \"CHN\") or \"all\" for all countries.",
            "minLength": 2,
            "maxLength": 3
          },
          "indicator_id": {
            "type": "string",
            "description": "World Bank indicator ID (e.g. \"NY.GDP.MKTP.CD\" for GDP, \"SP.POP.TOTL\" for population, \"FP.CPI.TOTL.ZG\" for inflation).",
            "minLength": 1,
            "maxLength": 100
          },
          "date_range": {
            "type": "string",
            "description": "Year or year range (e.g. \"2023\" or \"2010:2023\"). Omit for all available years."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "Results per page (default 50, max 1000)."
          }
        },
        "required": [
          "country_code",
          "indicator_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.treasury.data",
      "description": "Get US Treasury fiscal data \u2014 interest rates on federal debt, national debt, debt outstanding, gold reserves, exchange rates",
      "inputSchema": {
        "type": "object",
        "properties": {
          "endpoint": {
            "type": "string",
            "enum": [
              "avg_interest_rates",
              "debt_to_penny",
              "debt_outstanding",
              "top_federal",
              "gold_reserve",
              "exchange_rates_report"
            ],
            "description": "Treasury dataset endpoint: avg_interest_rates (interest rates on federal debt), debt_to_penny (daily national debt), debt_outstanding (debt by security type), top_federal (top federal spending), gold_reserve (US gold reserves), exchange_rates_report (Treasury exchange rates)."
          },
          "filter": {
            "type": "string",
            "description": "Filter expression (e.g. \"record_date:gte:2024-01-01,security_desc:eq:Treasury Bills\"). See Treasury API docs."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "description": "Number of records per page (default 100, max 10000)."
          },
          "sort": {
            "type": "string",
            "description": "Sort field with direction prefix (e.g. \"-record_date\" for newest first). Default: \"-record_date\"."
          }
        },
        "required": [
          "endpoint"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.banking.iban",
      "description": "Validate an IBAN number and get associated bank data \u2014 BIC/SWIFT code, bank name, city (OpenIBAN)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "iban": {
            "type": "string",
            "description": "IBAN to validate (e.g. \"DE89370400440532013000\"). Spaces are stripped automatically.",
            "minLength": 15,
            "maxLength": 34
          }
        },
        "required": [
          "iban"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.artists.search",
      "description": "Search for music artists by name across 2M+ artists \u2014 biography, country, tags, aliases (MusicBrainz)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for artist name (e.g. \"Radiohead\", \"Miles Davis\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results to return (1-100, default 25)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Pagination offset for results"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.artists.details",
      "description": "Get detailed artist info by MusicBrainz ID \u2014 tags, ratings, external links, life span, area (MusicBrainz)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mbid": {
            "type": "string",
            "description": "MusicBrainz artist ID (UUID format, e.g. \"a74b1b7f-71a5-4011-9441-d0b5e4122711\")"
          }
        },
        "required": [
          "mbid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.releases.search",
      "description": "Search for albums, singles, and EPs across 50M+ recordings \u2014 title, artist, date (MusicBrainz)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for release/album title (e.g. \"OK Computer\", \"Kind of Blue\"). Supports Lucene syntax: artist:\"Radiohead\" AND release:\"OK Computer\""
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results to return (1-100, default 25)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Pagination offset for results"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.releases.details",
      "description": "Get full release details by MusicBrainz ID \u2014 artist credits, labels, media formats (MusicBrainz)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mbid": {
            "type": "string",
            "description": "MusicBrainz release ID (UUID format). Returns artist credits and label info"
          }
        },
        "required": [
          "mbid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.recordings.search",
      "description": "Search for songs and recordings by title or artist \u2014 duration, release history, artist credits (MusicBrainz)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for song/recording title (e.g. \"Creep\", \"So What\"). Supports Lucene syntax: artist:\"Radiohead\" AND recording:\"Creep\""
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results to return (1-100, default 25)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Pagination offset for results"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.discover.fresh",
      "description": "Discover recently released albums and singles from the past N days \u2014 trending new music (ListenBrainz)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90,
            "description": "Number of days to look back for fresh releases (1-90, default 7)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Max releases to return (1-200, default 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.radio.search",
      "description": "Search 40K+ internet radio stations by name, genre, country, or language \u2014 streaming URLs, bitrate, codec (RadioBrowser)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Station name to search for (e.g. \"BBC Radio\", \"Jazz FM\")"
          },
          "tag": {
            "type": "string",
            "description": "Tag/genre filter (e.g. \"rock\", \"jazz\", \"classical\", \"news\")"
          },
          "country": {
            "type": "string",
            "description": "Country name filter (e.g. \"Germany\", \"United States\")"
          },
          "countrycode": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"DE\", \"GB\")"
          },
          "language": {
            "type": "string",
            "description": "Language filter (e.g. \"english\", \"german\", \"spanish\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max stations to return (1-100, default 25)"
          },
          "order": {
            "type": "string",
            "enum": [
              "name",
              "url",
              "homepage",
              "favicon",
              "tags",
              "country",
              "state",
              "language",
              "votes",
              "codec",
              "bitrate",
              "lastcheckok",
              "lastchecktime",
              "clicktimestamp",
              "clickcount",
              "clicktrend",
              "changetimestamp",
              "random"
            ],
            "description": "Sort order for results"
          },
          "hidebroken": {
            "type": "boolean",
            "description": "Hide broken/offline stations (recommended: true)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aster.exchange.info",
      "description": "Get exchange information and available trading pairs on AsterDEX",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Trading pair symbol to filter (e.g. BTCUSDT). Omit for all pairs."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aster.markets.ticker",
      "description": "Get 24-hour ticker statistics for trading pairs on AsterDEX",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Trading pair symbol (e.g. BTCUSDT). Omit for all pairs."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aster.markets.orderbook",
      "description": "Get order book depth for a trading pair on AsterDEX",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Trading pair symbol (e.g. BTCUSDT)"
          },
          "limit": {
            "type": "integer",
            "minimum": 5,
            "maximum": 1000,
            "description": "Depth limit (default 20)"
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aster.markets.klines",
      "description": "Get candlestick (OHLCV) data for a trading pair on AsterDEX",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Trading pair symbol (e.g. BTCUSDT)"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1m",
              "3m",
              "5m",
              "15m",
              "30m",
              "1h",
              "2h",
              "4h",
              "6h",
              "8h",
              "12h",
              "1d",
              "3d",
              "1w",
              "1M"
            ],
            "description": "Candlestick interval (default 1h)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1500,
            "description": "Number of candles (default 100)"
          },
          "start_time": {
            "type": "integer",
            "description": "Start time in milliseconds since epoch"
          },
          "end_time": {
            "type": "integer",
            "description": "End time in milliseconds since epoch"
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.salary.data",
      "description": "Get US salary and employment timeseries data from BLS \u2014 wage estimates, employment counts, occupational statistics by SOC code and geography",
      "inputSchema": {
        "type": "object",
        "properties": {
          "series_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "BLS series ID (e.g. \"OEUM0000000000000151252004\")",
              "minLength": 1
            },
            "description": "BLS timeseries IDs (e.g. [\"OEUM0000000000000151252004\"] for Software Developers mean salary). Encodes occupation code + geography + data type.",
            "minItems": 1,
            "maxItems": 50
          },
          "start_year": {
            "type": "string",
            "description": "Start year (e.g. \"2020\"). Omit for latest available."
          },
          "end_year": {
            "type": "string",
            "description": "End year (e.g. \"2024\"). Omit for latest available."
          }
        },
        "required": [
          "series_ids"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.occupations.search",
      "description": "Search O*NET occupation taxonomy by keyword \u2014 1,000+ occupations with SOC codes, titles, and relevance scores",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "Search keyword for occupations (e.g. \"software developer\", \"nurse\", \"data analyst\").",
            "minLength": 1,
            "maxLength": 200
          },
          "start": {
            "type": "integer",
            "minimum": 1,
            "description": "Starting index for pagination (1-based). Omit for first page."
          },
          "end": {
            "type": "integer",
            "minimum": 1,
            "description": "Ending index for pagination. Omit for default page size."
          }
        },
        "required": [
          "keyword"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.occupations.details",
      "description": "Get detailed occupation info from O*NET by SOC code \u2014 overview, skills, knowledge, abilities, technology skills, tasks",
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "O*NET SOC occupation code (e.g. \"15-1252.00\" for Software Developers). Get codes from occupation_search.",
            "minLength": 1,
            "maxLength": 20
          },
          "section": {
            "type": "string",
            "enum": [
              "skills",
              "knowledge",
              "abilities",
              "technology_skills",
              "tasks"
            ],
            "description": "Specific section to retrieve. Omit for general overview (title, description, sample titles)."
          }
        },
        "required": [
          "code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.skills.search",
      "description": "Search ESCO (European Skills/Competences/Occupations) taxonomy \u2014 occupations and skills in 27 EU languages",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Search text for EU occupations or skills (e.g. \"software developer\", \"project management\").",
            "minLength": 1,
            "maxLength": 500
          },
          "type": {
            "type": "string",
            "enum": [
              "occupation",
              "skill"
            ],
            "description": "Resource type to search. Default: \"occupation\"."
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "ISO 639-1 language code (e.g. \"en\", \"de\", \"fr\"). Default: \"en\". ESCO supports 27 EU languages."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Results per page (default 25, max 100)."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset for pagination. Omit for first page."
          }
        },
        "required": [
          "text"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.skills.details",
      "description": "Get ESCO resource details by URI \u2014 occupation descriptions, essential/optional skills, ISCO codes, skill relationships",
      "inputSchema": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "ESCO resource URI (e.g. \"http://data.europa.eu/esco/occupation/...\"). Get URIs from esco_search.",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "occupation",
              "skill"
            ],
            "description": "Resource type: \"occupation\" or \"skill\". Default: \"occupation\"."
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "ISO 639-1 language code. Default: \"en\"."
          }
        },
        "required": [
          "uri"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.listings.search",
      "description": "Search global job listings via CareerJet \u2014 title, company, salary, location, contract type across 90+ countries",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string",
            "description": "Job search keywords (e.g. \"software engineer\", \"marketing manager remote\").",
            "minLength": 1,
            "maxLength": 500
          },
          "location": {
            "type": "string",
            "maxLength": 200,
            "description": "Location filter (e.g. \"New York\", \"London\", \"Berlin\"). Omit for worldwide."
          },
          "locale_code": {
            "type": "string",
            "minLength": 2,
            "maxLength": 10,
            "description": "Locale code for results (e.g. \"en_US\", \"en_GB\", \"de_DE\"). Default: \"en_US\"."
          },
          "contract_type": {
            "type": "string",
            "enum": [
              "permanent",
              "contract",
              "temporary",
              "internship",
              "volunteering"
            ],
            "description": "Filter by contract type."
          },
          "work_hours": {
            "type": "string",
            "enum": [
              "full_time",
              "part_time"
            ],
            "description": "Filter by work hours: full_time or part_time"
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "date",
              "salary"
            ],
            "description": "Sort order for results. Default: \"relevance\"."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Page number (1-10). Default: 1."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Results per page (1-100). Default: 20."
          }
        },
        "required": [
          "keywords"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "education.papers.search",
      "description": "Search 250M+ academic papers across all disciplines \u2014 citations, authors, institutions, open access status (OpenAlex)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search text for academic papers (e.g. \"machine learning\", \"CRISPR gene editing\").",
            "minLength": 1,
            "maxLength": 500
          },
          "concept": {
            "type": "string",
            "maxLength": 200,
            "description": "OpenAlex concept ID filter (e.g. \"C41008148\" for Computer Science). Get IDs from OpenAlex concepts API."
          },
          "author": {
            "type": "string",
            "maxLength": 200,
            "description": "Author name or ORCID to filter by (e.g. \"Yoshua Bengio\", \"0000-0001-2345-6789\")."
          },
          "institution": {
            "type": "string",
            "maxLength": 200,
            "description": "Institution name or ROR ID to filter by (e.g. \"MIT\", \"Stanford University\")."
          },
          "year_from": {
            "type": "integer",
            "minimum": 1800,
            "maximum": 2100,
            "description": "Filter papers published from this year (inclusive)."
          },
          "year_to": {
            "type": "integer",
            "minimum": 1800,
            "maximum": 2100,
            "description": "Filter papers published up to this year (inclusive)."
          },
          "open_access_only": {
            "type": "boolean",
            "description": "If true, only return open access papers."
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "cited_by_count",
              "publication_date"
            ],
            "description": "Sort order for results. Default: \"relevance\"."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results to return (1-50). Default: 10."
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "education.papers.details",
      "description": "Get full details for an academic paper by OpenAlex ID or DOI \u2014 authors, citations, abstract, references, open access links (OpenAlex)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "OpenAlex work ID (e.g. \"W2741809807\") or DOI (e.g. \"10.1038/nature12373\"). Get IDs from paper_search.",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "education.colleges.search",
      "description": "Search US colleges and universities \u2014 admissions, tuition, enrollment, earnings, completion rates (College Scorecard)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "description": "School name to search for (e.g. \"MIT\", \"Stanford\", \"Community College\")."
          },
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "US state abbreviation (e.g. \"CA\", \"NY\", \"TX\")."
          },
          "degree_type": {
            "type": "string",
            "enum": [
              "associate",
              "bachelor",
              "graduate"
            ],
            "description": "Filter by predominant degree type awarded."
          },
          "program": {
            "type": "string",
            "maxLength": 200,
            "description": "Field of study filter (e.g. \"Computer Science\", \"Nursing\", \"Business\")."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results to return (1-50). Default: 10."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "education.colleges.details",
      "description": "Get detailed data for a US college by UNITID \u2014 admissions rate, costs, student outcomes, earnings after graduation (College Scorecard)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "school_id": {
            "type": "integer",
            "description": "College Scorecard UNITID (e.g. 166027 for MIT). Get IDs from college_search.",
            "minimum": 0
          }
        },
        "required": [
          "school_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "education.pubmed.search",
      "description": "Search 36M+ biomedical and life science articles \u2014 clinical trials, reviews, meta-analyses with date and type filters (PubMed/NCBI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search text for biomedical literature (e.g. \"COVID-19 vaccine efficacy\", \"BRCA1 breast cancer\").",
            "minLength": 1,
            "maxLength": 500
          },
          "publication_type": {
            "type": "string",
            "enum": [
              "review",
              "clinical-trial",
              "meta-analysis",
              "any"
            ],
            "description": "Filter by publication type. Default: \"any\"."
          },
          "date_from": {
            "type": "string",
            "description": "Start date filter in YYYY/MM/DD format (e.g. \"2023/01/01\")."
          },
          "date_to": {
            "type": "string",
            "description": "End date filter in YYYY/MM/DD format (e.g. \"2024/12/31\")."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results to return (1-50). Default: 10."
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "education.arxiv.search",
      "description": "Search 2.4M+ preprints in physics, math, CS, biology, and more \u2014 full text, authors, categories, PDF links (arXiv)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search text for preprints (e.g. \"transformer architecture\", \"quantum computing\").",
            "minLength": 1,
            "maxLength": 500
          },
          "category": {
            "type": "string",
            "maxLength": 20,
            "description": "arXiv category filter (e.g. \"cs.AI\", \"math.CO\", \"physics.hep-th\", \"q-bio.GN\")."
          },
          "author": {
            "type": "string",
            "maxLength": 200,
            "description": "Author name to filter by (e.g. \"Vaswani\", \"Hinton\")."
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "lastUpdatedDate",
              "submittedDate"
            ],
            "description": "Sort order for results. Default: \"relevance\"."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results to return (1-50). Default: 10."
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "education.crossref.doi",
      "description": "Resolve a DOI to full publication metadata \u2014 title, authors, journal, citations, funding, license (CrossRef)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "doi": {
            "type": "string",
            "description": "DOI to resolve (e.g. \"10.1038/nature12373\", \"10.1145/3292500.3330648\").",
            "minLength": 3,
            "maxLength": 200
          }
        },
        "required": [
          "doi"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.address.geocode",
      "description": "Convert an address, place name, or landmark to geographic coordinates (lat/lon) with structured address data (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Address, place name, or landmark to geocode (e.g. \"1600 Pennsylvania Ave, Washington DC\", \"Eiffel Tower\").",
            "minLength": 1,
            "maxLength": 500
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Result language code (e.g. \"en\", \"de\", \"ru\"). Default: English."
          },
          "country_code": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code to filter results (e.g. \"US\", \"DE\", \"FR\")."
          },
          "type": {
            "type": "string",
            "enum": [
              "city",
              "street",
              "amenity",
              "country"
            ],
            "description": "Filter by result type: city, street, amenity, or country."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "description": "Maximum number of results to return (default 1, max 5)."
          }
        },
        "required": [
          "text"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.address.reverse",
      "description": "Convert geographic coordinates (lat/lon) to a structured address \u2014 street, city, country, postal code (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude of the point to reverse geocode.",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "description": "Longitude of the point to reverse geocode.",
            "minimum": -180,
            "maximum": 180
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Result language code (e.g. \"en\", \"de\", \"ru\"). Default: English."
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.places.search",
      "description": "Search points of interest (restaurants, pharmacies, hotels, attractions) near a location by category and radius (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "string",
            "description": "POI category filter (e.g. \"catering.restaurant\", \"healthcare.pharmacy\", \"tourism.attraction\", \"accommodation.hotel\"). Multiple categories separated by comma.",
            "minLength": 1,
            "maxLength": 200
          },
          "lat": {
            "type": "number",
            "description": "Center latitude for the search area.",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "description": "Center longitude for the search area.",
            "minimum": -180,
            "maximum": 180
          },
          "radius": {
            "type": "integer",
            "minimum": 100,
            "maximum": 50000,
            "description": "Search radius in meters (default 1000, max 50000)."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of results (default 20, max 50)."
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Result language code (e.g. \"en\", \"de\", \"ru\"). Default: English."
          }
        },
        "required": [
          "categories",
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.address.autocomplete",
      "description": "Get autocomplete suggestions as you type an address or place name \u2014 for real-time search UX (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Partial address or place name to autocomplete (e.g. \"1600 Penn\", \"Berlin Bran\").",
            "minLength": 1,
            "maxLength": 200
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Result language code (e.g. \"en\", \"de\", \"ru\"). Default: English."
          },
          "country_code": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code to filter results (e.g. \"US\", \"DE\")."
          },
          "type": {
            "type": "string",
            "enum": [
              "city",
              "street",
              "amenity",
              "country"
            ],
            "description": "Filter by result type: city, street, amenity, or country."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "description": "Maximum number of suggestions (default 5, max 5)."
          }
        },
        "required": [
          "text"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.navigation.route",
      "description": "Get turn-by-turn driving, walking, cycling, or transit directions between two points with distance and time (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin_lat": {
            "type": "number",
            "description": "Start point latitude (e.g. 40.7128)",
            "minimum": -90,
            "maximum": 90
          },
          "origin_lon": {
            "type": "number",
            "description": "Start point longitude (e.g. -74.0060)",
            "minimum": -180,
            "maximum": 180
          },
          "dest_lat": {
            "type": "number",
            "description": "Destination latitude (e.g. 48.8566)",
            "minimum": -90,
            "maximum": 90
          },
          "dest_lon": {
            "type": "number",
            "description": "Destination longitude (e.g. 2.3522)",
            "minimum": -180,
            "maximum": 180
          },
          "mode": {
            "type": "string",
            "enum": [
              "drive",
              "walk",
              "bicycle",
              "transit"
            ],
            "description": "Travel mode: drive, walk, bicycle, or transit. Default: drive."
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Turn-by-turn instruction language (e.g. \"en\", \"de\"). Default: English."
          },
          "units": {
            "type": "string",
            "enum": [
              "metric",
              "imperial"
            ],
            "description": "Distance units: metric (km) or imperial (miles). Default: metric."
          }
        },
        "required": [
          "origin_lat",
          "origin_lon",
          "dest_lat",
          "dest_lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.navigation.isochrone",
      "description": "Get reachability area (isochrone) \u2014 polygon showing how far you can travel from a point in a given time or distance (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Center point latitude (e.g. 52.5200)",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "description": "Center point longitude (e.g. 13.4050)",
            "minimum": -180,
            "maximum": 180
          },
          "mode": {
            "type": "string",
            "enum": [
              "drive",
              "walk",
              "bicycle"
            ],
            "description": "Travel mode: drive, walk, or bicycle. Default: drive."
          },
          "time": {
            "type": "integer",
            "minimum": 60,
            "maximum": 7200,
            "description": "Reachability time in seconds (default 900 = 15 min, max 7200 = 2h). Mutually exclusive with distance."
          },
          "distance": {
            "type": "integer",
            "minimum": 100,
            "maximum": 100000,
            "description": "Reachability distance in meters (max 100km). Mutually exclusive with time."
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.ip.geolocation",
      "description": "Geolocate an IP address (IPv4/IPv6) to country, city, coordinates, and network info (Geoapify)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "IPv4 or IPv6 address to geolocate (e.g. \"8.8.8.8\", \"2001:4860:4860::8888\").",
            "minLength": 7,
            "maxLength": 45
          }
        },
        "required": [
          "ip"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.website.setup",
      "description": "Register a website for AI marketing. Call with domain + target_url. If DNS is not configured, returns DNS_NOT_VERIFIED with exact CNAME record instructions \u2014 relay to user: reference.{domain} \u2192 cname.aipush.app. After user creates DNS record, call again. On success: client registered, MIP analysis starts automatically, SSL provisioning begins. Poll website_status until mip_status='ready' and cf_hostname_status='active', then use generate_page. Idempotent (AIPush)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_domain": {
            "type": "string",
            "description": "Domain of the website to register (e.g. \"example.com\", \"myhotel.com\"). Must have a CNAME record: reference.{domain} \u2192 cname.aipush.app",
            "minLength": 3,
            "maxLength": 253
          },
          "target_url": {
            "type": "string",
            "description": "Target conversion URL \u2014 the single page all generated content will link to (e.g. \"https://example.com/book\", \"https://myhotel.com/reserve\"). Must be on the same domain.",
            "maxLength": 2048
          }
        },
        "required": [
          "website_domain",
          "target_url"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.website.status",
      "description": "Poll website readiness after setup_website. Returns billing_status, mip_status ('empty'|'pending'|'ready'), cf_hostname_status, cf_ssl_status, pages_total. Gate your workflow: wait for mip_status='ready' AND cf_hostname_status='active' before calling generate_page. Safe to poll repeatedly (AIPush)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_domain": {
            "type": "string",
            "description": "Domain to check status for (e.g. \"example.com\").",
            "minLength": 3,
            "maxLength": 253
          }
        },
        "required": [
          "website_domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.pages.generate",
      "description": "Requires mip_status='ready' and cf_hostname_status='active' (check website_status first). Generates one AI-optimized HTML page structured for AI assistant answer compilation (ChatGPT, Perplexity, Gemini). Page includes decision question, short answer with CTA, comparison, pricing, FAQ. Published at reference.{domain}/{slug}. Optional keyword parameter targets specific search intent (AIPush)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_domain": {
            "type": "string",
            "description": "Domain of the website to generate a page for. Must be set up first via aipush.setup_website.",
            "minLength": 3,
            "maxLength": 253
          },
          "keyword": {
            "type": "string",
            "minLength": 2,
            "maxLength": 200,
            "description": "Target keyword or topic for the page (e.g. \"best hotels in Bangkok\", \"affordable dentist near me\"). If omitted, the system picks from the semantic coverage grid."
          }
        },
        "required": [
          "website_domain"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.pages.list",
      "description": "List all published AI marketing pages for a website with URLs, titles, and publish dates (AIPush)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_domain": {
            "type": "string",
            "description": "Domain to list pages for (e.g. \"example.com\").",
            "minLength": 3,
            "maxLength": 253
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of pages to return (default 20, max 100)."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of pages to skip for pagination (default 0)."
          }
        },
        "required": [
          "website_domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.pages.content",
      "description": "Get full HTML content and metadata of a specific generated page by slug (AIPush)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_domain": {
            "type": "string",
            "description": "Domain the page belongs to (e.g. \"example.com\").",
            "minLength": 3,
            "maxLength": 253
          },
          "slug": {
            "type": "string",
            "description": "Page slug identifier (e.g. \"best-hotels-bangkok-2026\"). Returned by aipush.list_pages or aipush.generate_page.",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "website_domain",
          "slug"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.analysis.profile",
      "description": "Get MIP business analysis results \u2014 business name, category, location, competitors, value propositions, and market surface data (AIPush)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_domain": {
            "type": "string",
            "description": "Domain to get the MIP business analysis for. Must have completed setup (mip_status = \"ready\").",
            "minLength": 3,
            "maxLength": 253
          }
        },
        "required": [
          "website_domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.analysis.visibility",
      "description": "Test whether AI assistants (ChatGPT, Perplexity, Gemini) know about and recommend a brand \u2014 returns per-model visibility scores (AIPush)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_domain": {
            "type": "string",
            "description": "Domain to check AI visibility for (e.g. \"example.com\"). Tests whether AI assistants know about and recommend this brand.",
            "minLength": 3,
            "maxLength": 253
          }
        },
        "required": [
          "website_domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.market.report",
      "description": "Start a full AI market intelligence report for any website. Provide a URL (e.g. \"https://stripe.com\") \u2014 the system crawls the site, extracts value propositions and services, identifies competitors, scores them, finds keyword gaps and market opportunities. Returns report_id \u2014 poll with aipush.market_report_status. Takes ~2 minutes. Cost: $29.99 (AIPush MIP)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "target_url": {
            "type": "string",
            "description": "Website URL to analyze (e.g. \"https://stripe.com\"). The system crawls the site, extracts value propositions, finds competitors, and builds a full market intelligence report with competitive scoring, keyword gaps, and market opportunities. Takes ~2 minutes."
          }
        },
        "required": [
          "target_url"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "aipush.market.report_status",
      "description": "Poll the status of a market intelligence report. Returns \"running\" with current step (crawling/ai_analysis), or \"completed\" with full profile_json containing competitors (scored), keywords, market surface, and evidence. Free to poll (AIPush MIP)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "report_id": {
            "type": "string",
            "description": "Report ID in UUID format (e.g. \"ed90f49c-15d8-46ee-9799-c6a8d468f6ba\") \u2014 returned by aipush.market_report. Poll until status = \"completed\" to get full profile_json with competitors, keywords, and market analysis."
          }
        },
        "required": [
          "report_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "diffbot.products.extract",
      "description": "Extract structured product data from any e-commerce URL \u2014 title, price, brand, specs, images, reviews. Works on any retailer without custom integration (Diffbot)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Product page URL to extract data from (any e-commerce site)"
          },
          "discussion": {
            "type": "boolean",
            "description": "Include product reviews and comments (default false)"
          },
          "timeout": {
            "type": "integer",
            "minimum": 5000,
            "maximum": 30000,
            "description": "Request timeout in milliseconds (5000-30000, default 15000)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "diffbot.pages.analyze",
      "description": "Auto-detect page type (product, article, image, video) and extract structured data from any URL using AI (Diffbot)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Web page URL to auto-detect type and extract structured data"
          },
          "mode": {
            "type": "string",
            "enum": [
              "product",
              "article",
              "image",
              "discussion",
              "video"
            ],
            "description": "Force extraction mode instead of auto-detection"
          },
          "fallback": {
            "type": "string",
            "enum": [
              "article",
              "product"
            ],
            "description": "Fallback extraction type if auto-detection fails"
          },
          "timeout": {
            "type": "integer",
            "minimum": 5000,
            "maximum": 30000,
            "description": "Request timeout in milliseconds (5000-30000, default 15000)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "diffbot.articles.extract",
      "description": "Extract article text, author, date, tags, sentiment, and images from any blog or news URL with multi-page support (Diffbot)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Article or blog post URL to extract text, author, and metadata"
          },
          "paging": {
            "type": "boolean",
            "description": "Follow multi-page articles and concatenate text (default true)"
          },
          "maxTags": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of topic tags to return (1-50, default 10)"
          },
          "timeout": {
            "type": "integer",
            "minimum": 5000,
            "maximum": 30000,
            "description": "Request timeout in milliseconds (5000-30000, default 15000)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "diffbot.knowledge.search",
      "description": "Search Diffbot Knowledge Graph for products, organizations, people, and places \u2014 billions of structured entities from the web (Diffbot)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Diffbot Knowledge Graph query (DQL) \u2014 e.g. \"type:Product title:iPhone\""
          },
          "type": {
            "type": "string",
            "enum": [
              "Product",
              "Article",
              "Organization",
              "Person",
              "Place",
              "Event"
            ],
            "description": "Filter results by entity type in Knowledge Graph"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results to return (1-50, default 25)"
          },
          "from": {
            "type": "integer",
            "minimum": 0,
            "description": "Pagination offset for results (default 0)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "whois.domain.lookup",
      "description": "Get WHOIS registration data for any domain \u2014 registrar, creation/expiry dates, nameservers, registrant contact, status across 374M+ domains and 7,596 TLDs (WhoisXML)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name, IPv4, IPv6, or email address for WHOIS lookup (e.g. \"google.com\", \"8.8.8.8\")"
          },
          "prefer_fresh": {
            "type": "boolean",
            "description": "Get latest WHOIS record even if incomplete (default false)"
          },
          "include_ips": {
            "type": "boolean",
            "description": "Include resolved IP addresses for the domain (default false)"
          },
          "check_availability": {
            "type": "boolean",
            "description": "Also check domain availability status (default false)"
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "whois.dns.lookup",
      "description": "Get DNS records for a domain \u2014 A, AAAA, MX, NS, SOA, TXT, CNAME, SRV, CAA records with TTL and raw data (WhoisXML)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to look up DNS records for (e.g. \"google.com\")"
          },
          "record_type": {
            "type": "string",
            "enum": [
              "A",
              "AAAA",
              "MX",
              "NS",
              "SOA",
              "TXT",
              "CNAME",
              "SRV",
              "CAA",
              "_all"
            ],
            "description": "DNS record type to query: A, AAAA, MX, NS, SOA, TXT, CNAME, SRV, CAA, or _all (default _all)"
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "whois.domain.availability",
      "description": "Check if a domain name is available for registration \u2014 fast DNS check or thorough DNS+WHOIS verification (WhoisXML)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to check availability for (e.g. \"example.com\", \"mybrand.io\")"
          },
          "mode": {
            "type": "string",
            "enum": [
              "DNS_ONLY",
              "DNS_AND_WHOIS"
            ],
            "description": "Check mode: DNS_ONLY is fast, DNS_AND_WHOIS is more accurate (default DNS_AND_WHOIS)"
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "whois.domain.reverse",
      "description": "Find all domains registered by a person, company, or email \u2014 reverse WHOIS lookup for OSINT and brand monitoring (WhoisXML)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "Search keyword to find domains \u2014 registrant name, email, company, or address (e.g. \"John Smith\", \"acme.com\")"
          }
        },
        "required": [
          "keyword"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spoonacular.recipes.search",
      "description": "Search 365K+ recipes with dietary filters (vegan, keto, gluten-free), cuisine, meal type, and max prep time \u2014 includes nutrition data per result (Spoonacular)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for recipes (e.g. \"pasta\", \"chicken soup\")"
          },
          "cuisine": {
            "type": "string",
            "description": "Cuisine filter \u2014 comma-separated (e.g. \"italian\", \"mexican,chinese\")"
          },
          "diet": {
            "type": "string",
            "description": "Diet filter: gluten free, ketogenic, vegetarian, lacto-vegetarian, ovo-vegetarian, vegan, pescetarian, paleo, primal, whole30"
          },
          "intolerances": {
            "type": "string",
            "description": "Intolerances filter \u2014 comma-separated (e.g. \"dairy,gluten,peanut,shellfish\")"
          },
          "type": {
            "type": "string",
            "description": "Meal type: main course, side dish, dessert, appetizer, salad, bread, breakfast, soup, beverage, sauce, marinade, fingerfood, snack, drink"
          },
          "max_ready_time": {
            "type": "integer",
            "description": "Maximum preparation time in minutes"
          },
          "number": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results to return (default 10, max 100)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset for pagination (default 0)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spoonacular.recipes.details",
      "description": "Get full recipe details by ID \u2014 ingredients, step-by-step instructions, nutrition facts, dietary labels, prep time, servings, and price per serving (Spoonacular)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Spoonacular recipe ID (from recipe_search or by_ingredients results)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spoonacular.recipes.by_ingredients",
      "description": "Find recipes using ingredients you have on hand \u2014 shows used/missing ingredients count, ranked by ingredient match (Spoonacular)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ingredients": {
            "type": "string",
            "description": "Comma-separated list of ingredients you have (e.g. \"chicken,rice,tomato\")"
          },
          "number": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results to return (default 10, max 100)"
          },
          "ranking": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2,
            "description": "Ranking mode: 1 = maximize used ingredients, 2 = minimize missing ingredients (default 1)"
          },
          "ignore_pantry": {
            "type": "boolean",
            "description": "Ignore common pantry items like water, flour, salt (default false)"
          }
        },
        "required": [
          "ingredients"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spoonacular.ingredients.search",
      "description": "Search 86K+ food ingredients with nutrition data \u2014 sortable by calories, protein, fat, or carbs (Spoonacular)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Ingredient search query (e.g. \"banana\", \"olive oil\", \"chicken breast\")"
          },
          "number": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results to return (default 10, max 100)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "calories",
              "protein",
              "fat",
              "carbs"
            ],
            "description": "Sort results by nutrient value"
          },
          "sort_direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Sort direction (default asc)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spoonacular.recipes.analyze",
      "description": "Analyze a recipe by title and ingredient list \u2014 returns full nutrition breakdown, dietary labels, and caloric distribution (Spoonacular)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Recipe title (e.g. \"Spaghetti Carbonara\")"
          },
          "ingredients": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of ingredient strings (e.g. [\"200g spaghetti\", \"100g guanciale\", \"2 eggs\"])"
          },
          "instructions": {
            "type": "string",
            "description": "Cooking instructions as plain text"
          },
          "servings": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of servings (default 1)"
          }
        },
        "required": [
          "title",
          "ingredients"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "nasa.astronomy.apod",
      "description": "Get NASA Astronomy Picture of the Day \u2014 daily curated space image or video with expert explanation, dating back to 1995 (NASA APOD)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date in YYYY-MM-DD format (default: today). Returns the Astronomy Picture of the Day for that date"
          },
          "thumbs": {
            "type": "boolean",
            "description": "Return thumbnail URL for video APOD entries (default false)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "nasa.asteroids.feed",
      "description": "Get near-Earth asteroid close approaches for a date range \u2014 size estimates, hazard classification, velocity, miss distance (NASA NeoWs)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "start_date": {
            "type": "string",
            "description": "Start date in YYYY-MM-DD format for asteroid feed (max 7-day span)"
          },
          "end_date": {
            "type": "string",
            "description": "End date in YYYY-MM-DD format (default: start_date + 7 days)"
          }
        },
        "required": [
          "start_date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "nasa.space_weather.flares",
      "description": "Get solar flare events from the Space Weather Database \u2014 class, peak time, source region, linked CMEs and geomagnetic storms (NASA DONKI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "start_date": {
            "type": "string",
            "description": "Start date in YYYY-MM-DD format (default: 30 days ago)"
          },
          "end_date": {
            "type": "string",
            "description": "End date in YYYY-MM-DD format (default: today)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "nasa.earth.epic",
      "description": "Get full-disc Earth images from the DSCOVR satellite EPIC camera \u2014 daily natural color photos from Lagrange point L1, 1.5M km away (NASA EPIC)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date in YYYY-MM-DD format (default: most recent available). Returns DSCOVR EPIC Earth images for that date"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "nasa.media.search",
      "description": "Search NASA Image and Video Library \u2014 140K+ images, videos, and audio from missions, telescopes, and events with metadata and download links (NASA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query for NASA images and videos (e.g. \"mars rover\", \"apollo 11\", \"nebula\")"
          },
          "media_type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "audio"
            ],
            "description": "Filter by media type (default: all types)"
          },
          "year_start": {
            "type": "integer",
            "description": "Filter results to year >= year_start"
          },
          "year_end": {
            "type": "integer",
            "description": "Filter results to year <= year_end"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination (default 1)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jpl.asteroids.approaches",
      "description": "Get upcoming and past asteroid close approaches to Earth \u2014 distance, velocity, size, sorted by date or distance (NASA JPL)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date_min": {
            "type": "string",
            "description": "Minimum close-approach date in YYYY-MM-DD format (default: now)"
          },
          "date_max": {
            "type": "string",
            "description": "Maximum close-approach date in YYYY-MM-DD format (default: +60 days)"
          },
          "dist_max": {
            "type": "string",
            "description": "Maximum approach distance in AU (e.g. \"0.05\" = ~7.5M km). Default: 0.05"
          },
          "h_max": {
            "type": "number",
            "description": "Maximum absolute magnitude H (smaller H = larger object). Filter for brighter/bigger asteroids"
          },
          "sort": {
            "type": "string",
            "enum": [
              "date",
              "dist",
              "dist-min",
              "h",
              "v-inf",
              "v-rel"
            ],
            "description": "Sort field (default: date)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results (default 20, max 100)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jpl.events.fireballs",
      "description": "Get reported fireball (bolide) events \u2014 atmospheric entry energy, velocity, altitude, geographic coordinates (NASA JPL CNEOS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date_min": {
            "type": "string",
            "description": "Minimum event date in YYYY-MM-DD format"
          },
          "date_max": {
            "type": "string",
            "description": "Maximum event date in YYYY-MM-DD format"
          },
          "energy_min": {
            "type": "number",
            "description": "Minimum radiated energy in Joules (e.g. 1e10)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "date",
              "energy",
              "impact-e",
              "vel",
              "alt"
            ],
            "description": "Sort field (default: date descending)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results (default 20, max 100)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jpl.bodies.lookup",
      "description": "Look up asteroid or comet data by name/designation \u2014 orbital elements, physical parameters, discovery info, hazard classification (NASA JPL SBDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sstr": {
            "type": "string",
            "description": "Search string \u2014 asteroid/comet name or designation (e.g. \"Apophis\", \"2024 YR4\", \"Halley\")"
          },
          "des": {
            "type": "string",
            "description": "SPK-ID or designation for exact lookup (e.g. \"99942\" for Apophis)"
          },
          "phys_par": {
            "type": "boolean",
            "description": "Include physical parameters like diameter, albedo, rotation period (default true)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jpl.asteroids.sentry",
      "description": "Get asteroid impact risk assessments from the Sentry monitoring system \u2014 impact probability, Palermo/Torino scale, size estimates (NASA JPL)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "des": {
            "type": "string",
            "description": "Asteroid designation to check specific object (e.g. \"99942\" for Apophis). Omit for full list"
          },
          "h_max": {
            "type": "number",
            "description": "Maximum absolute magnitude H \u2014 filter for larger objects"
          },
          "ps_min": {
            "type": "number",
            "description": "Minimum Palermo Scale value (e.g. -3). Higher = more concerning"
          },
          "ip_min": {
            "type": "number",
            "description": "Minimum impact probability (e.g. 1e-7)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rawg.games.search",
      "description": "Search 800K+ video games \u2014 filter by genre, platform, release date, Metacritic score, with ratings, screenshots, and store links (RAWG)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Search query for games (e.g. \"The Witcher\", \"Red Dead Redemption\")"
          },
          "genres": {
            "type": "string",
            "description": "Filter by genre IDs \u2014 comma-separated (e.g. \"4\" for action, \"5\" for RPG, \"4,5\" for both)"
          },
          "platforms": {
            "type": "string",
            "description": "Filter by platform IDs \u2014 comma-separated (e.g. \"4\" for PC, \"187\" for PS5, \"186\" for Xbox Series)"
          },
          "dates": {
            "type": "string",
            "description": "Filter by release date range YYYY-MM-DD,YYYY-MM-DD (e.g. \"2024-01-01,2024-12-31\")"
          },
          "ordering": {
            "type": "string",
            "description": "Sort field: name, released, added, created, updated, rating, metacritic. Prefix with \"-\" for descending (e.g. \"-rating\")"
          },
          "metacritic": {
            "type": "string",
            "description": "Filter by Metacritic score range \"min,max\" (e.g. \"80,100\" for highly rated)"
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 40,
            "description": "Number of results per page (default 20, max 40)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination (default 1)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rawg.games.details",
      "description": "Get full game details by ID or slug \u2014 description, platforms, genres, developers, publishers, ratings, Metacritic score, system requirements (RAWG)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "RAWG game ID (numeric) or slug (e.g. \"grand-theft-auto-v\", 3498)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rawg.games.screenshots",
      "description": "Get screenshot images for a game \u2014 full resolution URLs with dimensions (RAWG)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "RAWG game ID or slug"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1)"
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 40,
            "description": "Results per page (default 20, max 40)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rawg.games.stores",
      "description": "Get purchase/download links for a game across stores \u2014 Steam, PlayStation Store, Xbox, Epic, GOG, Nintendo (RAWG)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "RAWG game ID or slug"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rawg.games.series",
      "description": "Get all games in the same series/franchise \u2014 sequels, prequels, and spin-offs with ratings and release dates (RAWG)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "RAWG game ID or slug"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1)"
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 40,
            "description": "Results per page (default 20, max 40)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "igdb.games.search",
      "description": "Search 280K+ games in IGDB (Twitch) \u2014 rich metadata with genres, platforms, ratings, cover art, and release dates",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for games (e.g. \"Cyberpunk 2077\", \"The Legend of Zelda\", \"Elden Ring\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of results to return (default 10, max 50)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "igdb.games.details",
      "description": "Get full game details by IGDB ID \u2014 storyline, genres, platforms, developers, publishers, themes, game modes, similar games, and websites",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "IGDB game ID (numeric, e.g. 1877 for Cyberpunk 2077)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "igdb.companies.info",
      "description": "Look up game companies by ID or search by name \u2014 description, country, developed/published game IDs, logos, and websites",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "IGDB company ID (numeric, e.g. 70 for Nintendo). Use either id or query."
          },
          "query": {
            "type": "string",
            "description": "Search query for company name (e.g. \"Valve\", \"CD Projekt\"). Use either id or query."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of results when searching by query (default 10, max 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "igdb.platforms.info",
      "description": "Look up gaming platforms by ID or search by name \u2014 abbreviation, generation, platform family, versions, and summary",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "IGDB platform ID (numeric, e.g. 48 for PlayStation 4, 6 for PC). Use either id or query."
          },
          "query": {
            "type": "string",
            "description": "Search query for platform name (e.g. \"PlayStation\", \"Nintendo Switch\"). Use either id or query."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of results when searching by query (default 10, max 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "igdb.games.media",
      "description": "Get cover art, screenshots, and video trailers for a game \u2014 image URLs with dimensions and YouTube video IDs",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "IGDB game ID (numeric, e.g. 1877 for Cyberpunk 2077)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "qrserver.qr.generate",
      "description": "Generate a QR code image URL from text or URL \u2014 customizable size, color, background, format (PNG/SVG), error correction level. Returns direct image URL (goqr.me)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string",
            "description": "Text or URL to encode into a QR code (required)"
          },
          "size": {
            "type": "string",
            "description": "Image size in WxH pixels, e.g. \"200x200\", \"400x400\" (default: \"200x200\")"
          },
          "format": {
            "type": "string",
            "enum": [
              "png",
              "svg"
            ],
            "description": "Image format: \"png\" or \"svg\" (default: \"png\")"
          },
          "color": {
            "type": "string",
            "description": "Foreground color as 6-digit hex without #, e.g. \"000000\" for black (default: \"000000\")"
          },
          "bgcolor": {
            "type": "string",
            "description": "Background color as 6-digit hex without #, e.g. \"ffffff\" for white (default: \"ffffff\")"
          },
          "margin": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50,
            "description": "Quiet zone margin in modules around the QR code (default: 1)"
          },
          "ecc": {
            "type": "string",
            "enum": [
              "L",
              "M",
              "Q",
              "H"
            ],
            "description": "Error correction level: L (7%), M (15%), Q (25%), H (30%) \u2014 higher allows more damage tolerance (default: \"L\")"
          }
        },
        "required": [
          "data"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "qrserver.qr.read",
      "description": "Decode a QR code from an image URL \u2014 extracts the encoded text or URL from any QR code image (goqr.me)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fileurl": {
            "type": "string",
            "description": "URL of an image containing a QR code to decode (required)"
          }
        },
        "required": [
          "fileurl"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "upc.products.lookup",
      "description": "Look up a product by UPC, EAN, GTIN, or ISBN barcode \u2014 returns title, brand, images, dimensions, weight, category, price range, and marketplace offers (UPCitemdb)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "upc": {
            "type": "string",
            "description": "UPC, EAN, GTIN, or ISBN barcode number to look up (e.g. \"012345678905\", \"9780140449136\")"
          }
        },
        "required": [
          "upc"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "upc.products.search",
      "description": "Search products by name, brand, or description \u2014 returns matching items with UPC codes, images, categories, and price ranges (UPCitemdb)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Full-text search query for product name, brand, or description (e.g. \"iPhone 16\", \"Sony headphones\")"
          },
          "match_mode": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1,
            "description": "Match mode: 0 = broad match (default), 1 = exact match"
          },
          "type": {
            "type": "string",
            "enum": [
              "product",
              "brand",
              "category"
            ],
            "description": "Search type: \"product\" (default), \"brand\", or \"category\""
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Pagination offset for results (default: 0)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ip.intelligence.lookup",
      "description": "Look up any IP address \u2014 geolocation (country, city, coordinates), 9 security flags (VPN, Tor, proxy, datacenter, abuser, crawler, bogon, mobile, satellite), ASN, company info, abuse contacts (ipapi.is)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "IPv4 or IPv6 address to look up (e.g. \"8.8.8.8\", \"2001:4860:4860::8888\")"
          }
        },
        "required": [
          "ip"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ip.intelligence.bulk",
      "description": "Look up multiple IP addresses in one call (max 100) \u2014 country, city, VPN/Tor/proxy flags, ASN, and organization for each IP (ipapi.is)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ips": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of IPv4/IPv6 addresses to look up in bulk (max 100 per request)",
            "minItems": 1,
            "maxItems": 100
          }
        },
        "required": [
          "ips"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "earthquake.events.search",
      "description": "Search global earthquakes by time, location, magnitude, and depth \u2014 returns magnitude, coordinates, tsunami flags, PAGER alerts, and felt reports. 100+ years of data, updated every minute (USGS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "starttime": {
            "type": "string",
            "description": "Start date in ISO 8601 format, e.g. \"2026-01-01\" or \"2026-01-01T00:00:00\""
          },
          "endtime": {
            "type": "string",
            "description": "End date in ISO 8601 format (default: now)"
          },
          "minmagnitude": {
            "type": "number",
            "description": "Minimum magnitude on Richter scale (e.g. 4.5 for significant earthquakes)"
          },
          "maxmagnitude": {
            "type": "number",
            "description": "Maximum magnitude on Richter scale"
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "Center latitude for radius search (-90 to 90)"
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "Center longitude for radius search (-180 to 180)"
          },
          "maxradiuskm": {
            "type": "number",
            "minimum": 0,
            "maximum": 20001.6,
            "description": "Search radius in kilometers from lat/lon center point (max ~20,000 km)"
          },
          "mindepth": {
            "type": "number",
            "description": "Minimum depth in kilometers (negative = above sea level)"
          },
          "maxdepth": {
            "type": "number",
            "description": "Maximum depth in kilometers (max 1000)"
          },
          "orderby": {
            "type": "string",
            "enum": [
              "time",
              "time-asc",
              "magnitude",
              "magnitude-asc"
            ],
            "description": "Sort order: \"time\" (newest first, default), \"time-asc\", \"magnitude\" (largest first), \"magnitude-asc\""
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Maximum number of results (default 20, max 200)"
          },
          "alertlevel": {
            "type": "string",
            "enum": [
              "green",
              "yellow",
              "orange",
              "red"
            ],
            "description": "PAGER alert level filter: green (no damage), yellow, orange, red (significant damage/casualties)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "earthquake.events.feed",
      "description": "Get real-time earthquake feed by magnitude threshold (significant/4.5+/2.5+/1.0+/all) and time window (hour/day/week/month) \u2014 updated every minute (USGS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "magnitude": {
            "type": "string",
            "enum": [
              "significant",
              "4.5",
              "2.5",
              "1.0",
              "all"
            ],
            "description": "Magnitude threshold: \"significant\", \"4.5\", \"2.5\", \"1.0\", or \"all\" (default: \"4.5\")"
          },
          "timeframe": {
            "type": "string",
            "enum": [
              "hour",
              "day",
              "week",
              "month"
            ],
            "description": "Time window: \"hour\", \"day\" (default), \"week\", or \"month\""
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "earthquake.events.count",
      "description": "Count earthquakes matching search criteria without returning full data \u2014 useful for statistics and monitoring thresholds (USGS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "starttime": {
            "type": "string",
            "description": "Start date in ISO 8601 format, e.g. \"2026-01-01\""
          },
          "endtime": {
            "type": "string",
            "description": "End date in ISO 8601 format (default: now)"
          },
          "minmagnitude": {
            "type": "number",
            "description": "Minimum magnitude on Richter scale"
          },
          "maxmagnitude": {
            "type": "number",
            "description": "Maximum magnitude on Richter scale"
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "Center latitude for radius search"
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "Center longitude for radius search"
          },
          "maxradiuskm": {
            "type": "number",
            "minimum": 0,
            "maximum": 20001.6,
            "description": "Search radius in kilometers from lat/lon center"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "anime.titles.search",
      "description": "Search 28K+ anime titles by name, genre, type, status, and rating \u2014 scores, episodes, studios, seasons (MyAnimeList via Jikan)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for anime title (e.g. \"Naruto\", \"Attack on Titan\")"
          },
          "type": {
            "type": "string",
            "enum": [
              "tv",
              "movie",
              "ova",
              "special",
              "ona",
              "music",
              "cm",
              "pv",
              "tv_special"
            ],
            "description": "Anime type filter: tv, movie, ova, special, ona, music"
          },
          "status": {
            "type": "string",
            "enum": [
              "airing",
              "complete",
              "upcoming"
            ],
            "description": "Airing status: \"airing\", \"complete\", or \"upcoming\""
          },
          "rating": {
            "type": "string",
            "enum": [
              "g",
              "pg",
              "pg13",
              "r17",
              "r",
              "rx"
            ],
            "description": "Age rating: g (all ages), pg, pg13, r17 (violence), r (mild nudity), rx (hentai)"
          },
          "genre": {
            "type": "integer",
            "description": "Genre ID filter (e.g. 1=Action, 2=Adventure, 4=Comedy, 8=Drama, 10=Fantasy, 22=Romance)"
          },
          "order_by": {
            "type": "string",
            "enum": [
              "title",
              "start_date",
              "end_date",
              "episodes",
              "score",
              "rank",
              "popularity",
              "favorites",
              "members"
            ],
            "description": "Sort field (default: relevance)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Sort direction: \"asc\" or \"desc\" (default: desc)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination (default: 1)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Results per page (default: 10, max: 25)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "anime.titles.details",
      "description": "Get full anime details by MAL ID \u2014 synopsis, score, rank, episodes, studios, genres, themes, demographics, rating (MyAnimeList via Jikan)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "MyAnimeList ID of the anime (e.g. 1 for Cowboy Bebop, 20 for Naruto)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "anime.manga.details",
      "description": "Get full manga details by MAL ID \u2014 synopsis, chapters, volumes, authors, score, rank, genres (MyAnimeList via Jikan)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "MyAnimeList ID of the manga (e.g. 13 for One Piece, 2 for Berserk)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "anime.titles.characters",
      "description": "Get character cast and Japanese voice actors for an anime \u2014 names, roles (main/supporting), images (MyAnimeList via Jikan)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "MyAnimeList ID of the anime to get character cast for"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "anime.titles.top",
      "description": "Get top-ranked anime by score \u2014 filter by type (TV/movie/OVA), status (airing/upcoming), or popularity (MyAnimeList via Jikan)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "tv",
              "movie",
              "ova",
              "special",
              "ona",
              "music",
              "cm",
              "pv",
              "tv_special"
            ],
            "description": "Filter top list by anime type (default: all types)"
          },
          "filter": {
            "type": "string",
            "enum": [
              "airing",
              "upcoming",
              "bypopularity",
              "favorite"
            ],
            "description": "Filter: \"airing\" (currently), \"upcoming\", \"bypopularity\", or \"favorite\""
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default: 1)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Results per page (default: 10, max: 25)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "books.editions.isbn",
      "description": "Look up a book by ISBN-10 or ISBN-13 \u2014 title, author, publisher, pages, cover image, subjects. 40M+ books (Open Library / Internet Archive)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "isbn": {
            "type": "string",
            "description": "ISBN-10 or ISBN-13 to look up (e.g. \"9780451524935\" for 1984, \"0140449132\" for The Republic)"
          }
        },
        "required": [
          "isbn"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "books.catalog.search",
      "description": "Search 40M+ books by title, author, subject, or ISBN \u2014 ratings, cover images, edition counts, publish year (Open Library / Internet Archive)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "General search query across title, author, and full text (e.g. \"dune frank herbert\")"
          },
          "title": {
            "type": "string",
            "description": "Search by book title only (e.g. \"The Great Gatsby\")"
          },
          "author": {
            "type": "string",
            "description": "Search by author name (e.g. \"Tolkien\")"
          },
          "subject": {
            "type": "string",
            "description": "Search by subject/genre (e.g. \"science fiction\", \"history\")"
          },
          "isbn": {
            "type": "string",
            "description": "Search by ISBN number"
          },
          "sort": {
            "type": "string",
            "enum": [
              "new",
              "old",
              "rating",
              "readinglog",
              "want_to_read",
              "currently_reading",
              "already_read"
            ],
            "description": "Sort order: \"new\" (newest first), \"old\" (oldest), \"rating\" (highest rated)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination (default: 1)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Results per page (default: 10, max: 100)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "books.works.details",
      "description": "Get consolidated work metadata across all editions by Open Library Work ID \u2014 description, subjects, authors, cover, first publish date (Open Library)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "olid": {
            "type": "string",
            "description": "Open Library Work ID, e.g. \"OL45804W\" for Lord of the Rings. Get from search results key field"
          }
        },
        "required": [
          "olid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "books.authors.details",
      "description": "Get author profile by Open Library Author ID \u2014 biography, birth/death dates, photo, Wikipedia link (Open Library / Internet Archive)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "olid": {
            "type": "string",
            "description": "Open Library Author ID, e.g. \"OL23919A\" for J.R.R. Tolkien. Get from search or work author keys"
          }
        },
        "required": [
          "olid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "email.validation.check",
      "description": "Validate an email address \u2014 checks deliverability, detects disposable/spam trap/abuse/catch-all addresses, MX records, SMTP provider, domain age. 99.6% accuracy (ZeroBounce)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to validate (e.g. \"user@example.com\")"
          },
          "ip_address": {
            "type": "string",
            "description": "IP address of the email owner for additional geo/fraud scoring (optional)"
          }
        },
        "required": [
          "email"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "web.url.shorten",
      "description": "Create a short URL from any long URL. Optional custom slug. Returns short link at apibase.short.gy. 1,000 free links/month (Short.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Original URL to shorten (e.g. \"https://example.com/very/long/path\")"
          },
          "title": {
            "type": "string",
            "description": "Optional title/label for the short link"
          },
          "slug": {
            "type": "string",
            "description": "Custom short path (e.g. \"my-link\" \u2192 apibase.short.gy/my-link). Auto-generated if omitted."
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "web.url.stats",
      "description": "Get click statistics and metadata for a short URL by its path (Short.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Short link path (e.g. \"imV5of\" from apibase.short.gy/imV5of)"
          }
        },
        "required": [
          "path"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "currency.exchange.latest",
      "description": "Latest exchange rates for 160+ currencies against any base currency. Updated daily on free tier. Returns all rates in one call (ExchangeRate-API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "base": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "Base currency code (e.g. \"USD\", \"EUR\", \"GBP\"). Default: USD. Returns rates for 160+ currencies."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "currency.exchange.convert",
      "description": "Convert amount between any two currencies \u2014 160+ currencies supported. Returns conversion rate and result (ExchangeRate-API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "description": "Source currency code (e.g. \"USD\")",
            "minLength": 3,
            "maxLength": 3
          },
          "to": {
            "type": "string",
            "description": "Target currency code (e.g. \"EUR\")",
            "minLength": 3,
            "maxLength": 3
          },
          "amount": {
            "type": "number",
            "description": "Amount to convert (default 1)"
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "calendar.holidays.premium",
      "description": "Public holidays for 230+ countries \u2014 national, local, religious, observance types. Filter by month, day, type. 100+ years coverage. More countries than Nager.Date (Calendarific)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\", \"DE\", \"JP\", \"IN\", \"BR\")",
            "minLength": 2,
            "maxLength": 2
          },
          "year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2049,
            "description": "Year (default 2026)"
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Filter by month (1-12)"
          },
          "day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 31,
            "description": "Filter by day (1-31)"
          },
          "type": {
            "type": "string",
            "enum": [
              "national",
              "local",
              "religious",
              "observance"
            ],
            "description": "Filter by holiday type"
          }
        },
        "required": [
          "country"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.alerts.active",
      "description": "Active severe weather alerts for the US \u2014 tornado warnings, flood watches, heat advisories, winter storms. Filter by state, severity, event type. US Government open data, unlimited, no auth (NWS/NOAA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "area": {
            "type": "string",
            "description": "US state code (e.g. \"CA\", \"TX\", \"NY\") or marine zone"
          },
          "severity": {
            "type": "string",
            "enum": [
              "Extreme",
              "Severe",
              "Moderate",
              "Minor",
              "Unknown"
            ],
            "description": "Alert severity filter"
          },
          "event": {
            "type": "string",
            "description": "Event type filter (e.g. \"Tornado Warning\", \"Flood Watch\", \"Heat Advisory\")"
          },
          "urgency": {
            "type": "string",
            "enum": [
              "Immediate",
              "Expected",
              "Future",
              "Past",
              "Unknown"
            ],
            "description": "Urgency filter"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max alerts to return (default 10, max 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.alerts.by_state",
      "description": "Active weather alerts for a specific US state \u2014 all warnings, watches, and advisories. Returns event, severity, urgency, description, area, timing (NWS/NOAA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "US state code (e.g. \"CA\", \"FL\", \"TX\")",
            "minLength": 2,
            "maxLength": 2
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max alerts (default 10, max 50)"
          }
        },
        "required": [
          "state"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "calendar.holidays.by_country",
      "description": "Public holidays for any country and year \u2014 100+ countries, national and regional holidays. Returns date, name (local + English), type. No auth, free, open source (Nager.Date)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\", \"DE\", \"JP\", \"BR\")",
            "minLength": 2,
            "maxLength": 2
          },
          "year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2099,
            "description": "Year (default 2026). Supports 2000-2099."
          }
        },
        "required": [
          "country_code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "calendar.holidays.next",
      "description": "Next upcoming public holidays for a country \u2014 useful for scheduling, availability checks, business day calculations. No auth (Nager.Date)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"FR\")",
            "minLength": 2,
            "maxLength": 2
          }
        },
        "required": [
          "country_code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.vin.decode",
      "description": "Decode a 17-character VIN \u2014 make, model, year, body class, engine, fuel type, transmission, plant country. US Government open data, unlimited, no auth (NHTSA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "vin": {
            "type": "string",
            "description": "17-character Vehicle Identification Number (e.g. \"1HGCM82633A004352\")",
            "minLength": 17,
            "maxLength": 17
          }
        },
        "required": [
          "vin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.vin.models",
      "description": "List vehicle models for a make and/or year (e.g. Honda 2024). US Government data (NHTSA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "description": "Vehicle make (e.g. \"Honda\", \"Toyota\", \"Ford\")"
          },
          "year": {
            "type": "integer",
            "description": "Model year (e.g. 2024)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "world.country.search",
      "description": "Search country by name \u2014 population, area, capital, languages, currencies, timezones, flag, region, borders. 250+ countries. No auth, free (REST Countries)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Country name to search (e.g. \"United States\", \"Germany\", \"Japan\")",
            "minLength": 2
          }
        },
        "required": [
          "name"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "world.country.code",
      "description": "Get country details by ISO code (US, GB, DE, JP). Returns name, population, area, capital, currencies, languages, flag (REST Countries)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "ISO 3166-1 country code \u2014 alpha-2 (\"US\") or alpha-3 (\"USA\")",
            "minLength": 2,
            "maxLength": 3
          }
        },
        "required": [
          "code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "food.product.barcode",
      "description": "Lookup food product by barcode (EAN/UPC) \u2014 name, brand, nutrition (calories, fat, carbs, protein per 100g), Nutri-Score, NOVA group, ingredients. 3M+ products (Open Food Facts)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "barcode": {
            "type": "string",
            "description": "Product barcode (EAN-13, UPC-A, etc.) e.g. \"3017620422003\" for Nutella",
            "minLength": 8,
            "maxLength": 13
          }
        },
        "required": [
          "barcode"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "food.product.search",
      "description": "Search food products by name \u2014 returns matching products with brand, barcode, Nutri-Score, image. 3M+ products worldwide (Open Food Facts)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Product name to search (e.g. \"nutella\", \"coca cola\", \"organic milk\")",
            "minLength": 2
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Results count (default 10, max 50)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "test.random.user",
      "description": "Generate realistic random user profiles \u2014 name, email, phone, address, age, gender, photo. Filter by nationality and gender. For testing and demo data (RandomUser.me)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of random users to generate (default 1, max 20)"
          },
          "nationality": {
            "type": "string",
            "description": "Nationality filter \u2014 comma-separated ISO codes (e.g. \"us\", \"gb,fr,de\")"
          },
          "gender": {
            "type": "string",
            "enum": [
              "male",
              "female"
            ],
            "description": "Gender filter"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "web.ssl.check",
      "description": "Check SSL/TLS certificate for any domain \u2014 validity, issuer, expiry date, days remaining, protocol, key size, HSTS status. No auth, free (ssl-checker.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to check SSL certificate for (e.g. \"google.com\", \"apibase.pro\"). Do not include https://.",
            "minLength": 3
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "events.global.search",
      "description": "Search global news articles across 65 languages from 300K+ sources worldwide. Filter by time, language, tone. Returns title, URL, domain, country. 100% free, no auth (GDELT Project)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query \u2014 keywords, phrases, or boolean (e.g. \"climate change\", \"AI regulation\"). Min 3 chars.",
            "minLength": 3
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 75,
            "description": "Number of articles (default 10, max 75)"
          },
          "timespan": {
            "type": "string",
            "description": "Time window: \"15min\", \"1h\", \"4h\", \"1d\", \"7d\", \"30d\", \"3m\" (default: all recent)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "DateDesc",
              "DateAsc",
              "ToneDesc",
              "ToneAsc",
              "HybridRel"
            ],
            "description": "Sort order: DateDesc (newest), ToneDesc (most positive), HybridRel (relevance)"
          },
          "language": {
            "type": "string",
            "description": "Source language filter (e.g. \"english\", \"spanish\", \"chinese\")"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "events.global.timeline",
      "description": "Track mention volume of any topic over time \u2014 see when a keyword spikes in global news coverage. Up to 3 months of data (GDELT Project)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Query to track mention volume over time (e.g. \"Bitcoin\", \"artificial intelligence\")",
            "minLength": 3
          },
          "timespan": {
            "type": "string",
            "description": "Time window: \"1d\", \"7d\", \"30d\", \"3m\" (default: 3 months)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "earth.fires.detect",
      "description": "Active fire hotspots detected by NASA satellites (VIIRS, MODIS) \u2014 latitude, longitude, brightness, confidence, fire radiative power. Filter by bounding box and days. Near real-time updates (NASA FIRMS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "west": {
            "type": "number",
            "description": "Western longitude of bounding box (e.g. -125 for California)",
            "minimum": -180,
            "maximum": 180
          },
          "south": {
            "type": "number",
            "description": "Southern latitude of bounding box (e.g. 32)",
            "minimum": -90,
            "maximum": 90
          },
          "east": {
            "type": "number",
            "description": "Eastern longitude of bounding box (e.g. -114)",
            "minimum": -180,
            "maximum": 180
          },
          "north": {
            "type": "number",
            "description": "Northern latitude of bounding box (e.g. 42)",
            "minimum": -90,
            "maximum": 90
          },
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "description": "Number of days of data (1-5, default 1)"
          },
          "source": {
            "type": "string",
            "enum": [
              "VIIRS_SNPP_NRT",
              "VIIRS_NOAA20_NRT",
              "VIIRS_NOAA21_NRT",
              "MODIS_NRT"
            ],
            "description": "Satellite sensor: VIIRS_SNPP_NRT (default, highest resolution), MODIS_NRT (legacy)"
          }
        },
        "required": [
          "west",
          "south",
          "east",
          "north"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "time.worldclock.current",
      "description": "Get current date, time, and day of week for any IANA timezone. DST-aware. No auth, free, unlimited (TimeAPI.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timezone": {
            "type": "string",
            "description": "IANA timezone name (e.g. \"America/New_York\", \"Europe/London\", \"Asia/Tokyo\", \"UTC\")"
          }
        },
        "required": [
          "timezone"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "time.worldclock.convert",
      "description": "Convert date/time from one timezone to another. DST-aware. 597 IANA timezones (TimeAPI.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from_timezone": {
            "type": "string",
            "description": "Source IANA timezone (e.g. \"America/New_York\")"
          },
          "datetime": {
            "type": "string",
            "description": "Date and time to convert in \"YYYY-MM-DD HH:mm:ss\" format (e.g. \"2026-03-20 12:00:00\")"
          },
          "to_timezone": {
            "type": "string",
            "description": "Target IANA timezone (e.g. \"Asia/Tokyo\")"
          }
        },
        "required": [
          "from_timezone",
          "datetime",
          "to_timezone"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "time.worldclock.zones",
      "description": "List all 597 IANA timezone names. Use for timezone validation and discovery (TimeAPI.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "string",
            "description": "Optional prefix filter for timezone names (e.g. \"America\", \"Europe\", \"Asia\"). Returns all 597 zones if omitted."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "web.screenshot.capture",
      "description": "Take a screenshot of any URL \u2014 returns image URL. Chrome-based rendering, supports full-page capture, custom viewport, ad blocking, cookie banner removal. Waits for JS-heavy SPAs to load (ApiFlash)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of the website to screenshot (e.g. \"https://example.com\")"
          },
          "format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg",
              "webp"
            ],
            "description": "Image format: \"png\" (default), \"jpeg\", or \"webp\""
          },
          "width": {
            "type": "integer",
            "minimum": 100,
            "maximum": 3840,
            "description": "Viewport width in pixels (default 1920, max 3840)"
          },
          "height": {
            "type": "integer",
            "minimum": 100,
            "maximum": 3840,
            "description": "Viewport height in pixels (default 1080)"
          },
          "full_page": {
            "type": "boolean",
            "description": "Capture full page scroll height (default false)"
          },
          "delay": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10,
            "description": "Wait N seconds before capture (0-10, for JS-heavy pages)"
          },
          "no_ads": {
            "type": "boolean",
            "description": "Block ads before capture (default false)"
          },
          "no_cookie_banners": {
            "type": "boolean",
            "description": "Remove cookie consent banners (default false)"
          },
          "wait_until": {
            "type": "string",
            "enum": [
              "page_loaded",
              "network_idle"
            ],
            "description": "\"page_loaded\" (default) or \"network_idle\" (wait for all XHR/fetch)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sports.football.fixtures",
      "description": "Football/soccer fixtures, live scores, and results \u2014 filter by date, league (Premier League, La Liga, Champions League...), team. 2000+ leagues, 171 countries. 362+ fixtures per day (API-Sports)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date in YYYY-MM-DD format (e.g. \"2026-03-20\"). Returns all fixtures for that day."
          },
          "league": {
            "type": "integer",
            "description": "League ID (e.g. 39 = Premier League, 140 = La Liga, 78 = Bundesliga)"
          },
          "season": {
            "type": "integer",
            "description": "Season year (e.g. 2025)"
          },
          "team": {
            "type": "integer",
            "description": "Team ID to filter fixtures"
          },
          "live": {
            "type": "boolean",
            "description": "Set to true to get only live/in-play fixtures"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sports.football.standings",
      "description": "League table/standings \u2014 rank, points, wins, draws, losses, goals for/against. All major leagues: Premier League (39), La Liga (140), Bundesliga (78), Serie A (135), Ligue 1 (61) (API-Sports)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "league": {
            "type": "integer",
            "description": "League ID (e.g. 39 = Premier League, 140 = La Liga, 135 = Serie A)"
          },
          "season": {
            "type": "integer",
            "description": "Season year (default: current season, e.g. 2025)"
          }
        },
        "required": [
          "league"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sports.football.leagues",
      "description": "Search football leagues and cups by country or name. Returns league ID, name, type (league/cup), country, logo. Use IDs for fixtures and standings queries (API-Sports)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country name to filter leagues (e.g. \"England\", \"Spain\", \"Germany\")"
          },
          "search": {
            "type": "string",
            "description": "Search league by name (e.g. \"Premier\", \"Champions\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sports.basketball.games",
      "description": "Basketball games and scores \u2014 NBA, EuroLeague, and 100+ leagues worldwide. Filter by date, league, season, team. Live and historical data (API-Sports)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date in YYYY-MM-DD format. Returns all basketball games for that day."
          },
          "league": {
            "type": "integer",
            "description": "League ID (e.g. 12 = NBA)"
          },
          "season": {
            "type": "string",
            "description": "Season (e.g. \"2025-2026\")"
          },
          "team": {
            "type": "integer",
            "description": "Team ID to filter games"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "translate.text.translate",
      "description": "Translate text between 90+ languages \u2014 auto-detects source language, supports batch translation (array of strings), HTML format preservation. Google Translate v2 compatible. $5/1M chars (Langbly)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to translate \u2014 single string or array of strings for batch translation"
          },
          "target": {
            "type": "string",
            "description": "Target language code (e.g. \"es\", \"fr\", \"de\", \"ja\", \"zh\", \"ru\", \"ar\")",
            "minLength": 2,
            "maxLength": 5
          },
          "source": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Source language code (auto-detected if omitted)"
          },
          "format": {
            "type": "string",
            "enum": [
              "text",
              "html"
            ],
            "description": "Input format: \"text\" (default) or \"html\" (preserves HTML tags)"
          }
        },
        "required": [
          "text",
          "target"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "translate.text.detect",
      "description": "Detect the language of text \u2014 returns language code and confidence score. Supports batch detection (Langbly)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to detect language of \u2014 single string or array"
          }
        },
        "required": [
          "text"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "translate.text.languages",
      "description": "List all 90+ supported translation languages with localized names. Specify display_language to get names in that language (Langbly)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "display_language": {
            "type": "string",
            "description": "Language code to display names in (e.g. \"en\" returns \"Spanish\", \"es\" returns \"Espa\u00f1ol\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "phone.twilio.lookup",
      "description": "Validate and look up phone number info \u2014 format validation, country, national format. Optional: carrier name, line type (mobile/landline/VoIP), caller name CNAM (Twilio)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "phone_number": {
            "type": "string",
            "description": "Phone number in E.164 format (e.g. \"+14157012311\", \"+442071234567\")",
            "minLength": 1
          },
          "include_carrier": {
            "type": "boolean",
            "description": "Include carrier/line type info (costs extra credit). Returns carrier name, line type (mobile/landline/voip)."
          },
          "include_caller_name": {
            "type": "boolean",
            "description": "Include caller name CNAM lookup (costs extra credit). US numbers only."
          }
        },
        "required": [
          "phone_number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "phone.twilio.sms",
      "description": "Send SMS message to any phone number worldwide. Requires a Twilio phone number as sender. Returns message SID and delivery status. $0.0083/SMS US outbound (Twilio)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "to": {
            "type": "string",
            "description": "Recipient phone number in E.164 format (e.g. \"+14155551234\")",
            "minLength": 1
          },
          "from": {
            "type": "string",
            "description": "Sender phone number \u2014 must be a Twilio number you own (e.g. \"+15551234567\")",
            "minLength": 1
          },
          "body": {
            "type": "string",
            "description": "SMS message text (max 1600 chars, splits into multiple segments if >160)",
            "minLength": 1,
            "maxLength": 1600
          }
        },
        "required": [
          "to",
          "from",
          "body"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "ai.image.generate",
      "description": "Generate images from text prompts using Stable Diffusion \u2014 supports style presets (anime, cinematic, pixel-art, photographic...), aspect ratios, negative prompts. Returns base64 PNG data URI. Powered by Stability AI",
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Text prompt describing the image to generate (e.g. \"a futuristic city at sunset, cyberpunk style, detailed\")",
            "minLength": 1,
            "maxLength": 10000
          },
          "negative_prompt": {
            "type": "string",
            "description": "What to exclude from the image (e.g. \"blurry, low quality, text, watermark\")"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "1:1",
              "16:9",
              "21:9",
              "2:3",
              "3:2",
              "4:5",
              "5:4",
              "9:16",
              "9:21"
            ],
            "description": "Image aspect ratio (default \"1:1\")"
          },
          "style_preset": {
            "type": "string",
            "enum": [
              "3d-model",
              "analog-film",
              "anime",
              "cinematic",
              "comic-book",
              "digital-art",
              "enhance",
              "fantasy-art",
              "isometric",
              "line-art",
              "low-poly",
              "neon-punk",
              "origami",
              "photographic",
              "pixel-art",
              "tile-texture"
            ],
            "description": "Style preset to guide generation"
          }
        },
        "required": [
          "prompt"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "email.transactional.send",
      "description": "Send transactional email \u2014 plain text or HTML body, multiple recipients, reply-to. Requires verified sender domain. 3,000 free emails/month (Resend)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "to": {
            "type": "string",
            "description": "Recipient email address(es) \u2014 single email or array of emails"
          },
          "subject": {
            "type": "string",
            "description": "Email subject line",
            "minLength": 1
          },
          "text": {
            "type": "string",
            "description": "Plain text email body"
          },
          "html": {
            "type": "string",
            "description": "HTML email body (alternative to text)"
          },
          "from": {
            "type": "string",
            "description": "Sender email (default: noreply@apibase.pro). Must be a verified domain."
          },
          "reply_to": {
            "type": "string",
            "description": "Reply-to email address"
          }
        },
        "required": [
          "to",
          "subject"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "email.transactional.status",
      "description": "Check delivery status of a sent email by ID \u2014 last event, timestamps (Resend)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email_id": {
            "type": "string",
            "description": "Email ID returned from send_email (e.g. \"d1c6e0a8-...\")"
          }
        },
        "required": [
          "email_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "social.mastodon.trending",
      "description": "Trending posts on Mastodon (Fediverse) \u2014 popular content across the decentralized social network. Returns post text, author, reblogs, favourites, replies. No auth needed, $0 upstream (Mastodon.social)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 40,
            "description": "Number of trending posts to return (default 10, max 40)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "social.mastodon.tags",
      "description": "Trending hashtags on Mastodon \u2014 top topics with usage counts. Track social media trends on the decentralized network. No auth needed (Mastodon.social)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of trending hashtags to return (default 10, max 20)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.regulations.search",
      "description": "Search US federal regulatory documents \u2014 rules, proposed rules, notices, presidential documents. Filter by agency (EPA, SEC, FDA...), document type, date. 7,500+ results for \"artificial intelligence\" (Regulations.gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search keywords in federal regulatory documents (e.g. \"artificial intelligence\", \"climate change\")"
          },
          "document_type": {
            "type": "string",
            "enum": [
              "Rule",
              "Proposed Rule",
              "Notice",
              "Presidential Document"
            ],
            "description": "Filter by document type"
          },
          "agency": {
            "type": "string",
            "description": "Filter by agency ID (e.g. \"EPA\", \"SEC\", \"FDA\")"
          },
          "posted_after": {
            "type": "string",
            "description": "Only documents posted after this date (YYYY-MM-DD)"
          },
          "limit": {
            "type": "integer",
            "minimum": 5,
            "maximum": 25,
            "description": "Number of results (default 10, min 5, max 25)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "postedDate",
              "-postedDate",
              "title",
              "documentId"
            ],
            "description": "Sort order (default: -postedDate, newest first)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.regulations.document",
      "description": "Get full details of a US federal regulatory document by ID \u2014 title, abstract, agency, comment count, docket, dates. Public domain (Regulations.gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "description": "Document ID from search results (e.g. \"FDA-2024-N-0001-0001\")"
          }
        },
        "required": [
          "document_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.fedregister.search",
      "description": "Search the US Federal Register \u2014 final rules, proposed rules, notices, executive orders. Filter by agency, type, date. 90+ years of official federal government records (Federal Register)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search keywords in Federal Register (e.g. \"executive order\", \"cryptocurrency regulation\")"
          },
          "document_type": {
            "type": "string",
            "enum": [
              "RULE",
              "PRORULE",
              "NOTICE",
              "PRESDOCU"
            ],
            "description": "Type: RULE (final rule), PRORULE (proposed rule), NOTICE, PRESDOCU (presidential document/executive order)"
          },
          "agency": {
            "type": "string",
            "description": "Agency slug (e.g. \"environmental-protection-agency\", \"securities-and-exchange-commission\")"
          },
          "published_after": {
            "type": "string",
            "description": "Only documents published after this date (MM/DD/YYYY)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (default 10, max 20)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "newest",
              "oldest",
              "relevance"
            ],
            "description": "Sort order (default: newest)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.fedregister.document",
      "description": "Get full Federal Register document by number \u2014 title, abstract, agencies, effective date, PDF link, comment deadline (Federal Register)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document_number": {
            "type": "string",
            "description": "Federal Register document number (e.g. \"2026-12345\")"
          }
        },
        "required": [
          "document_number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.fedregister.recent",
      "description": "Latest documents published in the Federal Register \u2014 filter by type (rules, proposed rules, notices, presidential). No search query needed (Federal Register)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "document_type": {
            "type": "string",
            "enum": [
              "RULE",
              "PRORULE",
              "NOTICE",
              "PRESDOCU"
            ],
            "description": "Filter by type (default: all types)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (default 10, max 20)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.caselaw.search",
      "description": "Search US federal and state court opinions \u2014 filter by court (scotus, ca9, dcd...), date range, relevance. Largest free US case law archive. 7,000+ AI-related opinions (CourtListener / Free Law Project)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for US court opinions (e.g. \"artificial intelligence liability\", \"Fourth Amendment digital privacy\")"
          },
          "type": {
            "type": "string",
            "enum": [
              "o",
              "r"
            ],
            "description": "Search type: \"o\" (opinions, default) or \"r\" (RECAP dockets)"
          },
          "court": {
            "type": "string",
            "description": "Court filter (e.g. \"scotus\" for Supreme Court, \"ca9\" for 9th Circuit, \"dcd\" for DC District)"
          },
          "filed_after": {
            "type": "string",
            "description": "Only cases filed after this date (YYYY-MM-DD)"
          },
          "filed_before": {
            "type": "string",
            "description": "Only cases filed before this date (YYYY-MM-DD)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (default 10, max 20)"
          },
          "order_by": {
            "type": "string",
            "enum": [
              "score desc",
              "dateFiled desc",
              "dateFiled asc"
            ],
            "description": "Sort: relevance (default), newest, oldest"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.caselaw.opinion",
      "description": "Get full text of a US court opinion by ID \u2014 author, type, date, download URL. Up to 5,000 characters of opinion text (CourtListener)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "opinion_id": {
            "type": "string",
            "description": "Opinion ID from search results"
          }
        },
        "required": [
          "opinion_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "legal.caselaw.dockets",
      "description": "Search PACER/RECAP federal court dockets \u2014 case filings, motions, orders. Filter by court. From the RECAP Archive (CourtListener / Free Law Project)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query for RECAP dockets"
          },
          "court": {
            "type": "string",
            "description": "Court filter"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (default 10)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ai.ocr.extract",
      "description": "Extract text from any image or PDF URL using OCR \u2014 supports 20+ languages including English, Russian, Chinese, Japanese, Korean, Arabic. Returns recognized text. Handles PNG, JPG, GIF, BMP, PDF, TIFF (OCR.space)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of the image or PDF to extract text from (PNG, JPG, GIF, BMP, PDF, TIFF supported)"
          },
          "language": {
            "type": "string",
            "enum": [
              "eng",
              "ara",
              "chs",
              "cht",
              "dan",
              "dut",
              "fin",
              "fre",
              "ger",
              "gre",
              "hun",
              "ita",
              "jpn",
              "kor",
              "nor",
              "pol",
              "por",
              "rus",
              "spa",
              "swe",
              "tur"
            ],
            "description": "OCR language: \"eng\" (English, default), \"rus\" (Russian), \"ger\" (German), \"fre\" (French), \"spa\" (Spanish), \"jpn\" (Japanese), \"kor\" (Korean), \"chs\" (Chinese Simplified)"
          },
          "filetype": {
            "type": "string",
            "enum": [
              "PNG",
              "JPG",
              "GIF",
              "BMP",
              "PDF",
              "TIFF"
            ],
            "description": "File type hint \u2014 set if URL has no extension or content-type is wrong"
          },
          "detect_orientation": {
            "type": "boolean",
            "description": "Auto-detect and correct image orientation (default false)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "stocks.market.quote",
      "description": "Real-time stock price quote \u2014 current price, change, percent change, day high/low, open, previous close. Supports US stocks, ETFs, and major global exchanges (Finnhub)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Stock ticker symbol (e.g. \"AAPL\", \"GOOGL\", \"TSLA\", \"MSFT\")",
            "minLength": 1,
            "maxLength": 10
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "stocks.company.profile",
      "description": "Company profile by ticker \u2014 name, exchange, industry, country, market cap, shares outstanding, IPO date, logo, website (Finnhub)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Stock ticker symbol (e.g. \"AAPL\")",
            "minLength": 1,
            "maxLength": 10
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "stocks.company.news",
      "description": "Latest news articles about a specific company \u2014 headline, source, summary, date, image. Filter by date range (Finnhub)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Stock ticker symbol (e.g. \"AAPL\")",
            "minLength": 1,
            "maxLength": 10
          },
          "from": {
            "type": "string",
            "description": "Start date in YYYY-MM-DD format (default: 7 days ago)"
          },
          "to": {
            "type": "string",
            "description": "End date in YYYY-MM-DD format (default: today)"
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "stocks.market.candles",
      "description": "Historical OHLCV candlestick data \u2014 open, high, low, close, volume with configurable resolution (1min to monthly). Use for charting and technical analysis (Finnhub)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Stock ticker symbol (e.g. \"AAPL\")",
            "minLength": 1,
            "maxLength": 10
          },
          "resolution": {
            "type": "string",
            "enum": [
              "1",
              "5",
              "15",
              "30",
              "60",
              "D",
              "W",
              "M"
            ],
            "description": "Candle resolution: \"1\",\"5\",\"15\",\"30\",\"60\" (minutes), \"D\" (day), \"W\" (week), \"M\" (month). Default: \"D\""
          },
          "from": {
            "type": "integer",
            "description": "Start timestamp (Unix seconds). Default: 30 days ago"
          },
          "to": {
            "type": "integer",
            "description": "End timestamp (Unix seconds). Default: now"
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "stocks.market.news",
      "description": "General market news \u2014 categories: general, forex, crypto, merger. Top headlines with source, summary, and images (Finnhub)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "general",
              "forex",
              "crypto",
              "merger"
            ],
            "description": "News category: \"general\" (default), \"forex\", \"crypto\", \"merger\""
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "news.global.latest",
      "description": "Latest news from 180,000+ sources across 200+ countries in 70+ languages. Filter by keyword, country, category, language, domain, and recency. Returns title, link, description, source, sentiment, keywords (NewsData.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search keywords in article title and content (e.g. \"AI agents\", \"climate change\")"
          },
          "country": {
            "type": "string",
            "description": "Country code filter, comma-separated (e.g. \"us\", \"gb,de,fr\"). 200+ countries supported."
          },
          "category": {
            "type": "string",
            "description": "Category filter, comma-separated: business, entertainment, environment, food, health, politics, science, sports, technology, top, tourism, world"
          },
          "language": {
            "type": "string",
            "description": "Language code filter (e.g. \"en\", \"de\", \"fr\", \"es\"). 70+ languages supported."
          },
          "domain": {
            "type": "string",
            "description": "Filter by source domain (e.g. \"bbc.co.uk\", \"nytimes.com\")"
          },
          "timeframe": {
            "type": "string",
            "description": "Recency filter in hours (e.g. \"24\" for last 24 hours, \"1\" for last hour)"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of articles to return (default 10, max 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "news.crypto.latest",
      "description": "Cryptocurrency and blockchain news feed \u2014 filter by coin (Bitcoin, Ethereum, Solana...), keyword, language. Dedicated crypto news index from specialized sources (NewsData.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search keywords in crypto news (e.g. \"Bitcoin ETF\", \"DeFi\")"
          },
          "language": {
            "type": "string",
            "description": "Language code (e.g. \"en\")"
          },
          "coin": {
            "type": "string",
            "description": "Specific coin filter (e.g. \"Bitcoin\", \"Ethereum\", \"Solana\")"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of articles (default 10, max 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "news.global.sources",
      "description": "Browse available news sources \u2014 filter by country, language, and category. Returns source name, URL, categories, and languages covered. 180,000+ sources indexed (NewsData.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code to filter sources (e.g. \"us\", \"gb\")"
          },
          "language": {
            "type": "string",
            "description": "Language code to filter sources (e.g. \"en\")"
          },
          "category": {
            "type": "string",
            "description": "Category to filter sources (e.g. \"technology\", \"business\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.semantic.web",
      "description": "Neural/semantic web search \u2014 finds conceptually related pages, not just keyword matches. Supports category filters (company, research paper, news, people, tweet), domain filtering, date range. Returns relevance scores and highlighted excerpts (Exa)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Natural language search query \u2014 Exa finds semantically related pages, not just keyword matches",
            "minLength": 1
          },
          "num_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of results (default 10, max 25)"
          },
          "type": {
            "type": "string",
            "enum": [
              "auto",
              "neural",
              "keyword"
            ],
            "description": "Search type: \"auto\" (balanced), \"neural\" (semantic similarity), \"keyword\" (traditional). Default: auto"
          },
          "category": {
            "type": "string",
            "enum": [
              "company",
              "research paper",
              "news",
              "people",
              "tweet"
            ],
            "description": "Category filter for specialized indexes (optional)"
          },
          "include_domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Only include results from these domains (e.g. [\"arxiv.org\"])"
          },
          "exclude_domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Exclude results from these domains"
          },
          "start_published_date": {
            "type": "string",
            "description": "Filter: only results published after this date (ISO format, e.g. \"2025-01-01\")"
          },
          "end_published_date": {
            "type": "string",
            "description": "Filter: only results published before this date"
          },
          "include_text": {
            "type": "boolean",
            "description": "Include full extracted page text in results (default false \u2014 saves tokens)"
          },
          "include_highlights": {
            "type": "boolean",
            "description": "Include key sentence highlights (default true)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.semantic.contents",
      "description": "Extract clean text content from up to 10 URLs \u2014 returns title, author, published date, full text. Use for feeding web pages into agent context (Exa)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "URLs to extract content from (1-10). Returns clean text, title, author, date.",
            "minItems": 1,
            "maxItems": 10
          }
        },
        "required": [
          "urls"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.semantic.similar",
      "description": "Find web pages semantically similar to a given URL \u2014 discover related content, competitors, alternatives without knowing what to search for. Unique capability for research agents (Exa)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Reference URL \u2014 Exa finds pages semantically similar to this one"
          },
          "num_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of similar pages (default 10, max 25)"
          },
          "exclude_source_domain": {
            "type": "boolean",
            "description": "Exclude results from same domain as input URL (default true)"
          },
          "start_published_date": {
            "type": "string",
            "description": "Only include similar pages published after this date (ISO format)"
          },
          "include_text": {
            "type": "boolean",
            "description": "Include full extracted page text (default false)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.ai.web",
      "description": "AI-optimized web search \u2014 returns synthesized answer + curated results with extracted page content and relevance scores. Built for LLM/agent RAG pipelines. Supports domain filtering and recency (Tavily)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query \u2014 Tavily returns AI-synthesized answer + curated results with extracted content",
            "minLength": 1
          },
          "search_depth": {
            "type": "string",
            "enum": [
              "basic",
              "advanced"
            ],
            "description": "Search depth: \"basic\" (faster, 1 credit) or \"advanced\" (deeper, 2 credits). Default: basic"
          },
          "include_answer": {
            "type": "boolean",
            "description": "Include AI-synthesized answer based on search results (default true)"
          },
          "max_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results to return (default 5, max 20)"
          },
          "include_domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Only include results from these domains (e.g. [\"wikipedia.org\", \"arxiv.org\"])"
          },
          "exclude_domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Exclude results from these domains (e.g. [\"reddit.com\"])"
          },
          "days": {
            "type": "integer",
            "minimum": 1,
            "description": "Recency filter \u2014 only include results from the last N days"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.ai.extract",
      "description": "Extract clean readable content from up to 20 URLs \u2014 returns text, title, author, published date. Eliminates scraping. Perfect for feeding web pages into agent context windows (Tavily)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "URLs to extract clean content from (1-20 URLs). Returns readable text, title, author, date.",
            "minItems": 1,
            "maxItems": 20
          }
        },
        "required": [
          "urls"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.google.web",
      "description": "Real-time Google web search results \u2014 organic listings, knowledge graph, answer box, people also ask, related searches. Supports country and language targeting. Powered by Serper.dev",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query (e.g. \"best restaurants in Berlin\", \"how does MCP protocol work\")",
            "minLength": 1
          },
          "gl": {
            "type": "string",
            "maxLength": 2,
            "description": "Country code for localized results (e.g. \"us\", \"gb\", \"de\", \"fr\")"
          },
          "hl": {
            "type": "string",
            "maxLength": 5,
            "description": "Language code for results (e.g. \"en\", \"de\", \"fr\", \"es\")"
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results to return (default 10, max 100)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination (default 1)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.google.news",
      "description": "Real-time Google News articles \u2014 title, source, date, snippet, image. Filter by time (past hour/day/week/month). Global coverage in 70+ languages (Serper.dev)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "News search query (e.g. \"AI agents\", \"Base network\")",
            "minLength": 1
          },
          "gl": {
            "type": "string",
            "maxLength": 2,
            "description": "Country code for localized news (e.g. \"us\", \"gb\")"
          },
          "hl": {
            "type": "string",
            "maxLength": 5,
            "description": "Language code (e.g. \"en\", \"de\")"
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of articles (default 10, max 100)"
          },
          "tbs": {
            "type": "string",
            "description": "Time filter: \"qdr:h\" (past hour), \"qdr:d\" (past day), \"qdr:w\" (past week), \"qdr:m\" (past month)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.google.images",
      "description": "Google Image search results \u2014 image URL, thumbnail, dimensions, source domain. Search any visual content worldwide (Serper.dev)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Image search query (e.g. \"golden gate bridge sunset\")",
            "minLength": 1
          },
          "gl": {
            "type": "string",
            "maxLength": 2,
            "description": "Country code (e.g. \"us\")"
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of images (default 10, max 100)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search.google.shopping",
      "description": "Google Shopping product listings \u2014 title, price, source, rating, delivery info, product images. Compare prices across retailers (Serper.dev)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Product search query (e.g. \"macbook pro 16 inch\", \"wireless headphones\")",
            "minLength": 1
          },
          "gl": {
            "type": "string",
            "maxLength": 2,
            "description": "Country code for localized prices (e.g. \"us\", \"gb\")"
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of products (default 10, max 100)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "realestate.listings.for_sale",
      "description": "Search active for-sale property listings across the US \u2014 filter by city, state, ZIP, price range, bedrooms, bathrooms, sqft, property type. Returns address, price, specs, photos. Millions of MLS listings (RapidAPI / Realtor.com data)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "City name, e.g. \"Austin\" (use with state_code)"
          },
          "state_code": {
            "type": "string",
            "maxLength": 2,
            "description": "Two-letter US state code, e.g. \"TX\""
          },
          "postal_code": {
            "type": "string",
            "description": "ZIP code, e.g. \"78701\" (alternative to city+state)"
          },
          "price_min": {
            "type": "integer",
            "description": "Minimum listing price in USD"
          },
          "price_max": {
            "type": "integer",
            "description": "Maximum listing price in USD"
          },
          "beds_min": {
            "type": "integer",
            "minimum": 1,
            "description": "Minimum number of bedrooms"
          },
          "baths_min": {
            "type": "integer",
            "minimum": 1,
            "description": "Minimum number of bathrooms"
          },
          "sqft_min": {
            "type": "integer",
            "description": "Minimum square footage"
          },
          "property_type": {
            "type": "string",
            "enum": [
              "single_family",
              "multi_family",
              "condo",
              "townhomes",
              "mobile",
              "land",
              "farm"
            ],
            "description": "Property type filter"
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevant",
              "newest",
              "price_low",
              "price_high",
              "open_house_date",
              "sqft_high",
              "price_reduced_date"
            ],
            "description": "Sort order (default: relevant)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 42,
            "description": "Number of results (default 10, max 42)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Pagination offset (default 0)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "realestate.property.details",
      "description": "Detailed property information by property ID \u2014 beds, baths, sqft, year built, lot size, tax assessment, HOA, days on market, photos, last sale price/date. Use for_sale search first to get property_id (RapidAPI / Realtor.com data)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "description": "Property ID from a for_sale search result (e.g. \"2734304997\")"
          }
        },
        "required": [
          "property_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "realestate.location.suggest",
      "description": "Autocomplete location search for US real estate \u2014 returns matching cities, ZIP codes, and addresses with coordinates. Use to find valid city/state codes for property searches (RapidAPI / Realtor.com data)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Location search query \u2014 city name, address, or ZIP code (e.g. \"Austin TX\", \"90210\")",
            "minLength": 2
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "realestate.walkscore.score",
      "description": "Walk Score (0-100), Transit Score (0-100), and Bike Score (0-100) for any US/Canada address. Measures walkability to amenities, public transit quality, and cycling infrastructure. Industry-standard walkability metric used by 30,000+ websites (Walk Score / Redfin)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Full street address, e.g. \"1119 8th Avenue Seattle WA 98101\""
          },
          "latitude": {
            "type": "number",
            "description": "Latitude of the address (-90 to 90). Use geo.geocode to get coordinates.",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "description": "Longitude of the address (-180 to 180). Use geo.geocode to get coordinates.",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "address",
          "latitude",
          "longitude"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "environment.airquality.city",
      "description": "Real-time air quality index (AQI US + CN), pollutant concentrations (PM2.5, PM10, O3, NO2, SO2, CO), dominant pollutant, temperature, humidity, wind speed for any city worldwide. 30,000+ monitoring stations across 10,000+ cities (IQAir AirVisual)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "City name (e.g. \"Los Angeles\", \"London\", \"Tokyo\")",
            "minLength": 1
          },
          "state": {
            "type": "string",
            "description": "State or province (e.g. \"California\", \"England\", \"Tokyo\")",
            "minLength": 1
          },
          "country": {
            "type": "string",
            "description": "Country name (e.g. \"USA\", \"UK\", \"Japan\")",
            "minLength": 1
          }
        },
        "required": [
          "city",
          "state",
          "country"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "environment.airquality.nearest",
      "description": "Real-time air quality index (AQI) and weather data for the nearest monitoring station to given GPS coordinates. Returns nearest city, AQI (US + CN), dominant pollutant, PM2.5/PM10/O3 concentrations, temperature, humidity (IQAir AirVisual)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude (-90 to 90, e.g. 34.0522)",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "description": "Longitude (-180 to 180, e.g. -118.2437)",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "nutrition.fatsecret.search",
      "description": "Search 2.3M+ food items by name \u2014 branded products, restaurant meals, generic foods from 190+ countries. Returns food ID, name, type, brand, and per-serving summary (calories, fat, carbs, protein). Use food_id for detailed nutritional lookup (FatSecret)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Food name to search (e.g. \"chicken breast\", \"banana\", \"greek yogurt\")",
            "minLength": 1
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Page number for pagination (default 0)"
          },
          "max_results": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Results per page (default 20, max 50)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "nutrition.fatsecret.details",
      "description": "Complete nutritional profile for a food item by FatSecret ID \u2014 all serving sizes with calories, total/saturated/trans fat, cholesterol, sodium, potassium, carbs, fiber, sugar, protein, vitamins A/C/D, calcium, iron. 2.3M+ foods (FatSecret)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "food_id": {
            "type": "string",
            "description": "FatSecret food ID from search results (e.g. \"33691\" for chicken breast)",
            "minLength": 1
          }
        },
        "required": [
          "food_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.autodev.vin_decode",
      "description": "Decode any VIN worldwide (100+ countries) \u2014 make, model, year, trim, engine, transmission, drive type, body style, origin country, manufacturer. Covers EU, Asia, and other markets beyond US-only NHTSA. Static data cached 24h (Auto.dev)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "vin": {
            "type": "string",
            "description": "17-character Vehicle Identification Number (e.g. \"WP0AF2A99KS165242\" for Porsche, \"WBAFR7C51BC603689\" for BMW)",
            "minLength": 17,
            "maxLength": 17
          }
        },
        "required": [
          "vin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.pexels.search_photos",
      "description": "Search curated free stock photos by keyword \u2014 filter by orientation (landscape/portrait/square), color, size. Returns multiple resolutions (original to tiny), photographer name, Pexels URL. Free for commercial use (Pexels)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search term (e.g. \"sunset beach\", \"office meeting\", \"technology\")",
            "minLength": 1
          },
          "orientation": {
            "type": "string",
            "enum": [
              "landscape",
              "portrait",
              "square"
            ],
            "description": "Photo orientation filter"
          },
          "color": {
            "type": "string",
            "description": "Color filter (e.g. \"red\", \"blue\", \"green\", \"yellow\", \"orange\", \"white\", \"black\")"
          },
          "size": {
            "type": "string",
            "enum": [
              "large",
              "medium",
              "small"
            ],
            "description": "Minimum photo size"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Results per page (default 10, max 80)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.pexels.search_videos",
      "description": "Search free stock videos by keyword \u2014 returns HD/SD video files with dimensions, duration, download URLs. Free for commercial use (Pexels)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search term for videos (e.g. \"nature timelapse\", \"city traffic\", \"cooking\")",
            "minLength": 1
          },
          "orientation": {
            "type": "string",
            "enum": [
              "landscape",
              "portrait",
              "square"
            ],
            "description": "Video orientation"
          },
          "size": {
            "type": "string",
            "enum": [
              "large",
              "medium",
              "small"
            ],
            "description": "Minimum video size"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Results per page (default 10, max 80)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.pexels.curated",
      "description": "Hand-picked high-quality curated photos from Pexels \u2014 updated daily. Returns photographer, multiple sizes, Pexels URL. Perfect for featured images and hero sections (Pexels)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80,
            "description": "Number of curated photos (default 10, max 80)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.browser.create_session",
      "description": "Create a managed headless browser session on Browserbase infrastructure. Returns session ID and WebSocket connect URL for Puppeteer/Playwright. Choose region (US/EU/Asia) and optional residential proxy. Sessions auto-expire after 5 minutes of inactivity (Browserbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "proxy": {
            "type": "boolean",
            "description": "Use residential proxy for the session (default false)"
          },
          "region": {
            "type": "string",
            "enum": [
              "us-west-2",
              "us-east-1",
              "eu-central-1",
              "ap-southeast-1"
            ],
            "description": "Browser region (default us-west-2)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.browser.session_status",
      "description": "Check the status of a Browserbase session \u2014 running, completed, error, timed out. Returns CPU usage, memory, proxy bytes, start/end times (Browserbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "description": "Browserbase session ID (from create_session result)",
            "minLength": 1
          }
        },
        "required": [
          "session_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.browser.session_content",
      "description": "Get files downloaded during a browser session \u2014 screenshots, PDFs, extracted data (Browserbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "description": "Session ID to get downloads/content from",
            "minLength": 1
          }
        },
        "required": [
          "session_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.browser.list_sessions",
      "description": "List active or recent browser sessions \u2014 filter by status (running, completed, error). Returns session IDs, regions, start times (Browserbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "RUNNING",
              "ERROR",
              "TIMED_OUT",
              "COMPLETED"
            ],
            "description": "Filter by session status (default RUNNING)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "messaging.telegram.send_message",
      "description": "Send a text message to a Telegram user or group chat. Supports Markdown (*bold*, _italic_, `code`, [link](url)) and HTML formatting. Max 4096 chars. Perfect for alerts, notifications, reports (Telegram Bot API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "chat_id": {
            "type": "string",
            "description": "Telegram chat ID (number) or @channel_username (string). Get from get_updates or manually"
          },
          "text": {
            "type": "string",
            "description": "Message text (max 4096 chars). Supports Markdown: *bold*, _italic_, `code`, [link](url)",
            "minLength": 1,
            "maxLength": 4096
          },
          "parse_mode": {
            "type": "string",
            "enum": [
              "Markdown",
              "HTML"
            ],
            "description": "Text formatting: \"Markdown\" or \"HTML\" (default plain text)"
          },
          "disable_notification": {
            "type": "boolean",
            "description": "Send silently without notification sound (default false)"
          }
        },
        "required": [
          "chat_id",
          "text"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "messaging.telegram.send_photo",
      "description": "Send a photo to a Telegram chat with optional caption. Provide image URL \u2014 supports JPG, PNG, GIF up to 10MB (Telegram Bot API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "chat_id": {
            "type": "string",
            "description": "Target chat ID or @channel_username"
          },
          "photo": {
            "type": "string",
            "description": "Photo URL (https://...) or Telegram file_id from previous upload"
          },
          "caption": {
            "type": "string",
            "maxLength": 1024,
            "description": "Photo caption (max 1024 chars)"
          }
        },
        "required": [
          "chat_id",
          "photo"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "messaging.telegram.send_document",
      "description": "Send a file/document to a Telegram chat \u2014 PDF, CSV, ZIP, any format up to 50MB. Perfect for sending reports, data exports, generated files (Telegram Bot API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "chat_id": {
            "type": "string",
            "description": "Target chat ID or @channel_username"
          },
          "document": {
            "type": "string",
            "description": "Document URL (https://...) \u2014 PDF, CSV, ZIP, etc."
          },
          "caption": {
            "type": "string",
            "maxLength": 1024,
            "description": "Document caption"
          }
        },
        "required": [
          "chat_id",
          "document"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "messaging.telegram.get_updates",
      "description": "Get recent incoming messages and events for the bot \u2014 new messages, user info, chat type. Use offset to get only new updates since last check (Telegram Bot API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of updates to retrieve (default 10, max 100)"
          },
          "offset": {
            "type": "integer",
            "description": "Update ID offset \u2014 pass last update_id + 1 to get only new updates"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "messaging.telegram.get_chat",
      "description": "Get info about a Telegram chat \u2014 title, type (private/group/supergroup/channel), description, member count, invite link, username (Telegram Bot API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "chat_id": {
            "type": "string",
            "description": "Chat ID or @username to get info about"
          }
        },
        "required": [
          "chat_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.clinical.search",
      "description": "Search 577,000+ clinical trials worldwide \u2014 filter by condition (cancer, diabetes), intervention (drug name), sponsor, status (recruiting/completed), phase. Returns NCT ID, title, status, conditions, interventions, sponsor, enrollment. US National Library of Medicine (ClinicalTrials.gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search term (e.g. \"diabetes\", \"pembrolizumab\", \"Pfizer COVID vaccine\")"
          },
          "condition": {
            "type": "string",
            "description": "Filter by medical condition (e.g. \"Breast Cancer\", \"Alzheimer\", \"Type 2 Diabetes\")"
          },
          "intervention": {
            "type": "string",
            "description": "Filter by drug/device/procedure name (e.g. \"aspirin\", \"pacemaker\", \"chemotherapy\")"
          },
          "status": {
            "type": "string",
            "enum": [
              "RECRUITING",
              "COMPLETED",
              "ACTIVE_NOT_RECRUITING",
              "NOT_YET_RECRUITING",
              "TERMINATED",
              "WITHDRAWN",
              "SUSPENDED"
            ],
            "description": "Filter by trial status"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Results per page (default 10, max 100)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.clinical.study",
      "description": "Full details for a clinical trial by NCT ID \u2014 protocol, conditions, interventions with dosing, eligibility criteria (age, sex), primary/secondary outcomes, sponsor, enrollment, phase, study design, dates, results if available (ClinicalTrials.gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nct_id": {
            "type": "string",
            "description": "NCT identifier (e.g. \"NCT03491410\", \"NCT04368728\"). Get from search results",
            "minLength": 1
          }
        },
        "required": [
          "nct_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "health.clinical.stats",
      "description": "Total number of registered clinical studies in the ClinicalTrials.gov database (577,000+ as of March 2026) (ClinicalTrials.gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "string",
            "description": "Optional \u2014 currently returns total database statistics"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "domain.namesilo.check",
      "description": "Check if domain names are available for registration. Returns availability status, registration price, and renewal price per domain. Supports all TLDs (.com, .io, .dev, .app, .ai, etc.) (NameSilo)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domains": {
            "type": "string",
            "description": "Comma-separated domain names to check availability (e.g. \"example.com,mysite.io,startup.dev\")",
            "minLength": 3
          }
        },
        "required": [
          "domains"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "domain.namesilo.register",
      "description": "Purchase and register a domain name (1-10 years). Includes free WHOIS privacy protection. Domain is registered instantly. Prices: .com ~$21, .org ~$12, .dev ~$18, .io ~$42 (NameSilo)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to register (e.g. \"mybusiness.com\")",
            "minLength": 3
          },
          "years": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Registration period in years (default 1, max 10)"
          },
          "private": {
            "type": "boolean",
            "description": "Enable free WHOIS privacy (default true)"
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "domain.namesilo.list",
      "description": "List all domains registered in the account with expiry dates and status (NameSilo)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "string",
            "description": "Optional keyword to filter domain list"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "domain.namesilo.info",
      "description": "Get detailed info for a domain \u2014 nameservers, creation/expiry dates, lock status, auto-renew setting, WHOIS contact (NameSilo)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to get details for (e.g. \"example.com\")",
            "minLength": 3
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "domain.namesilo.prices",
      "description": "Get current registration, renewal, and transfer prices for popular TLDs (.com, .net, .org, .io, .dev, .app, .ai, .co, .xyz, .tech, etc.) (NameSilo)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tld": {
            "type": "string",
            "description": "Optional TLD to filter (e.g. \"com\", \"io\"). Omit for all popular TLDs"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.cloudflare.zones_list",
      "description": "List all domains (zones) managed in Cloudflare \u2014 zone ID, domain name, status (active/pending), plan, nameservers. Filter by domain name or status. Zone ID needed for all other Cloudflare tools (Cloudflare)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Filter by domain name (e.g. \"example.com\")"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "pending",
              "initializing",
              "moved",
              "deleted"
            ],
            "description": "Filter by zone status"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Results per page (default 20, max 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.cloudflare.dns_list",
      "description": "List all DNS records for a Cloudflare zone \u2014 A, AAAA, CNAME, MX, TXT, NS records with name, content, TTL, proxy status. Filter by type or name (Cloudflare)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string",
            "description": "Cloudflare Zone ID (from zones_list results)",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "TXT",
              "NS",
              "SRV",
              "CAA"
            ],
            "description": "Filter by record type"
          },
          "name": {
            "type": "string",
            "description": "Filter by record name (e.g. \"www.example.com\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Results per page (default 50, max 100)"
          }
        },
        "required": [
          "zone_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.cloudflare.dns_create",
      "description": "Create a new DNS record (A, AAAA, CNAME, MX, TXT) for a Cloudflare zone. Set content (IP/hostname), TTL, and CDN proxy status. Returns new record ID (Cloudflare)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string",
            "description": "Cloudflare Zone ID",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "TXT",
              "NS",
              "SRV",
              "CAA"
            ],
            "description": "DNS record type"
          },
          "name": {
            "type": "string",
            "description": "Record name \u2014 subdomain or \"@\" for root (e.g. \"www\", \"api\", \"@\")",
            "minLength": 1
          },
          "content": {
            "type": "string",
            "description": "Record value \u2014 IP address for A/AAAA, hostname for CNAME, text for TXT",
            "minLength": 1
          },
          "ttl": {
            "type": "integer",
            "description": "TTL in seconds (1 = automatic, 60-86400 for manual)"
          },
          "proxied": {
            "type": "boolean",
            "description": "Enable Cloudflare CDN proxy (default false). True = orange cloud, hides origin IP"
          },
          "priority": {
            "type": "integer",
            "description": "Priority for MX records (e.g. 10, 20)"
          }
        },
        "required": [
          "zone_id",
          "type",
          "name",
          "content"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.cloudflare.dns_delete",
      "description": "Delete a DNS record from a Cloudflare zone by record ID. Removes the record immediately (Cloudflare)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string",
            "description": "Cloudflare Zone ID",
            "minLength": 1
          },
          "record_id": {
            "type": "string",
            "description": "DNS record ID to delete (from dns_list results)",
            "minLength": 1
          }
        },
        "required": [
          "zone_id",
          "record_id"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.cloudflare.zone_analytics",
      "description": "Traffic analytics for a Cloudflare zone \u2014 total requests, cached vs uncached, bandwidth, threats blocked, page views. Supports custom time ranges (last 24h, 7 days, etc.) (Cloudflare)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string",
            "description": "Cloudflare Zone ID",
            "minLength": 1
          },
          "since": {
            "type": "integer",
            "description": "Minutes ago to start from (e.g. -1440 for last 24h, -10080 for last 7 days)"
          }
        },
        "required": [
          "zone_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "infra.cloudflare.purge_cache",
      "description": "Purge Cloudflare CDN cache \u2014 all cached files or specific URLs (max 30). Forces CDN to fetch fresh content from origin server (Cloudflare)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string",
            "description": "Cloudflare Zone ID",
            "minLength": 1
          },
          "purge_everything": {
            "type": "boolean",
            "description": "Purge all cached files (default false)"
          },
          "files": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Specific URLs to purge (max 30)"
          }
        },
        "required": [
          "zone_id"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "tax.vatcomply.validate",
      "description": "Validate a European VAT number via VIES \u2014 returns validity status, company name, and registered address. Supports all 27 EU member states + UK. Format: country prefix + number (e.g. DE123456789) (VATcomply, open source)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "vat_number": {
            "type": "string",
            "description": "EU VAT number with country prefix (e.g. \"DE123456789\", \"FR12345678901\", \"GB123456789\")",
            "minLength": 4
          }
        },
        "required": [
          "vat_number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tax.vatcomply.rates",
      "description": "Get current VAT rates for EU countries \u2014 standard rate, reduced rates, super-reduced rate, parking rate. Query one country or all 27 EU members. Sourced from EU TEDB (VATcomply)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code for specific country VAT rates (e.g. \"DE\", \"FR\", \"IT\"). Omit for all EU countries"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tax.vatcomply.currencies",
      "description": "Current ECB reference exchange rates for 30+ currencies (USD, GBP, JPY, CHF, etc.) plus currency metadata \u2014 symbol, decimal places, issuing countries (VATcomply / ECB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "string",
            "description": "Optional currency code filter (e.g. \"USD\", \"GBP\"). Omit for all currencies"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "audio.transcribe.submit",
      "description": "Submit an audio file URL for speech-to-text transcription. Returns a transcript_id to check status and retrieve results. Supports MP3, WAV, M4A, FLAC, OGG, WebM. 99 languages auto-detected. Optional speaker diarization (AssemblyAI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "audio_url": {
            "type": "string",
            "description": "Publicly accessible URL of the audio file to transcribe (MP3, WAV, M4A, FLAC, OGG, WebM)"
          },
          "model": {
            "type": "string",
            "enum": [
              "universal-2",
              "universal-3-pro"
            ],
            "description": "Speech model: \"universal-2\" (default, fast, 99 languages) or \"universal-3-pro\" (highest accuracy, promptable)"
          },
          "language_code": {
            "type": "string",
            "description": "Language code (e.g. \"en\", \"es\", \"de\", \"fr\", \"ja\"). Auto-detected if omitted"
          },
          "speaker_labels": {
            "type": "boolean",
            "description": "Enable speaker diarization \u2014 detect who said what (default false)"
          }
        },
        "required": [
          "audio_url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "audio.transcribe.status",
      "description": "Check the status of a transcription job by transcript_id \u2014 queued, processing, completed, or error. Returns audio duration when completed (AssemblyAI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "transcript_id": {
            "type": "string",
            "description": "Transcript ID returned from transcribe.submit (e.g. \"aa8f42b3-e81e-453a-b010-a074ae76403b\")"
          }
        },
        "required": [
          "transcript_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "audio.transcribe.result",
      "description": "Retrieve the completed transcription text, word count, confidence score, detected language, and speaker labels (if diarization was enabled). Use transcript_id from submit (AssemblyAI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "transcript_id": {
            "type": "string",
            "description": "Transcript ID to get the completed transcription text for"
          }
        },
        "required": [
          "transcript_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "business.lei.search",
      "description": "Search 2.5M+ legal entities worldwide by name \u2014 companies, funds, government bodies across 200+ countries. Returns LEI code, name, country, city, status, entity category. Filter by country. CC0 open data (GLEIF)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Legal entity name to search (e.g. \"Apple\", \"Goldman Sachs\", \"Toyota Motor\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results (default 10, max 100)"
          },
          "country": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Filter by ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\", \"JP\", \"DE\")"
          }
        },
        "required": [
          "name"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "business.lei.lookup",
      "description": "Full details for a legal entity by 20-character LEI code \u2014 legal name, registered address, headquarters, legal form, registration date, renewal date, status. Use LEI from search results (GLEIF)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lei": {
            "type": "string",
            "description": "20-character Legal Entity Identifier code (e.g. \"HWUPKR0MPOU8FGXBT394\" for Apple Inc)",
            "minLength": 20,
            "maxLength": 20
          }
        },
        "required": [
          "lei"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "business.lei.relationships",
      "description": "Find the direct parent company of a legal entity by LEI code \u2014 returns parent LEI, relationship type, and status. Useful for corporate ownership chain analysis (GLEIF)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lei": {
            "type": "string",
            "description": "LEI code to find parent company relationship for",
            "minLength": 20,
            "maxLength": 20
          }
        },
        "required": [
          "lei"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "business.ukcompany.search",
      "description": "Search the UK Companies House registry by name \u2014 returns company number, name, type (plc/ltd), status (active/dissolved), incorporation date, registered address. Covers all companies registered under the Companies Act (Companies House UK Gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Company name to search (e.g. \"Barclays\", \"Tesco\", \"ARM Holdings\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results (default 10, max 100)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "business.ukcompany.details",
      "description": "Full details for a UK company by Companies House number \u2014 company name, type, status, SIC codes, registered address, accounts due date, confirmation statement due, charges, insolvency history (Companies House UK Gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "company_number": {
            "type": "string",
            "description": "UK Companies House number (e.g. \"00048839\" for Barclays, \"00445790\" for Tesco). Get from search results",
            "minLength": 1
          }
        },
        "required": [
          "company_number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.edgar.company_search",
      "description": "Search US public companies and SEC filings by name, ticker, or keyword. Returns company name, CIK number, form type, filing date. Covers all companies registered with the US Securities and Exchange Commission (SEC EDGAR)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Company name, ticker, or keyword to search (e.g. \"Apple Inc\", \"TSLA\", \"artificial intelligence\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max results to return (default 10, max 50)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.edgar.filings",
      "description": "List recent SEC filings for a company by CIK number \u2014 10-K (annual), 10-Q (quarterly), 8-K (events), proxy statements. Returns form type, filing date, document URL, description. Up to 1000 filings per company (SEC EDGAR)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cik": {
            "type": "string",
            "description": "SEC CIK number (e.g. \"320193\" for Apple, \"789019\" for Microsoft). Find via company_search",
            "minLength": 1
          }
        },
        "required": [
          "cik"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.edgar.company_facts",
      "description": "XBRL financial facts for a US public company \u2014 revenue, net income, assets, liabilities, equity, EPS, cash, operating income. Returns last 5 reporting periods per metric with form type and date. Structured data from 10-K/10-Q filings (SEC EDGAR)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cik": {
            "type": "string",
            "description": "SEC CIK number (e.g. \"320193\" for Apple). Returns XBRL financial facts: revenue, net income, assets, liabilities",
            "minLength": 1
          }
        },
        "required": [
          "cik"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "social.bluesky.search",
      "description": "Search posts across the Bluesky decentralized social network by keyword. Returns post text, author handle, display name, like/repost/reply counts, timestamps. Sort by relevance or latest. Filter by language (AT Protocol / Bluesky)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query for Bluesky posts (e.g. \"MCP server\", \"AI agents\", \"Claude\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results (default 25, max 100)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "top",
              "latest"
            ],
            "description": "Sort order: \"top\" (relevance) or \"latest\" (chronological)"
          },
          "lang": {
            "type": "string",
            "description": "Filter by language code (e.g. \"en\", \"ja\", \"pt\")"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "social.bluesky.profile",
      "description": "Get a Bluesky user profile \u2014 display name, bio, avatar URL, follower/following/post counts, account creation date. Lookup by handle (e.g. \"jay.bsky.team\") (AT Protocol / Bluesky)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string",
            "description": "Bluesky handle (e.g. \"jay.bsky.team\", \"pfrazee.com\", \"apibase.bsky.social\")",
            "minLength": 3
          }
        },
        "required": [
          "handle"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "social.bluesky.feed",
      "description": "Get recent posts from a Bluesky user by handle \u2014 post text, timestamps, like/repost counts. Up to 100 posts per request (AT Protocol / Bluesky)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string",
            "description": "Bluesky handle to get posts from (e.g. \"jay.bsky.team\")",
            "minLength": 3
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of posts to return (default 20, max 100)"
          }
        },
        "required": [
          "handle"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "culture.artic.search",
      "description": "Search 120,000+ artworks at the Art Institute of Chicago \u2014 paintings, sculptures, photographs, prints, textiles. Returns title, artist, date, medium, dimensions, IIIF image URL, public domain status. Covers all periods and regions (ARTIC)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query for artworks (e.g. \"monet water lilies\", \"picasso\", \"impressionism\", \"Japanese woodblock\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results (default 10, max 100)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination (default 1)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "culture.artic.artwork",
      "description": "Full details for a single artwork \u2014 title, artist, date, medium, dimensions, credit line, place of origin, department, provenance, exhibition history, high-res IIIF image URL. Use artwork ID from search results (ARTIC)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "ARTIC artwork ID from search results (e.g. 16568 for Monet Water Lilies)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "culture.artic.artist",
      "description": "Search artists and makers in the Art Institute of Chicago collection \u2014 name, birth/death dates, biography. Find artist IDs for cross-referencing with artwork search (ARTIC)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Artist name to search (e.g. \"Claude Monet\", \"Picasso\", \"Georgia O'Keeffe\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results (default 10, max 100)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "culture.europeana.search",
      "description": "Search 50M+ cultural heritage objects across 4,000 institutions in 36 European countries \u2014 paintings, photographs, books, maps, 3D objects, music, film. Multilingual (24 languages). Filter by country, media type. Returns title, creator, thumbnail, provider, year (Europeana)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search term (e.g. \"Rembrandt\", \"Mona Lisa\", \"medieval manuscript\", \"Art Nouveau poster\")",
            "minLength": 1
          },
          "rows": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results to return (default 12, max 100)"
          },
          "start": {
            "type": "integer",
            "minimum": 1,
            "description": "Start position for pagination (default 1)"
          },
          "media": {
            "type": "boolean",
            "description": "Only return items with media (images/video/audio) \u2014 default false"
          },
          "country": {
            "type": "string",
            "description": "Filter by country (e.g. \"Netherlands\", \"France\", \"Italy\", \"Germany\")"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "culture.europeana.record",
      "description": "Full metadata for a single cultural heritage object \u2014 title, creator, description, date, language, source, rights, high-res image URL, provider institution, landing page. Use ID from search results (Europeana)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Europeana record ID from search results (e.g. \"/09102/_GNM_693983\" or \"09102/_GNM_693983\")",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "document.convert.to_pdf",
      "description": "Convert Word (DOCX), Excel (XLSX), PowerPoint (PPTX), HTML, Markdown, RTF, ODT, or images (JPG/PNG/SVG) to PDF. Provide source file as URL. Custom page size and orientation. 200+ format pairs supported (ConvertAPI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "source_url": {
            "type": "string",
            "description": "Publicly accessible URL of the source file to convert (e.g. \"https://example.com/report.docx\")"
          },
          "from_format": {
            "type": "string",
            "enum": [
              "docx",
              "xlsx",
              "pptx",
              "html",
              "md",
              "jpg",
              "png",
              "svg",
              "rtf",
              "odt",
              "txt"
            ],
            "description": "Source file format"
          },
          "page_size": {
            "type": "string",
            "enum": [
              "a4",
              "letter",
              "legal",
              "a3",
              "a5"
            ],
            "description": "PDF page size (default \"a4\")"
          },
          "orientation": {
            "type": "string",
            "enum": [
              "portrait",
              "landscape"
            ],
            "description": "Page orientation (default \"portrait\")"
          }
        },
        "required": [
          "source_url",
          "from_format"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "document.convert.from_pdf",
      "description": "Convert PDF to Word (DOCX), Excel (XLSX), PowerPoint (PPTX), plain text (TXT), or images (JPG/PNG per page). Optional page range selection. Provide PDF as URL (ConvertAPI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "source_url": {
            "type": "string",
            "description": "Publicly accessible URL of the PDF to convert (e.g. \"https://example.com/doc.pdf\")"
          },
          "to_format": {
            "type": "string",
            "enum": [
              "docx",
              "xlsx",
              "pptx",
              "txt",
              "jpg",
              "png"
            ],
            "description": "Target format to convert PDF into"
          },
          "pages": {
            "type": "string",
            "description": "Page range to convert (e.g. \"1-5\", \"1,3,5\", default \"all\")"
          }
        },
        "required": [
          "source_url",
          "to_format"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "document.convert.web_to_pdf",
      "description": "Render any web page URL to PDF with full JavaScript execution \u2014 custom viewport width, lazy content loading, wait delay. Returns PDF download URL (ConvertAPI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Web page URL to render as PDF (e.g. \"https://example.com\")"
          },
          "viewport_width": {
            "type": "integer",
            "minimum": 320,
            "maximum": 3840,
            "description": "Browser viewport width in pixels (default 1280)"
          },
          "delay": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30,
            "description": "Seconds to wait after page load before capturing (default 0)"
          },
          "load_lazy_content": {
            "type": "boolean",
            "description": "Scroll page to trigger lazy-loaded images (default false)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "document.pdf.from_html",
      "description": "Convert HTML content to a PDF document using headless Chrome \u2014 full CSS + JavaScript rendering, custom page size, margins, headers/footers, background colors. Returns a temporary download URL for the generated PDF (API2PDF)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "html": {
            "type": "string",
            "description": "HTML content to convert to PDF (full document or fragment, e.g. \"<h1>Report</h1><p>Content here</p>\")",
            "minLength": 1
          },
          "fileName": {
            "type": "string",
            "description": "Output filename (e.g. \"report.pdf\")"
          },
          "options": {
            "type": "object",
            "properties": {
              "landscape": {
                "type": "boolean",
                "description": "Landscape orientation (default false)"
              },
              "printBackground": {
                "type": "boolean",
                "description": "Render background colors and images (default true)"
              },
              "displayHeaderFooter": {
                "type": "boolean",
                "description": "Show header/footer (default false)"
              },
              "headerTemplate": {
                "type": "string",
                "description": "HTML template for page header"
              },
              "footerTemplate": {
                "type": "string",
                "description": "HTML template for page footer"
              },
              "paperWidth": {
                "type": "number",
                "description": "Page width in inches (default 8.27 for A4)"
              },
              "paperHeight": {
                "type": "number",
                "description": "Page height in inches (default 11.69 for A4)"
              },
              "marginTop": {
                "type": "number",
                "description": "Top margin in inches (default 0.4)"
              },
              "marginBottom": {
                "type": "number",
                "description": "Bottom margin in inches (default 0.4)"
              }
            },
            "description": "PDF rendering options (page size, margins, header/footer)"
          }
        },
        "required": [
          "html"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "document.pdf.from_url",
      "description": "Capture any web page URL as a PDF using headless Chrome with full JS rendering \u2014 perfect for archiving pages, generating reports from dashboards, or creating printable snapshots. Returns temporary PDF download URL (API2PDF)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to capture as PDF (e.g. \"https://example.com/report\")"
          },
          "fileName": {
            "type": "string",
            "description": "Output filename (e.g. \"snapshot.pdf\")"
          },
          "options": {
            "type": "object",
            "properties": {
              "landscape": {
                "type": "boolean",
                "description": "Landscape orientation (default false)"
              },
              "printBackground": {
                "type": "boolean",
                "description": "Render background colors (default true)"
              },
              "paperWidth": {
                "type": "number",
                "description": "Page width in inches"
              },
              "paperHeight": {
                "type": "number",
                "description": "Page height in inches"
              }
            },
            "description": "PDF rendering options"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "document.pdf.merge",
      "description": "Merge 2-20 PDF documents (provided as URLs) into a single combined PDF. Preserves page order. Returns temporary download URL for the merged result (API2PDF)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ordered list of PDF URLs to merge (2-20 URLs)",
            "minItems": 2,
            "maxItems": 20
          },
          "fileName": {
            "type": "string",
            "description": "Output filename for merged PDF (e.g. \"combined.pdf\")"
          }
        },
        "required": [
          "urls"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.podcast.search",
      "description": "Search 4M+ podcasts by keyword \u2014 returns title, author, description, artwork, episode count, language, categories, RSS feed URL. Open directory covering all languages and countries (PodcastIndex)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search term or phrase (e.g. \"artificial intelligence\", \"Lex Fridman\", \"true crime\")",
            "minLength": 2
          },
          "max": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results to return (default 20, max 100)"
          },
          "lang": {
            "type": "string",
            "description": "Filter by language code (e.g. \"en\", \"de\", \"es\", \"ja\")"
          },
          "cat": {
            "type": "string",
            "description": "Filter by category name (e.g. \"Technology\", \"News\", \"Comedy\", \"Business\")"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.podcast.trending",
      "description": "Currently trending podcasts globally \u2014 ranked by recent episode engagement. Filter by language and category. Returns title, author, artwork, trending score, episode count (PodcastIndex)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "max": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of trending podcasts (default 20, max 100)"
          },
          "lang": {
            "type": "string",
            "description": "Filter by language code (e.g. \"en\")"
          },
          "cat": {
            "type": "string",
            "description": "Filter by category (e.g. \"Technology\", \"News\")"
          },
          "since": {
            "type": "integer",
            "description": "Unix timestamp \u2014 only include podcasts with new episodes since this time"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.podcast.episodes",
      "description": "List recent episodes for a podcast by feed ID \u2014 title, description, publish date, audio URL, duration, season/episode numbers. Use feed ID from search or trending results (PodcastIndex)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "PodcastIndex feed ID (from search or trending results)"
          },
          "max": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of episodes to return (default 20, max 100)"
          },
          "since": {
            "type": "integer",
            "description": "Unix timestamp \u2014 only return episodes published after this time"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.podcast.details",
      "description": "Full metadata for a single podcast \u2014 title, author, description, RSS URL, artwork, language, categories, episode count, last update time, funding links (PodcastIndex)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "PodcastIndex feed ID to retrieve full metadata for"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "address.geocodio.geocode",
      "description": "Forward geocode a US or Canada address to coordinates \u2014 returns lat/lng, parsed address components (street, city, state, ZIP, county), accuracy type (rooftop/range/street), and data source. USPS-standardized results with Census data (Geocodio)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "US or Canada address to geocode (e.g. \"1600 Pennsylvania Ave NW, Washington DC\", \"350 5th Ave, New York, NY 10118\")",
            "minLength": 3
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results to return (default 5, max 20)"
          }
        },
        "required": [
          "address"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "address.geocodio.reverse",
      "description": "Reverse geocode latitude/longitude to a US or Canada address \u2014 returns formatted address, parsed components (street, city, state, ZIP, county), accuracy type, and source. Supports multiple results ranked by proximity (Geocodio)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude (24-72 range for US/Canada, e.g. 38.8976)",
            "minimum": 24,
            "maximum": 72
          },
          "lon": {
            "type": "number",
            "description": "Longitude (negative for Western Hemisphere, e.g. -77.0365)",
            "minimum": -180,
            "maximum": -50
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results to return (default 5, max 20)"
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "business.hunter.company",
      "description": "Find professional email addresses and company data for any domain \u2014 organization name, industry, employee count, tech stack, social profiles, email pattern, and verified contact emails with confidence scores, positions, departments, seniority levels. 50M+ domains indexed (Hunter.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Company domain name (e.g. \"stripe.com\", \"google.com\", \"microsoft.com\")",
            "minLength": 3
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max number of emails to return (default 10, max 100)"
          },
          "department": {
            "type": "string",
            "enum": [
              "executive",
              "finance",
              "hr",
              "it",
              "marketing",
              "operations",
              "sales",
              "legal",
              "management",
              "communication"
            ],
            "description": "Filter by department (e.g. \"engineering\", \"sales\", \"marketing\")"
          },
          "type": {
            "type": "string",
            "enum": [
              "personal",
              "generic"
            ],
            "description": "Filter by email type: \"personal\" (name@domain) or \"generic\" (info@domain)"
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "fdic.institutions.search",
      "description": "Search 4,300+ FDIC-insured US financial institutions by name, city, state, or charter type. Returns bank name, FDIC certificate number, total assets, deposits, and location. Official US Government data.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Partial or full institution name to search (e.g. \"Chase\", \"Wells Fargo\")"
          },
          "city": {
            "type": "string",
            "description": "City name filter (e.g. \"New York\", \"San Francisco\")"
          },
          "state": {
            "type": "string",
            "description": "US state name filter (e.g. \"California\", \"New York\")"
          },
          "charter_class": {
            "type": "string",
            "enum": [
              "N",
              "SM",
              "NM",
              "SB",
              "OI"
            ],
            "description": "Charter type: N=national, SM=state member, NM=state nonmember, SB=savings bank, OI=OCC-supervised"
          },
          "active": {
            "type": "boolean",
            "description": "Filter by active status. Default true (only active institutions)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results to return, max 50 (default 10)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "fdic.institutions.details",
      "description": "Get full regulatory profile for an FDIC-insured bank by certificate number. Returns address, charter class, regulator, assets, deposits, branches, established date, insurance date, and coordinates.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cert": {
            "type": "integer",
            "description": "FDIC certificate number uniquely identifying the institution (obtain via fdic.search)"
          }
        },
        "required": [
          "cert"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "fdic.institutions.financials",
      "description": "Retrieve quarterly Call Report financial data for an FDIC-insured institution. Returns total assets, deposits, equity, net income, ROA, ROE, net interest margin, and efficiency ratio.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cert": {
            "type": "integer",
            "description": "FDIC certificate number for the institution"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of quarterly periods to return, max 20 (default 4)"
          }
        },
        "required": [
          "cert"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "fdic.institutions.failures",
      "description": "Query the FDIC failed bank list. Returns 4,100+ historical bank failures with failure date, assets at closure, acquiring institution, and estimated loss to the Deposit Insurance Fund. Covers all failures since 1934.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "Two-letter US state code filter (e.g. \"CA\", \"NY\", \"TX\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results to return, max 50 (default 10)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "disease.covid.global",
      "description": "Get aggregated global COVID-19 statistics: total cases (704M+), deaths, recoveries, active cases, critical cases, cases/deaths per million, tests administered, and affected countries count. Data from Worldometers and OWID.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "yesterday": {
            "type": "boolean",
            "description": "Return yesterday's data instead of today's (default false)"
          },
          "twoDaysAgo": {
            "type": "boolean",
            "description": "Return data from two days ago for comparison (default false)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "disease.covid.country",
      "description": "Get COVID-19 statistics for a specific country by name or ISO code. Returns cases, deaths, recoveries, active, critical, per-million rates, tests, population, and flag. Covers 215+ countries and territories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country name, ISO2 code, or ISO3 code (e.g. \"United States\", \"US\", \"USA\", \"Germany\", \"DE\")"
          },
          "yesterday": {
            "type": "boolean",
            "description": "Return yesterday's data instead of today's (default false)"
          },
          "strict": {
            "type": "boolean",
            "description": "Use strict name matching instead of fuzzy search (default false)"
          }
        },
        "required": [
          "country"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "disease.covid.history",
      "description": "Get historical time-series COVID-19 data for a country or globally. Returns daily case, death, and recovery counts. Useful for trend analysis and longitudinal research. Data from Johns Hopkins CSSE.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country name, ISO2/ISO3 code, or \"all\" for global aggregate (default \"all\")"
          },
          "lastdays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1500,
            "description": "Number of most recent days to return (default 30, max ~1500 for full history)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "disease.influenza.cdc",
      "description": "Get US influenza surveillance data from CDC FluView. Returns weekly ILI (influenza-like illness) activity levels by age group, positive test rates by influenza type (A/B), and national summary. Updated weekly.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "ilinet",
              "usil"
            ],
            "description": "Data source: \"ilinet\" for ILI network data or \"usil\" for US ILI summary (default \"ilinet\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "who.health.indicators",
      "description": "List 1,000+ WHO Global Health Observatory indicators: life expectancy, mortality rates, disease burden, immunization, nutrition, mental health, environmental health. Returns indicator codes for use with who.data.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Keyword to filter indicators by name (e.g. \"mortality\", \"immunization\", \"life expectancy\", \"HIV\", \"malaria\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of indicators to return, max 100 (default 20)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "who.health.data",
      "description": "Retrieve WHO health data for a specific indicator, optionally filtered by country and year range. Returns values for up to 194 countries spanning multiple decades. Official UN member state reporting data.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "indicator": {
            "type": "string",
            "description": "WHO indicator code (e.g. \"WHOSIS_000001\" for life expectancy, \"MDG_0000000001\" for under-5 mortality). Get codes from who.indicators"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-3 country code (e.g. \"USA\", \"DEU\", \"BRA\", \"JPN\"). Omit for all countries"
          },
          "year_from": {
            "type": "integer",
            "description": "Earliest year to include (e.g. 2000)"
          },
          "year_to": {
            "type": "integer",
            "description": "Latest year to include (e.g. 2023)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of data points to return, max 100 (default 20)"
          }
        },
        "required": [
          "indicator"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "who.health.countries",
      "description": "List all 194 WHO member countries and territories with codes and names. Use returned country codes with who.data to filter health indicators by country.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Partial country name to filter (e.g. \"United\", \"Germany\", \"Brazil\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of countries to return, max 200 (default 50)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "gdacs.disasters.alerts",
      "description": "Get current and recent global disaster alerts from the UN GDACS system. Returns earthquakes, tropical cyclones, floods, volcanoes, droughts, and tsunamis with color-coded severity (Green/Orange/Red), affected country, coordinates, and population impact estimates.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "event_type": {
            "type": "string",
            "enum": [
              "EQ",
              "TC",
              "FL",
              "VO",
              "DR",
              "TS"
            ],
            "description": "Filter by disaster type: EQ=earthquake, TC=tropical cyclone, FL=flood, VO=volcano, DR=drought, TS=tsunami"
          },
          "alert_level": {
            "type": "string",
            "enum": [
              "Green",
              "Orange",
              "Red"
            ],
            "description": "Minimum alert level filter: Green (low), Orange (medium), Red (high impact)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of events to return, max 50 (default 10)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "gdacs.disasters.details",
      "description": "Get detailed information for a specific GDACS disaster event by ID. Returns event name, alert level with justification, affected population at each severity level, coordinates, geometry for mapping, source agency, and situation report links.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "integer",
            "description": "GDACS event ID (obtain via gdacs.alerts)"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "EQ",
              "TC",
              "FL",
              "VO",
              "DR",
              "TS"
            ],
            "description": "Event type code: EQ=earthquake, TC=tropical cyclone, FL=flood, VO=volcano, DR=drought, TS=tsunami"
          }
        },
        "required": [
          "event_id",
          "event_type"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "gdacs.disasters.history",
      "description": "Query the GDACS historical disaster archive from 2000 onwards. Filter by date range, event type, country, and alert level. Returns past earthquakes, cyclones, floods, and volcanoes for disaster frequency analysis and regional risk assessment.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date_from": {
            "type": "string",
            "description": "Start date in YYYY-MM-DD format (e.g. \"2024-01-01\")"
          },
          "date_to": {
            "type": "string",
            "description": "End date in YYYY-MM-DD format (e.g. \"2024-12-31\")"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "EQ",
              "TC",
              "FL",
              "VO",
              "DR",
              "TS"
            ],
            "description": "Filter by disaster type"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-3 country code (e.g. \"JPN\", \"PHL\", \"USA\", \"IDN\")"
          },
          "alert_level": {
            "type": "string",
            "enum": [
              "Green",
              "Orange",
              "Red"
            ],
            "description": "Minimum alert level filter"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of events to return, max 50 (default 10)"
          }
        },
        "required": [
          "date_from",
          "date_to"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rateapi.lending.mortgage",
      "description": "Get AI-powered mortgage rate decision from 4,300+ US lenders. Returns recommended actions, current APR rates, estimated monthly payments, and confidence scores. Supports 30yr/15yr fixed and ARM products. Filter by state, amount, and credit tier.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter US state code (e.g. \"CA\", \"NY\", \"TX\")"
          },
          "amount": {
            "type": "number",
            "minimum": 10000,
            "description": "Loan amount in USD (e.g. 400000 for a $400K mortgage)"
          },
          "term_months": {
            "type": "integer",
            "description": "Loan term in months: 180 (15yr), 360 (30yr), or custom"
          },
          "rate_type": {
            "type": "string",
            "enum": [
              "fixed",
              "adjustable"
            ],
            "description": "Rate type: \"fixed\" or \"adjustable\" (ARM)"
          },
          "intent": {
            "type": "string",
            "enum": [
              "purchase",
              "refinance"
            ],
            "description": "Loan intent: \"purchase\" for buying or \"refinance\""
          },
          "credit_score": {
            "type": "string",
            "enum": [
              "excellent",
              "good",
              "fair",
              "poor"
            ],
            "description": "Credit score tier for rate filtering"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rateapi.lending.auto",
      "description": "Get auto loan rate decision for new and used vehicles from US lenders. Returns recommended financing actions, APR rates by term (24-72 months), and estimated monthly payments. Filter by vehicle type and credit tier.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter US state code"
          },
          "amount": {
            "type": "number",
            "minimum": 1000,
            "description": "Loan amount in USD (e.g. 35000)"
          },
          "term_months": {
            "type": "string",
            "enum": [
              "24",
              "36",
              "48",
              "60",
              "72"
            ],
            "description": "Loan term: 24, 36, 48, 60, or 72 months"
          },
          "vehicle_type": {
            "type": "string",
            "enum": [
              "new",
              "used"
            ],
            "description": "Vehicle type: \"new\" or \"used\""
          },
          "credit_score": {
            "type": "string",
            "enum": [
              "excellent",
              "good",
              "fair",
              "poor"
            ],
            "description": "Credit score tier"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rateapi.lending.heloc",
      "description": "Get Home Equity Line of Credit (HELOC) rate decision. Returns current HELOC APR rates, recommended actions, and lender comparisons. Filter by combined loan-to-value ratio (CLTV), state, and credit score tier.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter US state code"
          },
          "cltv": {
            "type": "number",
            "minimum": 0,
            "maximum": 95,
            "description": "Combined loan-to-value ratio (0-95)"
          },
          "credit_score": {
            "type": "string",
            "enum": [
              "excellent",
              "good",
              "fair",
              "poor"
            ],
            "description": "Credit score tier"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rateapi.lending.personal",
      "description": "Get personal loan rate decision from US lenders. Returns recommended financing actions, APR rates by term and amount, and monthly payment estimates. Filter by loan amount, term, and credit score tier.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "minimum": 1000,
            "description": "Loan amount in USD (e.g. 10000)"
          },
          "term_months": {
            "type": "string",
            "enum": [
              "12",
              "24",
              "36",
              "48",
              "60"
            ],
            "description": "Loan term: 12, 24, 36, 48, or 60 months"
          },
          "credit_score": {
            "type": "string",
            "enum": [
              "excellent",
              "good",
              "fair",
              "poor"
            ],
            "description": "Credit score tier"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "twitter.tweets.search",
      "description": "Search Twitter/X tweets by keyword, hashtag, or advanced query. Returns tweet text, author info, engagement metrics (likes, retweets, replies, views), and timestamps. 96% cheaper than official X API. Covers recent tweets.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query \u2014 keywords, hashtags, or advanced operators (e.g. \"AI agents\", \"#crypto\", \"from:elonmusk\")"
          },
          "sort_order": {
            "type": "string",
            "enum": [
              "recency",
              "relevancy"
            ],
            "description": "Sort order: \"recency\" for latest first, \"relevancy\" for most relevant (default recency)"
          },
          "cursor": {
            "type": "string",
            "description": "Pagination cursor from previous response (for next page of results)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "twitter.users.profile",
      "description": "Get a Twitter/X user profile by username. Returns display name, bio, follower/following count, tweet count, verified status, profile image, location, and account creation date.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "Twitter/X username without @ (e.g. \"elonmusk\", \"OpenAI\")"
          },
          "user_id": {
            "type": "string",
            "description": "Twitter/X numeric user ID as alternative to username"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "twitter.users.followers",
      "description": "Get paginated follower list for a Twitter/X user. Returns follower profiles with username, display name, bio, follower count, and verified status. Supports cursor pagination.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "Twitter/X username to get followers for (without @)"
          },
          "cursor": {
            "type": "string",
            "description": "Pagination cursor from previous response"
          }
        },
        "required": [
          "username"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "twitter.trends.worldwide",
      "description": "Get current trending topics on Twitter/X. Filter by location using WOEID (Where On Earth ID). Returns trend name, search query, and rank. 1=worldwide, 23424977=US, 23424975=UK.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "woeid": {
            "type": "integer",
            "description": "Where On Earth ID for location-specific trends (1=worldwide, 23424977=US, 23424975=UK, 23424856=Japan)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "currents.news.latest",
      "description": "Get latest breaking news from 70+ countries in 18+ languages. Returns full article text, author, source URL, and publication time. Filter by language, country, and category (technology, business, health, sports, science, finance, world).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en\", \"de\", \"fr\", \"ja\", \"zh\"). Default: all languages"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\", \"DE\", \"JP\")"
          },
          "category": {
            "type": "string",
            "description": "News category filter (e.g. \"technology\", \"business\", \"health\", \"sports\", \"science\", \"entertainment\", \"finance\", \"world\")"
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of articles to return, max 200 (default 10)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "currents.news.search",
      "description": "Search news articles by keyword across 70+ countries and 18+ languages. Returns full article text with Boolean operator support. Filter by language, country, category, and date range.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string",
            "description": "Search keywords \u2014 supports Boolean operators (e.g. \"AI agents\", \"climate AND policy\")"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en\", \"es\", \"ar\")"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code"
          },
          "start_date": {
            "type": "string",
            "description": "Start date in ISO 8601 format (e.g. \"2026-03-01T00:00:00+00:00\")"
          },
          "end_date": {
            "type": "string",
            "description": "End date in ISO 8601 format"
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Number of articles to return, max 200 (default 10)"
          }
        },
        "required": [
          "keywords"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "currents.news.categories",
      "description": "List all 46 available news categories: technology, business, health, sports, science, entertainment, finance, world, politics, and more. Use to discover valid category values for filtering.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "description": "Response locale (default: en)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "iban.banking.validate",
      "description": "Validate an IBAN and retrieve associated bank info: BIC/SWIFT code, bank name, address, country, currency, and SEPA membership. Supports 80+ IBAN-enabled countries including EU, UK, and MENA. Returns validation result with detailed breakdown.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "iban": {
            "type": "string",
            "description": "IBAN to validate (e.g. \"DE89370400440532013000\", \"GB29NWBK60161331926819\"). Spaces allowed, auto-stripped."
          }
        },
        "required": [
          "iban"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "iban.banking.calculate",
      "description": "Calculate a valid IBAN from domestic bank routing details: country code, bank code, account number, and optional branch code. Returns the computed IBAN with correct checksum. Useful for payment automation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"DE\", \"GB\", \"FR\", \"NL\")",
            "minLength": 2,
            "maxLength": 2
          },
          "bank_code": {
            "type": "string",
            "description": "Domestic bank code (e.g. \"37040044\" for Germany, \"NWBK\" for UK)"
          },
          "account_number": {
            "type": "string",
            "description": "Account number in domestic format"
          },
          "branch_code": {
            "type": "string",
            "description": "Branch/sort code if required by the country (e.g. \"601613\" for UK)"
          }
        },
        "required": [
          "country_code",
          "bank_code",
          "account_number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "chemistry.pubchem.search",
      "description": "Search 100M+ chemical compounds by name, formula, or SMILES string. Returns CID, molecular formula, weight, IUPAC name, SMILES, InChI, XLogP, H-bond donors/acceptors, exact mass, and complexity. The largest public chemical database (PubChem / NCBI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Compound name, formula, or SMILES string (e.g. \"aspirin\", \"C9H8O4\", \"CC(=O)OC1=CC=CC=C1C(=O)O\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Maximum results to return (1-20, default 5)"
          }
        },
        "required": [
          "name"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "chemistry.pubchem.properties",
      "description": "Get full physical and chemical properties for a compound by PubChem CID \u2014 molecular formula, weight, SMILES, InChI, InChIKey, XLogP, H-bond donors/acceptors, exact mass, topological polar surface area, complexity, charge, heavy atom count (PubChem / NCBI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cid": {
            "type": "integer",
            "description": "PubChem Compound ID (CID) \u2014 get from compound_search results"
          }
        },
        "required": [
          "cid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "chemistry.pubchem.synonyms",
      "description": "Get all known names, CAS registry numbers, trade names, and identifiers for a chemical compound by PubChem CID. Returns up to 50 synonyms from a database of millions of name variants (PubChem / NCBI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cid": {
            "type": "integer",
            "description": "PubChem Compound ID (CID) \u2014 returns all known names, CAS numbers, trade names"
          }
        },
        "required": [
          "cid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "chemistry.pubchem.hazards",
      "description": "Get GHS (Globally Harmonized System) hazard classification for a compound \u2014 signal words (Danger/Warning), hazard statements (H-codes), precautionary statements (P-codes), pictograms. Essential for chemical safety assessments (PubChem / NCBI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cid": {
            "type": "integer",
            "description": "PubChem Compound ID (CID) \u2014 returns GHS hazard classification, pictograms, signal words"
          }
        },
        "required": [
          "cid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "chemistry.pubchem.bioassays",
      "description": "Get bioactivity assay results for a compound \u2014 active/inactive counts, tested targets, assay types. Shows how the compound performed in biological tests across thousands of assays (PubChem / NCBI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cid": {
            "type": "integer",
            "description": "PubChem Compound ID (CID) \u2014 returns bioactivity assay results (active/inactive counts, targets)"
          }
        },
        "required": [
          "cid"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "chemistry.pubchem.structure",
      "description": "Look up a compound by name or identifier and get its chemical structure representations \u2014 SMILES (isomeric + canonical), InChI, InChIKey, molecular formula, and molecular weight. Convert between chemical identifier formats (PubChem / NCBI)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Compound name or identifier (e.g. \"caffeine\", \"50-78-2\") \u2014 returns SMILES, InChI, InChIKey, formula"
          }
        },
        "required": [
          "name"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ev.charging.search",
      "description": "Search 300K+ EV charging stations worldwide by location, country, operator, connector type, and power level. Returns station address, GPS coordinates, connectors (Type 2, CCS, CHAdeMO), power kW, operator, status. Filter by min power for fast charging. Largest open EV charging database (Open Charge Map)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "description": "ISO 2-letter country code to filter by (e.g. \"US\", \"GB\", \"DE\")"
          },
          "latitude": {
            "type": "number",
            "description": "Latitude for location-based search (e.g. 51.5074)"
          },
          "longitude": {
            "type": "number",
            "description": "Longitude for location-based search (e.g. -0.1278)"
          },
          "distance": {
            "type": "number",
            "description": "Search radius in distance_unit (default KM)"
          },
          "distance_unit": {
            "type": "string",
            "enum": [
              "KM",
              "Miles"
            ],
            "description": "Distance unit: KM or Miles (default KM)"
          },
          "operator_id": {
            "type": "integer",
            "description": "Filter by charging network operator ID"
          },
          "connection_type_id": {
            "type": "integer",
            "description": "Filter by connector type (e.g. 25=Type 2, 33=CCS, 2=CHAdeMO)"
          },
          "min_power_kw": {
            "type": "number",
            "description": "Minimum charger power in kW (e.g. 50 for fast charging)"
          },
          "status_type_id": {
            "type": "integer",
            "description": "Filter by status (50=Operational, 100=Not Operational)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum results to return (1-100, default 20)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ev.charging.details",
      "description": "Get full details for a specific EV charging station by ID \u2014 address, GPS coordinates, all connectors with type/power/status, network operator, usage cost, verification date, number of charging points. Use station ID from search or nearby results (Open Charge Map)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Open Charge Map station ID \u2014 get from search or nearby results"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ev.charging.nearby",
      "description": "Find the nearest EV charging stations to GPS coordinates within a radius (default 5km). Returns stations sorted by distance with connector types, power levels, and availability status. Filter by minimum power kW and connector type for DC fast charging (Open Charge Map)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "GPS latitude of your location (e.g. 40.7128)"
          },
          "longitude": {
            "type": "number",
            "description": "GPS longitude of your location (e.g. -74.0060)"
          },
          "radius": {
            "type": "number",
            "description": "Search radius in KM (default 5)"
          },
          "min_power_kw": {
            "type": "number",
            "description": "Minimum charger power in kW (e.g. 50 for DC fast charging)"
          },
          "connection_type_id": {
            "type": "integer",
            "description": "Filter by connector type (25=Type 2, 33=CCS, 2=CHAdeMO)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum results (1-50, default 10)"
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "security.ipqs.ip_check",
      "description": "Check any IP address for fraud signals \u2014 proxy, VPN, Tor, bot, crawler detection with fraud score (0-100). Returns geolocation (country, city, ISP, ASN), abuse velocity, connection type, and 9+ risk indicators. Essential for e-commerce fraud prevention (IPQualityScore)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "IPv4 or IPv6 address to check (e.g. \"8.8.8.8\", \"2001:4860:4860::8888\")"
          },
          "strictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3,
            "description": "Detection strictness 0-3 (0=least strict, 3=most aggressive). Higher catches more fraud but may flag legitimate users"
          },
          "allow_public_access_points": {
            "type": "boolean",
            "description": "Allow public WiFi/library IPs to pass without penalty (default false)"
          }
        },
        "required": [
          "ip"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "security.ipqs.email_check",
      "description": "Validate email for fraud risk \u2014 checks deliverability, disposable/temporary providers, honeypot traps, spam traps, leaked credentials, catch-all detection. Returns fraud score (0-100), SMTP verification, domain age, and abuse history. Goes beyond basic validation (IPQualityScore)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to validate and check for fraud (e.g. \"user@example.com\")"
          },
          "fast": {
            "type": "boolean",
            "description": "Skip SMTP verification for faster response (default false)"
          },
          "abuse_strictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2,
            "description": "Abuse detection sensitivity 0-2 (0=low, 2=aggressive)"
          }
        },
        "required": [
          "email"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "security.ipqs.url_check",
      "description": "Scan any URL for malware, phishing, suspicious content, adult content, spamming, and domain parking. Returns risk score (0-100), domain reputation, domain age, IP address, HTTP status. Protects agents from visiting malicious URLs (IPQualityScore)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL to scan for malware, phishing, and threats (e.g. \"https://example.com/page\")"
          },
          "strictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2,
            "description": "Scanning strictness 0-2 (0=least strict, 2=most aggressive)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "security.ipqs.phone_check",
      "description": "Check phone number for fraud risk \u2014 detects VOIP, prepaid, risky numbers, carrier info, line type (mobile/landline/VOIP), active status, leaked data. Returns fraud score (0-100) and geographic location. Supports international numbers with country filter (IPQualityScore)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "description": "Phone number to check in E.164 or national format (e.g. \"+12125551234\", \"2125551234\")"
          },
          "country": {
            "type": "string",
            "description": "ISO 2-letter country code for national format numbers (e.g. \"US\", \"GB\")"
          },
          "strictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2,
            "description": "Fraud detection strictness 0-2"
          }
        },
        "required": [
          "phone"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.chem.resolve",
      "description": "Convert any chemical identifier to SMILES, InChI, and InChIKey. Input a compound name (e.g. \"aspirin\"), CAS number (e.g. \"50-78-2\"), SMILES, or InChIKey and get all other representations. The only universal chemical ID converter \u2014 essential for chemistry workflows and cross-database lookups (NCI CACTUS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "Chemical identifier to resolve \u2014 compound name (e.g. \"aspirin\", \"caffeine\"), CAS number (e.g. \"50-78-2\"), SMILES (e.g. \"CC(=O)Oc1ccccc1C(O)=O\"), or InChIKey (e.g. \"BSYNRYMUTXBXSQ-UHFFFAOYSA-N\")",
            "minLength": 1
          },
          "output": {
            "type": "string",
            "enum": [
              "all",
              "smiles",
              "stdinchi",
              "stdinchikey"
            ],
            "description": "Output format: \"all\" (SMILES + InChI + InChIKey), \"smiles\" (canonical SMILES only), \"stdinchi\" (Standard InChI only), \"stdinchikey\" (InChIKey only). Default: \"all\"",
            "default": "all"
          }
        },
        "required": [
          "identifier"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.chem.formula",
      "description": "Get molecular formula and molecular weight for any compound by name, CAS number, or SMILES. Returns formula (e.g. \"C9H8O4\" for aspirin) and weight in daltons (e.g. 180.157). Accepts any chemical identifier format (NCI CACTUS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "Chemical identifier \u2014 compound name (e.g. \"ibuprofen\"), CAS number (e.g. \"15687-27-1\"), or SMILES string. Returns molecular formula and weight",
            "minLength": 1
          }
        },
        "required": [
          "identifier"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.chem.names",
      "description": "Get all known names, synonyms, CAS numbers, and registry IDs for a chemical compound. Input any identifier (name, CAS, SMILES, InChIKey) and get the full list of aliases. Useful for finding alternative names, trade names, and cross-references (NCI CACTUS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "Chemical identifier to look up synonyms for \u2014 compound name, CAS number, SMILES, or InChIKey (e.g. \"aspirin\", \"50-78-2\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of names/synonyms to return (1-100). Default: 20",
            "default": 20
          }
        },
        "required": [
          "identifier"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.safety.recalls",
      "description": "Search NHTSA vehicle recalls by make, model, and year. Returns campaign number, manufacturer, subject, summary, consequence, remedy, affected components, and units affected. Covers all US recalls from 1966 to present. Essential for automotive safety, insurance, and fleet management agents (NHTSA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "description": "Vehicle manufacturer name (e.g. \"Toyota\", \"Ford\", \"Tesla\", \"BMW\")",
            "minLength": 1
          },
          "model": {
            "type": "string",
            "description": "Vehicle model name (e.g. \"Camry\", \"Model 3\", \"F-150\", \"X5\")",
            "minLength": 1
          },
          "model_year": {
            "type": "integer",
            "description": "Model year (e.g. 2023). NHTSA recall data available from 1966 to present",
            "minimum": 1966,
            "maximum": 2030
          }
        },
        "required": [
          "make",
          "model",
          "model_year"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.safety.complaints",
      "description": "Search consumer complaints filed with NHTSA about vehicles. Returns incident details including crash/fire flags, injuries, deaths, affected components, and complaint summary. Covers US vehicles from ~1995 to present. Critical for safety research and product liability analysis (NHTSA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "description": "Vehicle manufacturer name (e.g. \"Toyota\", \"Ford\", \"Tesla\", \"Honda\")",
            "minLength": 1
          },
          "model": {
            "type": "string",
            "description": "Vehicle model name (e.g. \"Camry\", \"Model 3\", \"Civic\")",
            "minLength": 1
          },
          "model_year": {
            "type": "integer",
            "description": "Model year (e.g. 2023). NHTSA complaint data available from ~1995 to present",
            "minimum": 1995,
            "maximum": 2030
          }
        },
        "required": [
          "make",
          "model",
          "model_year"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.safety.ratings",
      "description": "Get NCAP 5-Star crash test safety ratings by make/model/year or vehicle ID. Returns overall rating, frontal crash, side crash, and rollover ratings (1-5 stars). Also shows related complaints, recalls, and investigation counts. Available from ~2011 for US-market vehicles (NHTSA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "description": "Vehicle manufacturer name (e.g. \"Toyota\", \"Honda\"). Required unless vehicle_id is provided"
          },
          "model": {
            "type": "string",
            "description": "Vehicle model name (e.g. \"Camry\", \"Civic\"). Required unless vehicle_id is provided"
          },
          "model_year": {
            "type": "integer",
            "minimum": 2011,
            "maximum": 2030,
            "description": "Model year (e.g. 2023). 5-Star ratings available from ~2011. Required unless vehicle_id is provided"
          },
          "vehicle_id": {
            "type": "integer",
            "description": "NHTSA Vehicle ID for full ratings detail (get from initial search). Overrides make/model/year if provided"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.safety.investigations",
      "description": "Search NHTSA defect investigation records by manufacturer and model. Returns investigation number, type (preliminary/engineering analysis), description, latest activity date, and NHTSA action number. Covers active and closed investigations for US vehicles (NHTSA)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "description": "Vehicle manufacturer name (e.g. \"Tesla\", \"GM\", \"Ford\")",
            "minLength": 1
          },
          "model": {
            "type": "string",
            "description": "Vehicle model name to narrow results (e.g. \"Model 3\", \"Bolt EV\")"
          }
        },
        "required": [
          "make"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.pdb.search",
      "description": "Search 220K+ macromolecular 3D structures in the Protein Data Bank by keyword, protein name, organism, or author. Returns PDB IDs with relevance scores. The canonical database for structural biology, X-ray crystallography, cryo-EM, and NMR structures (RCSB PDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query \u2014 keyword, protein name, organism, or author (e.g. \"insulin\", \"hemoglobin\", \"Homo sapiens\", \"Watson\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of results (1-50). Default: 10",
            "default": 10
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.pdb.structure",
      "description": "Get full details for a 3D protein structure by PDB ID \u2014 title, experimental method (X-ray/cryo-EM/NMR), resolution, molecular weight, chain counts (protein/DNA/RNA), deposit date, primary citation with DOI and PubMed ID. Essential for drug design and structural analysis (RCSB PDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdb_id": {
            "type": "string",
            "description": "4-character PDB identifier (e.g. \"4HHB\" for hemoglobin, \"1BNA\" for DNA, \"6LU7\" for SARS-CoV-2 main protease)",
            "minLength": 4,
            "maxLength": 4
          }
        },
        "required": [
          "pdb_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.pdb.ligand",
      "description": "Get chemical component data for a ligand/small molecule by its 3-letter PDB code \u2014 name, molecular formula, weight, type, formal charge, heavy atom count, SMILES/InChI descriptors. Covers ATP, HEM, NAG, drug molecules, cofactors, ions, and 40K+ chemical entities in the PDB (RCSB PDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ligand_id": {
            "type": "string",
            "description": "Chemical component identifier \u2014 standard 3-letter code (e.g. \"ATP\" for adenosine triphosphate, \"HEM\" for heme, \"NAG\" for N-acetylglucosamine, \"ZN\" for zinc ion)",
            "minLength": 1,
            "maxLength": 5
          }
        },
        "required": [
          "ligand_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.pdb.sequence",
      "description": "Search protein structures by amino acid sequence similarity (BLAST). Input a protein sequence and find all PDB structures with matching chains. Configure identity cutoff (e.g. 90%) and E-value threshold. Returns PDB entity IDs ranked by similarity score. Essential for homology modeling and structure prediction (RCSB PDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sequence": {
            "type": "string",
            "description": "Protein amino acid sequence in one-letter code (e.g. \"MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSH\" \u2014 first 50 residues of human hemoglobin alpha)",
            "minLength": 10
          },
          "identity_cutoff": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 1,
            "description": "Minimum sequence identity (0.1-1.0). Default: 0.9 (90% identical)",
            "default": 0.9
          },
          "evalue_cutoff": {
            "type": "number",
            "description": "Maximum E-value threshold for BLAST significance. Default: 0.1",
            "default": 0.1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of results (1-50). Default: 10",
            "default": 10
          }
        },
        "required": [
          "sequence"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.adzuna.search",
      "description": "Search job listings across 16+ countries (US, UK, AU, CA, DE, FR, and more) by keyword, location, category, salary range. Returns job title, company, salary, location, and apply URL. 70K+ developer jobs in US alone (Adzuna)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "what": {
            "type": "string",
            "description": "Job search keywords (e.g. \"python developer\", \"marketing manager\", \"nurse\")"
          },
          "where": {
            "type": "string",
            "description": "Location (e.g. \"new york\", \"london\", \"berlin\")"
          },
          "country": {
            "type": "string",
            "description": "Country code: us, gb, au, ca, de, fr, nl, in, br, pl, nz, za, sg, at, ch, it, ru (default us)",
            "default": "us"
          },
          "category": {
            "type": "string",
            "description": "Job category tag (e.g. \"it-jobs\", \"sales-jobs\", \"engineering-jobs\"). Get tags from adzuna.categories"
          },
          "salary_min": {
            "type": "number",
            "description": "Minimum salary filter"
          },
          "salary_max": {
            "type": "number",
            "description": "Maximum salary filter"
          },
          "full_time": {
            "type": "boolean",
            "description": "Filter full-time jobs only"
          },
          "permanent": {
            "type": "boolean",
            "description": "Filter permanent jobs only"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results (1-20, default 10)",
            "default": 10
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number",
            "default": 1
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.adzuna.categories",
      "description": "List all job categories available in a country \u2014 IT, Sales, Engineering, HR, Healthcare, Hospitality, and more. Use category tags to filter adzuna.search results (Adzuna)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code (default us)",
            "default": "us"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.adzuna.salary",
      "description": "Get salary distribution for a job title \u2014 returns histogram of salary buckets with job counts. Example: \"python developer\" in US \u2192 $20K-$140K distribution. Use for salary benchmarking and market research (Adzuna)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "what": {
            "type": "string",
            "description": "Job title or keywords for salary histogram (e.g. \"python developer\", \"data scientist\")"
          },
          "where": {
            "type": "string",
            "description": "Location for salary data"
          },
          "country": {
            "type": "string",
            "description": "Country code (default us)",
            "default": "us"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sports.bdl.games",
      "description": "Get NBA and NFL game results by date \u2014 scores, teams, status (Final/In Progress/Scheduled). Filter by date, season, or team. Covers all NBA and NFL games with real-time scores (BallDontLie)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Game date (YYYY-MM-DD, e.g. \"2026-03-29\"). Returns all games on that date"
          },
          "season": {
            "type": "integer",
            "description": "Season year (e.g. 2025 for 2025-26 season)"
          },
          "team_id": {
            "type": "integer",
            "description": "Filter by team ID (get IDs from bdl.teams)"
          },
          "sport": {
            "type": "string",
            "enum": [
              "nba",
              "nfl"
            ],
            "description": "Sport league: \"nba\" (default) or \"nfl\"",
            "default": "nba"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Max results (1-25, default 10)",
            "default": 10
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sports.bdl.teams",
      "description": "List NBA and NFL teams with conference, division, city, and abbreviation. Filter by conference (East/West for NBA, AFC/NFC for NFL) or division (BallDontLie)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "conference": {
            "type": "string",
            "description": "Filter by conference (e.g. \"East\", \"West\" for NBA; \"AFC\", \"NFC\" for NFL)"
          },
          "division": {
            "type": "string",
            "description": "Filter by division (e.g. \"Atlantic\", \"Pacific\" for NBA)"
          },
          "sport": {
            "type": "string",
            "enum": [
              "nba",
              "nfl"
            ],
            "description": "Sport league: \"nba\" (default) or \"nfl\"",
            "default": "nba"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Max results (1-30, default 30)",
            "default": 30
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sports.bdl.players",
      "description": "Search NBA players by name \u2014 returns position, jersey number, and current team. Example: \"lebron\" \u2192 LeBron James #23 F, Los Angeles Lakers (BallDontLie)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Search by player name (e.g. \"lebron\", \"curry\", \"mahomes\")"
          },
          "team_id": {
            "type": "integer",
            "description": "Filter by team ID"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Max results (1-25, default 10)",
            "default": 10
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "address.postal.lookup",
      "description": "Look up a postal/ZIP code in 60+ countries \u2014 returns city name, state/region, and lat/lon coordinates. Supports US, UK, Germany, France, Japan, Brazil, India, Australia, and 50+ more countries. Provide country code (ISO 2-letter) + postal code (Zippopotam.us)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"us\", \"de\", \"gb\", \"fr\", \"jp\", \"br\", \"in\", \"au\"). Supports 60+ countries",
            "minLength": 2,
            "maxLength": 2
          },
          "postal_code": {
            "type": "string",
            "description": "Postal/ZIP code (e.g. \"90210\" for US, \"10115\" for Germany, \"SW1A\" for UK, \"75001\" for France)",
            "minLength": 1
          }
        },
        "required": [
          "country_code",
          "postal_code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "logistics.dhl.track",
      "description": "Track a DHL shipment by tracking number \u2014 returns current status, delivery events timeline, origin/destination, estimated delivery date, and service type. Supports all DHL services: Express, Parcel, eCommerce, Freight. Official DHL data for 220+ countries (DHL)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tracking_number": {
            "type": "string",
            "description": "DHL tracking number (e.g. \"00340434292135100186\" for DHL Paket, \"1234567890\" for DHL Express). Supports all DHL services: Express, Parcel, eCommerce, Freight",
            "minLength": 1
          }
        },
        "required": [
          "tracking_number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "address.ukpost.lookup",
      "description": "Look up a UK postcode \u2014 returns district, region, country, ward, parish, parliamentary constituency, and lat/lon coordinates. Backed by ONS/Ordnance Survey data. Example: \"SW1A 1AA\" \u2192 Westminster, London (Postcodes.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "postcode": {
            "type": "string",
            "description": "UK postcode to look up (e.g. \"SW1A 1AA\" for Westminster, \"EC2R 8AH\" for City of London, \"M1 1AA\" for Manchester). Returns district, region, country, lat/lon, parliamentary constituency",
            "minLength": 1
          }
        },
        "required": [
          "postcode"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "address.ukpost.nearest",
      "description": "Find nearest UK postcodes to a lat/lon coordinate \u2014 returns postcodes sorted by distance with district info. Use for reverse geocoding in the UK (Postcodes.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude (e.g. 51.5074 for London)"
          },
          "lon": {
            "type": "number",
            "description": "Longitude (e.g. -0.1278 for London)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Max results (1-10, default 5)",
            "default": 5
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "address.ukpost.validate",
      "description": "Check if a UK postcode is valid and exists \u2014 returns true/false. Use for form validation or data cleaning (Postcodes.io)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "postcode": {
            "type": "string",
            "description": "UK postcode to validate (e.g. \"SW1A 1AA\"). Returns true if valid format and exists",
            "minLength": 1
          }
        },
        "required": [
          "postcode"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "logistics.shipengine.rates",
      "description": "Compare shipping rates across multiple carriers (USPS, UPS, FedEx, DHL) for a package. Provide origin/destination ZIP codes, weight in pounds, and optional dimensions. Returns sorted rates with price, delivery time, and service type. Up to 84% off retail rates (ShipEngine)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from_zip": {
            "type": "string",
            "description": "Origin US ZIP code (e.g. \"10001\" for NYC)",
            "minLength": 1
          },
          "to_zip": {
            "type": "string",
            "description": "Destination US ZIP code (e.g. \"90210\" for Beverly Hills)",
            "minLength": 1
          },
          "weight_lb": {
            "type": "number",
            "description": "Package weight in pounds (e.g. 5)",
            "minimum": 0.1
          },
          "length": {
            "type": "number",
            "description": "Package length in inches"
          },
          "width": {
            "type": "number",
            "description": "Package width in inches"
          },
          "height": {
            "type": "number",
            "description": "Package height in inches"
          },
          "from_country": {
            "type": "string",
            "description": "Origin country code (default US)",
            "default": "US"
          },
          "to_country": {
            "type": "string",
            "description": "Destination country code (default US)",
            "default": "US"
          }
        },
        "required": [
          "from_zip",
          "to_zip",
          "weight_lb"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "logistics.shipengine.validate",
      "description": "Validate and standardize a US address \u2014 returns USPS-verified address with corrected spelling, ZIP+4, and validation status. Catches typos, missing info, and invalid addresses before shipping (ShipEngine)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address_line1": {
            "type": "string",
            "description": "Street address (e.g. \"1 E 161 St\")",
            "minLength": 1
          },
          "address_line2": {
            "type": "string",
            "description": "Apartment, suite, unit (e.g. \"Apt 4B\")"
          },
          "city": {
            "type": "string",
            "description": "City name (e.g. \"Bronx\")"
          },
          "state": {
            "type": "string",
            "description": "State code (e.g. \"NY\")"
          },
          "postal_code": {
            "type": "string",
            "description": "ZIP code (e.g. \"10451\")"
          },
          "country": {
            "type": "string",
            "description": "Country code (default US)",
            "default": "US"
          }
        },
        "required": [
          "address_line1"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "logistics.shipengine.carriers",
      "description": "List all connected shipping carriers with their IDs and codes. Shows which carriers are available for rate comparison (USPS, UPS, FedEx, DHL, etc.) (ShipEngine)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "string",
            "description": "Optional filter on carrier name (e.g. \"ups\", \"usps\"). Returns all connected carriers if omitted"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.weatherapi.current",
      "description": "Get current weather conditions for any location worldwide \u2014 temperature, wind, humidity, pressure, UV index, cloud cover, feels-like temp. Accepts city name, coordinates, zip code, or airport code. 100K+ stations globally (WeatherAPI.com)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Location query \u2014 city name (e.g. \"London\"), coordinates (\"48.8,2.35\"), US zip (\"10001\"), UK postcode (\"SW1\"), IP address, or IATA airport code (\"JFK\")",
            "minLength": 1
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.weatherapi.forecast",
      "description": "Get 3-day weather forecast \u2014 daily min/max temperature, conditions, wind, precipitation, humidity, rain/snow chance, UV index. Accepts any location query (WeatherAPI.com)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Location query \u2014 city name, coordinates, zip code, or airport code",
            "minLength": 1
          },
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "description": "Forecast days (1-3, default 3)",
            "default": 3
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.weatherapi.astronomy",
      "description": "Get sunrise, sunset, moonrise, moonset times and moon phase for any location and date. Returns moon illumination percentage and phase name (WeatherAPI.com)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Location query \u2014 city name, coordinates, or zip code",
            "minLength": 1
          },
          "date": {
            "type": "string",
            "description": "Date for astronomy data (YYYY-MM-DD, default today)"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "weather.weatherapi.search",
      "description": "Search and autocomplete location names \u2014 returns matching cities with coordinates. Type partial name (e.g. \"lon\" \u2192 London, \"mos\" \u2192 Moscow). Use result coordinates with other weather tools (WeatherAPI.com)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query \u2014 partial city name for autocomplete (e.g. \"lon\" \u2192 London, \"mos\" \u2192 Moscow)",
            "minLength": 1
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "dev.code.execute",
      "description": "Execute source code in a sandboxed environment \u2014 71 programming languages supported (Python, JavaScript, Java, C++, Go, Rust, C#, Bash, Ruby, PHP, and 60+ more). Returns stdout, stderr, execution time, and memory usage. Safe sandboxed execution with CPU/memory limits. Use code.languages to get language IDs (Judge0 CE)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "language_id": {
            "type": "integer",
            "description": "Language ID from code.languages (e.g. 71=Python 3, 63=JavaScript, 62=Java, 54=C++, 60=Go, 73=Rust, 51=C#, 46=Bash). Call code.languages for full list"
          },
          "source_code": {
            "type": "string",
            "description": "Source code to execute",
            "minLength": 1
          },
          "stdin": {
            "type": "string",
            "description": "Standard input to feed to the program"
          },
          "cpu_time_limit": {
            "type": "number",
            "description": "CPU time limit in seconds (default 5, max 15)"
          },
          "memory_limit": {
            "type": "number",
            "description": "Memory limit in KB (default 128000 = 128MB)"
          }
        },
        "required": [
          "language_id",
          "source_code"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "dev.code.languages",
      "description": "List all 71 available programming languages and their IDs for code execution. Common IDs: 71=Python 3.8, 63=JavaScript (Node.js), 62=Java, 54=C++ (GCC), 60=Go, 73=Rust, 51=C#, 46=Bash. Returns full list with compiler/interpreter versions (Judge0 CE)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "string",
            "description": "Optional filter \u2014 substring match on language name (e.g. \"python\", \"java\", \"rust\"). Returns all 71 languages if omitted"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "web.scrape.extract",
      "description": "Extract raw HTML from any URL \u2014 cheapest web scraping API ($0.00013 for simple sites). Returns decoded HTML content, HTTP status code, and content length. Use for data extraction, content analysis, or price monitoring. Handles anti-bot protection automatically (Zyte)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to scrape \u2014 returns raw HTML content. Fast and cheap ($0.00013 for simple sites). Example: \"https://example.com\""
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "web.scrape.browser",
      "description": "Render a URL with headless browser and return JS-rendered HTML. Use for SPAs, React/Vue apps, or pages with dynamic content that raw HTTP cannot capture. Returns fully rendered DOM as HTML text (Zyte)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to render with headless browser \u2014 returns JS-rendered HTML. Use for SPAs, dynamic content. More expensive than extract. Example: \"https://example.com\""
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "web.scrape.screenshot",
      "description": "Capture a full-page screenshot of any URL \u2014 returns base64-encoded PNG image. Use for visual verification, monitoring, or archiving. Headless browser renders the page before capture (Zyte)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to screenshot \u2014 returns base64-encoded PNG image. Use for visual verification or page capture. Example: \"https://example.com\""
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.carmarket.search",
      "description": "Search millions of active US car listings by make, model, year, price range, mileage, ZIP code, and radius. Returns VIN, price, miles, dealer info, Carfax status, and days on market. Filter by seller type (dealer/private) and color. Data from all major US marketplaces (MarketCheck)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "description": "Car manufacturer (e.g. \"Toyota\", \"Honda\", \"BMW\", \"Tesla\")"
          },
          "model": {
            "type": "string",
            "description": "Car model (e.g. \"Camry\", \"Civic\", \"Model 3\")"
          },
          "year": {
            "type": "integer",
            "description": "Model year (e.g. 2023, 2024)"
          },
          "price_min": {
            "type": "number",
            "description": "Minimum price in USD"
          },
          "price_max": {
            "type": "number",
            "description": "Maximum price in USD"
          },
          "miles_max": {
            "type": "number",
            "description": "Maximum mileage"
          },
          "zip": {
            "type": "string",
            "description": "US ZIP code to search near (e.g. \"10001\")"
          },
          "radius": {
            "type": "number",
            "description": "Search radius in miles from ZIP (max 100 on free tier)"
          },
          "seller_type": {
            "type": "string",
            "enum": [
              "dealer",
              "private"
            ],
            "description": "Filter by seller type"
          },
          "exterior_color": {
            "type": "string",
            "description": "Filter by exterior color (e.g. \"White\", \"Black\", \"Red\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Max results (1-25, default 10)",
            "default": 10
          },
          "start": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset for pagination"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "vehicle.carmarket.listing",
      "description": "Get full details for a specific car listing by ID \u2014 VIN, price, MSRP, mileage, full build specs (engine, transmission, drivetrain, fuel type), dealer contact, Carfax 1-owner status, days on market, photos. Get listing IDs from carmarket.search (MarketCheck)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "MarketCheck listing ID (e.g. \"3TMCZ5AN5PM564843-883937ce-f335\"). Get IDs from carmarket.search results",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "security.threatintel.reputation",
      "description": "Get domain reputation score (0-100) with detailed security test results \u2014 WHOIS age, SSL validity, mail server config, blacklist status, and more. Higher score = safer domain. Essential for security agents evaluating domain trustworthiness (Threat Intelligence Platform)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to check reputation (e.g. \"google.com\", \"suspicious-site.xyz\"). Returns reputation score 0-100 and security test results",
            "minLength": 1
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "security.threatintel.malware",
      "description": "Check if a domain is associated with malware, phishing, or other threats. Returns safe score (0-100) and detailed warning descriptions. Use for URL safety verification before agent navigation (Threat Intelligence Platform)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to check for malware and phishing (e.g. \"example.com\"). Returns safe score 0-100 and warning details",
            "minLength": 1
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "security.threatintel.infrastructure",
      "description": "Analyze domain infrastructure \u2014 all associated IPv4 addresses, geolocation (country, city, region), subnets, and resource types (web, mail, DNS). Reveals hosting setup, CDN usage, and geographic distribution (Threat Intelligence Platform)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to analyze infrastructure (e.g. \"google.com\"). Returns all associated IPs, geolocation, subnets, and resource types",
            "minLength": 1
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "podcasts.listennotes.search",
      "description": "Full-text search across 3.7M+ podcasts and 186M+ episodes. Search by keyword, filter by language and genre, sort by relevance or date. Returns episode titles, podcast names, audio URLs, and duration. The most comprehensive podcast search API available (Listen Notes)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query \u2014 full-text search across 186M+ podcast episodes and 3.7M+ podcasts (e.g. \"artificial intelligence\", \"startup funding\", \"true crime\")",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "episode",
              "podcast"
            ],
            "description": "Search type: \"episode\" (default) searches episode titles/descriptions, \"podcast\" searches podcast-level metadata",
            "default": "episode"
          },
          "language": {
            "type": "string",
            "description": "ISO 639-1 language code (e.g. \"en\", \"es\", \"fr\"). Filters results by podcast language"
          },
          "genre_ids": {
            "type": "string",
            "description": "Comma-separated genre IDs to filter (e.g. \"93,127\" for Business+Technology). See Listen Notes genre list"
          },
          "sort_by_date": {
            "type": "boolean",
            "description": "Sort by date (true) or relevance (false, default)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Max results (1-10, default 10)",
            "default": 10
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset for pagination"
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "podcasts.listennotes.podcast",
      "description": "Get full details for a podcast by Listen Notes ID \u2014 title, publisher, description, episode count, language, country, website, genres, and latest publish date. Use IDs from listennotes.search or listennotes.best (Listen Notes)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Listen Notes podcast ID (e.g. \"4d3fe717742d4963a85562e9f84d8c79\"). Get IDs from listennotes.search or listennotes.best",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "podcasts.listennotes.best",
      "description": "Get curated lists of the best podcasts by genre \u2014 Technology (127), Business (93), TV & Film (68), Sports (77), Leisure (82), and 60+ more genres. Paginated, returns podcast titles, publishers, episode counts, and descriptions (Listen Notes)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "genre_id": {
            "type": "integer",
            "description": "Genre ID to filter (e.g. 93=Business, 127=Technology, 68=TV & Film, 82=Leisure, 77=Sports). Omit for overall best"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1)",
            "default": 1
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.audd.recognize",
      "description": "Identify a song from an audio file URL \u2014 like Shazam for AI agents. Analyzes audio fingerprint against 80M+ tracks and returns artist, title, album, release date, plus Spotify and Apple Music links. Accepts MP3, WAV, OGG, or any audio URL (AudD)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of audio file to identify (MP3, WAV, OGG, etc.). The API analyzes the audio and matches it against 80M+ tracks. Example: \"https://example.com/song.mp3\""
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "music.audd.lyrics",
      "description": "Search for song lyrics by artist name, song title, or both. Returns full lyrics text, artist, title, and metadata. Query examples: \"imagine john lennon\", \"bohemian rhapsody\", \"taylor swift love story\" (AudD)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query for lyrics \u2014 artist name, song title, or both (e.g. \"imagine john lennon\", \"bohemian rhapsody\", \"taylor swift love story\")",
            "minLength": 1
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.materials.search",
      "description": "Search 150,000+ inorganic materials by chemical formula, elements, band gap, stability, or metallic character. Returns DFT-computed properties: band gap, formation energy, density, crystal system. Filter semiconductors (band_gap 1-3 eV), stable battery cathodes (elements Li,Fe,O + is_stable), or metals. DOE/Lawrence Berkeley Lab data, CC BY 4.0 (Materials Project)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "formula": {
            "type": "string",
            "description": "Chemical formula to search (e.g. \"Si\", \"Fe2O3\", \"LiFePO4\"). Exact or reduced formula"
          },
          "elements": {
            "type": "string",
            "description": "Comma-separated elements to filter (e.g. \"Li,Fe,O\" \u2014 returns materials containing these elements)"
          },
          "band_gap_min": {
            "type": "number",
            "description": "Minimum band gap in eV (e.g. 1.0). Use with band_gap_max for range filter"
          },
          "band_gap_max": {
            "type": "number",
            "description": "Maximum band gap in eV (e.g. 3.0). Use with band_gap_min for range filter"
          },
          "is_stable": {
            "type": "boolean",
            "description": "Filter for thermodynamically stable materials only (energy_above_hull = 0)"
          },
          "is_metal": {
            "type": "boolean",
            "description": "Filter for metals (true) or non-metals (false)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max results (1-50, default 10)",
            "default": 10
          },
          "skip": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset for pagination"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.materials.details",
      "description": "Get full DFT-computed properties for a material by Materials Project ID (e.g. mp-149 for silicon). Returns: band gap, formation energy, thermodynamic stability, density, crystal structure, spacegroup, magnetism, bulk/shear modulus, Poisson ratio, Fermi energy, database cross-references. 150K+ materials (Materials Project)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "material_id": {
            "type": "string",
            "description": "Materials Project ID (e.g. \"mp-149\" for silicon, \"mp-19017\" for LiFePO4). Get IDs from materials.search",
            "minLength": 1
          }
        },
        "required": [
          "material_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "science.materials.elasticity",
      "description": "Get mechanical/elastic properties for a material: bulk modulus, shear modulus (Voigt-Reuss-Hill averages), universal anisotropy index, Poisson ratio, and full 6x6 elastic tensor (IEEE format). Essential for structural materials screening and mechanical simulations (Materials Project)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "material_id": {
            "type": "string",
            "description": "Materials Project ID (e.g. \"mp-149\"). Returns bulk/shear modulus, Poisson ratio, elastic tensor",
            "minLength": 1
          }
        },
        "required": [
          "material_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "logistics.tracking.register",
      "description": "Register a tracking number to begin monitoring shipment status. Auto-detects carrier from 3,200+ supported carriers worldwide (UPS, FedEx, DHL, USPS, China Post, Royal Mail, etc.). Must be called before tracking.status. Returns detected carrier and registration status. Consumes quota \u2014 200 free/month (17TRACK)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tracking_number": {
            "type": "string",
            "description": "Package tracking number (e.g. \"1Z999AA10123456784\" for UPS, \"9400111899560243888780\" for USPS). Carrier is auto-detected from 3,200+ supported carriers",
            "minLength": 3,
            "maxLength": 50
          },
          "tag": {
            "type": "string",
            "maxLength": 50,
            "description": "Optional label for this shipment (e.g. order ID, customer reference). Up to 50 characters"
          }
        },
        "required": [
          "tracking_number"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "logistics.tracking.status",
      "description": "Get full tracking timeline for a registered package \u2014 latest status, all carrier scan events with timestamps and locations, delivery milestones, transit days, origin/destination countries. Supports 3,200+ carriers across 220 countries. Call tracking.register first if number is not yet registered (17TRACK)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tracking_number": {
            "type": "string",
            "description": "Tracking number previously registered with tracking.register. Returns full event timeline, carrier info, milestones, and delivery status",
            "minLength": 3,
            "maxLength": 50
          }
        },
        "required": [
          "tracking_number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "logistics.tracking.list",
      "description": "List all tracking numbers registered in your account with status summary \u2014 package status, latest event, transit days, registration time. Paginated. Filter by status: NotFound, InTransit, Delivered, Expired, Exception (17TRACK)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1)",
            "default": 1
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Results per page (1-100, default 20)",
            "default": 20
          },
          "status": {
            "type": "string",
            "enum": [
              "NotFound",
              "InTransit",
              "Delivered",
              "Expired",
              "Exception"
            ],
            "description": "Filter by package status"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "account.analytics.usage",
      "description": "Get your API usage summary \u2014 total calls, total cost, cache hit rate, average latency, and unique tools used. Filter by period: 1 day, 7 days, or 30 days. See how efficiently you are using the platform. Free, no charge (APIbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "period": {
            "type": "string",
            "enum": [
              "1d",
              "7d",
              "30d"
            ],
            "description": "Time period for usage stats: \"1d\" (24 hours), \"7d\" (7 days), or \"30d\" (30 days). Default: \"7d\"",
            "default": "7d"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "account.analytics.tools",
      "description": "Get per-tool usage breakdown \u2014 calls, cost, cache hits, average latency, last used. Sort by cost (highest spend), calls (most used), or latency (slowest). Identify your most-used and most-expensive tools. Free, no charge (APIbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sort": {
            "type": "string",
            "enum": [
              "cost",
              "calls",
              "latency"
            ],
            "description": "Sort tools by: \"cost\" (highest spend), \"calls\" (most used), or \"latency\" (slowest). Default: \"calls\"",
            "default": "calls"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max number of tools to return (1-100). Default: 20",
            "default": 20
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "account.analytics.timeseries",
      "description": "Get time-series usage data \u2014 calls, cost, cache hits per hour or day over a period. Visualize usage patterns and trends. Choose granularity: hourly (for 1d period) or daily (for 7d/30d). Free, no charge (APIbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "period": {
            "type": "string",
            "enum": [
              "1d",
              "7d",
              "30d"
            ],
            "description": "Time period: \"1d\", \"7d\", or \"30d\". Default: \"7d\"",
            "default": "7d"
          },
          "granularity": {
            "type": "string",
            "enum": [
              "hour",
              "day"
            ],
            "description": "Time bucket granularity: \"hour\" or \"day\". Default: \"day\"",
            "default": "day"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "platform.quality.tool",
      "description": "Get quality metrics for any tool \u2014 uptime percentage, p50/p95 latency, error rate, total calls in last 24h. Check reliability before calling expensive tools. Updated every 10 minutes. Free, no charge (APIbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tool_id": {
            "type": "string",
            "description": "Tool ID to get quality metrics for (e.g. \"crypto.get_price\", \"weather.get_current\")",
            "minLength": 1
          }
        },
        "required": [
          "tool_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "platform.quality.rankings",
      "description": "Get ranked list of tools by quality \u2014 sort by uptime (most reliable), latency (fastest), or error_rate (fewest errors). Filter by category (e.g. \"crypto\", \"weather\"). Discover the best tools for your use case. Free, no charge (APIbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sort": {
            "type": "string",
            "enum": [
              "uptime",
              "latency",
              "error_rate"
            ],
            "description": "Sort by: \"uptime\" (highest availability), \"latency\" (fastest p50), or \"error_rate\" (lowest errors). Default: \"uptime\"",
            "default": "uptime"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max number of tools to return (1-100). Default: 20",
            "default": 20
          },
          "category": {
            "type": "string",
            "description": "Filter by tool category prefix (e.g. \"crypto\", \"weather\", \"finance\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "platform.batch.call",
      "description": "Execute up to 20 tool calls in a single request with parallel execution (max 10 concurrent). Each call runs the full pipeline independently with its own billing. Returns array of results with per-call status, data, cost, and duration. Save 5x round-trips vs sequential calls. Batch wrapper is free \u2014 you pay only for individual tool calls (APIbase)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "calls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tool_id": {
                  "type": "string",
                  "description": "Tool ID to call (e.g. \"crypto.get_price\")",
                  "minLength": 1
                },
                "params": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "Parameters for the tool call"
                },
                "idempotency_key": {
                  "type": "string",
                  "description": "Optional idempotency key for this specific call"
                }
              },
              "required": [
                "tool_id",
                "params"
              ]
            },
            "description": "Array of tool calls to execute in parallel (max 20)",
            "minItems": 1,
            "maxItems": 20
          },
          "max_parallel": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Max concurrent calls (1-10). Default: 10",
            "default": 10
          }
        },
        "required": [
          "calls"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.theirstack.search",
      "description": "Search 181M+ job postings worldwide \u2014 filter by keywords, country, remote, tech stack, recency. Returns title, company, location, salary range, post date. Job market intelligence for hiring analysis and talent sourcing (TheirStack)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string",
            "description": "Comma-separated job title keywords (e.g. \"python developer, backend engineer\"). Matches job_title_or filter"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"DE\", \"IN\")"
          },
          "remote": {
            "type": "boolean",
            "description": "Filter remote-only jobs"
          },
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90,
            "description": "Max age in days (1-90). Only jobs posted within this window"
          },
          "technologies": {
            "type": "string",
            "description": "Comma-separated tech stack filter (e.g. \"kubernetes, python, react\"). Matches technologies_or"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Max results (1-25, default 10)",
            "default": 10
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.theirstack.companies",
      "description": "Find companies by technology stack \u2014 filter by technologies (kubernetes, react, python...), country, minimum active jobs. Returns company name, URL, job count, tech stack. Identify employers using specific technologies (TheirStack)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "technologies": {
            "type": "string",
            "description": "Comma-separated tech stack filter (e.g. \"kubernetes, docker, aws\"). Find companies using these technologies"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. \"US\", \"DE\", \"IN\")"
          },
          "min_jobs": {
            "type": "integer",
            "minimum": 1,
            "description": "Minimum number of active job postings"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Max results (1-25, default 10)",
            "default": 10
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.jooble.search",
      "description": "Search aggregated job listings across 70+ countries \u2014 filter by keywords, location, radius, salary, company name. Returns title, company, location, salary, source, direct link. 9M+ active listings from thousands of job boards (Jooble)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string",
            "description": "Job search keywords (e.g. \"python developer\", \"marketing manager\", \"nurse\")"
          },
          "location": {
            "type": "string",
            "description": "Location (e.g. \"New York\", \"London\", \"Berlin\", \"Remote\")"
          },
          "radius": {
            "type": "string",
            "enum": [
              "0",
              "4",
              "8",
              "16",
              "26",
              "40",
              "80"
            ],
            "description": "Search radius in km from location: 0, 4, 8, 16, 26, 40, or 80"
          },
          "salary": {
            "type": "number",
            "description": "Minimum salary filter (numeric)"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1)",
            "default": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results per page (1-20, default 10)",
            "default": 10
          },
          "company_search": {
            "type": "boolean",
            "description": "Set true to search by company name instead of job title"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.arbeitnow.browse",
      "description": "Browse European job listings \u2014 100 jobs per page sorted by newest. Returns title, company, location, remote flag, tags, job types, direct link. Updated hourly. EU-focused: Germany, Austria, Switzerland, Netherlands, and more. Open public API (Arbeitnow)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1). Each page returns ~100 EU job listings sorted by newest first. No server-side search \u2014 use page to browse",
            "default": 1
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.reed.search",
      "description": "Search UK job listings \u2014 filter by keywords, location, distance, salary range (GBP), contract type (permanent/contract/temp), full/part time. Returns title, company, salary, applications count, direct link. UK largest job board (Reed.co.uk)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string",
            "description": "Job search keywords (e.g. \"python developer\", \"data scientist\", \"nurse\")"
          },
          "location": {
            "type": "string",
            "description": "UK location \u2014 city, town, or postcode (e.g. \"London\", \"Manchester\", \"SW1A 1AA\")"
          },
          "distance": {
            "type": "integer",
            "minimum": 0,
            "description": "Search radius in miles from location (default 10)"
          },
          "salary_min": {
            "type": "number",
            "description": "Minimum annual salary in GBP (e.g. 30000)"
          },
          "salary_max": {
            "type": "number",
            "description": "Maximum annual salary in GBP (e.g. 80000)"
          },
          "permanent": {
            "type": "boolean",
            "description": "Filter permanent positions only"
          },
          "contract": {
            "type": "boolean",
            "description": "Filter contract positions only"
          },
          "full_time": {
            "type": "boolean",
            "description": "Filter full-time positions only"
          },
          "part_time": {
            "type": "boolean",
            "description": "Filter part-time positions only"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Max results (1-100, default 25)",
            "default": 25
          },
          "skip": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of results to skip for pagination (must be divisible by limit)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.reed.details",
      "description": "Get full details of a UK job listing by ID \u2014 title, company, full salary info (min/max GBP, annual/hourly/daily), contract type, full/part time, application count, full HTML description, external apply URL. Use job IDs from reed.search results (Reed.co.uk)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "integer",
            "description": "Reed job ID (from search results). Example: 56448344"
          }
        },
        "required": [
          "job_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "jobs.remotive.search",
      "description": "Search curated remote-only job listings \u2014 filter by keywords and category (software-dev, design, marketing, data, devops, etc.). Returns title, company, salary, job type, location requirements, tags. Global remote positions only (Remotive)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Job search keywords (e.g. \"python\", \"react developer\", \"product manager\")"
          },
          "category": {
            "type": "string",
            "description": "Job category slug: software-dev, design, customer-support, writing, marketing, sales, product, business, data, devops, finance, hr, qa, all-others"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max results (1-50, default 20)",
            "default": 20
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ecommerce.amazon.search",
      "description": "Search Amazon products by keyword \u2014 filter by price range, sort by relevance/price/rating/reviews/newest. Returns title, ASIN, price, rating, Prime flag, image. 12 marketplaces: US, UK, CA, DE, FR, IT, ES, AU, IN, MX, BR, JP (Canopy API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search keywords (e.g. \"wireless headphones\", \"raspberry pi 5\")"
          },
          "domain": {
            "type": "string",
            "description": "Amazon marketplace: US, UK, CA, DE, FR, IT, ES, AU, IN, MX, BR, JP (default US)",
            "default": "US"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for pagination"
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "rating",
              "reviews",
              "newest"
            ],
            "description": "Sort order: relevance, price_asc, price_desc, rating, reviews, newest"
          },
          "price_min": {
            "type": "number",
            "description": "Minimum price filter (in marketplace currency)"
          },
          "price_max": {
            "type": "number",
            "description": "Maximum price filter (in marketplace currency)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ecommerce.amazon.product",
      "description": "Get full Amazon product details by ASIN \u2014 title, brand, price, rating, stock status, feature bullets, categories, seller name. Use ASINs from canopy.search. 12 Amazon marketplaces supported (Canopy API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "asin": {
            "type": "string",
            "description": "Amazon ASIN product ID (e.g. \"B0CRSNCJ6Y\"). Get ASINs from canopy.search"
          },
          "domain": {
            "type": "string",
            "description": "Amazon marketplace: US, UK, CA, DE, FR, IT, ES, AU, IN, MX, BR, JP (default US)",
            "default": "US"
          }
        },
        "required": [
          "asin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ecommerce.amazon.offers",
      "description": "Get all third-party seller offers for an Amazon product \u2014 price, condition (new/used), seller name & rating, Buy Box winner flag, Fulfilled by Amazon, delivery estimate. Price comparison across sellers (Canopy API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "asin": {
            "type": "string",
            "description": "Amazon ASIN product ID. Returns all third-party offers with Buy Box winner, seller ratings, delivery info"
          },
          "domain": {
            "type": "string",
            "description": "Amazon marketplace: US, UK, CA, DE, FR, IT, ES, AU, IN, MX, BR, JP (default US)",
            "default": "US"
          }
        },
        "required": [
          "asin"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ecommerce.amazon.deals",
      "description": "Browse current Amazon deals \u2014 original price vs deal price, product title, ASIN, deal link. Paginated, 500+ active deals. 12 Amazon marketplaces (Canopy API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Amazon marketplace: US, UK, CA, DE, FR, IT, ES, AU, IN, MX, BR, JP (default US)",
            "default": "US"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number (default 1)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "scraping.spider.scrape",
      "description": "Scrape any web page and get clean content \u2014 markdown (default), plain text, or raw HTML. Handles JavaScript rendering, anti-bot bypass, proxy rotation. Returns LLM-ready output. Cheapest web scraper with PAYG pricing (Spider.cloud)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to scrape (e.g. \"https://example.com/page\")"
          },
          "format": {
            "type": "string",
            "enum": [
              "markdown",
              "text",
              "raw",
              "commonmark"
            ],
            "description": "Output format: markdown (default, best for LLMs), text (plain), raw (HTML), commonmark",
            "default": "markdown"
          },
          "readability": {
            "type": "boolean",
            "description": "Enable readability mode \u2014 pre-processes page for LLM consumption"
          },
          "wait_for": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Wait N ms for JS to render before scraping (0-30000)"
          }
        },
        "required": [
          "url"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "scraping.spider.search",
      "description": "Web search that returns page titles, descriptions, and URLs. Combine with spider.scrape to get full content. Results ranked by relevance (Spider.cloud)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Web search query (e.g. \"best MCP servers 2026\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results (1-20, default 5)",
            "default": 5
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.imgflip.memes",
      "description": "Get top 100 popular meme templates \u2014 Drake Hotline Bling, Two Buttons, Distracted Boyfriend, and more. Returns template ID, name, image URL, box count. Use IDs with imgflip.caption to generate memes (Imgflip)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Optional: filter memes by name (client-side). Returns top 100 popular meme templates."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "media.imgflip.caption",
      "description": "Generate a captioned meme image from a template ID + top/bottom text. Returns direct image URL. Use imgflip.memes to find template IDs. 100K+ templates available (Imgflip)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "template_id": {
            "type": "string",
            "description": "Meme template ID from imgflip.memes (e.g. \"181913649\" for Drake Hotline Bling, \"87743020\" for Two Buttons)"
          },
          "top_text": {
            "type": "string",
            "description": "Top text on the meme"
          },
          "bottom_text": {
            "type": "string",
            "description": "Bottom text on the meme"
          }
        },
        "required": [
          "template_id"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "recipes.cocktail.search",
      "description": "Search 10,000+ cocktail recipes by name or filter by ingredient. Returns name, category, glass type, instructions, ingredients with measures, image. Search \"margarita\" or filter by \"Vodka\" (TheCocktailDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Cocktail name to search (e.g. \"margarita\", \"mojito\", \"old fashioned\")"
          },
          "ingredient": {
            "type": "string",
            "description": "Filter by ingredient (e.g. \"Vodka\", \"Rum\", \"Gin\"). Returns cocktails containing this ingredient. Use name OR ingredient, not both."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "recipes.cocktail.random",
      "description": "Get a random cocktail recipe with full details \u2014 name, category, glass, instructions, ingredients, measures, image. Great for discovery and recommendations (TheCocktailDB)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1,
            "description": "Always returns 1 random cocktail with full recipe",
            "default": 1
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "developer.github.search",
      "description": "Search GitHub repositories by keyword, language, stars, topics. Returns name, description, stars, forks, language, license, owner. Sort by stars/forks/updated. 86K+ MCP repos, 372M+ total repos (GitHub API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query (e.g. \"mcp server\", \"react framework\", \"language:python stars:>1000\")"
          },
          "sort": {
            "type": "string",
            "enum": [
              "stars",
              "forks",
              "updated",
              "help-wanted-issues"
            ],
            "description": "Sort by: stars (default), forks, updated, help-wanted-issues",
            "default": "stars"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Max results (1-30, default 10)",
            "default": 10
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "developer.github.user",
      "description": "Get a GitHub user profile \u2014 name, bio, public repos count, followers, company, location, join date. Works for users and organizations (GitHub API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "GitHub username (e.g. \"torvalds\", \"whiteknightonhorse\")"
          }
        },
        "required": [
          "username"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "developer.github.repo",
      "description": "Get full details of a GitHub repository \u2014 description, stars, forks, language, topics, license, last update. Public repos only (GitHub API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "owner": {
            "type": "string",
            "description": "Repository owner (e.g. \"facebook\", \"microsoft\")"
          },
          "repo": {
            "type": "string",
            "description": "Repository name (e.g. \"react\", \"vscode\")"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "knowledge.wikidata.search",
      "description": "Search 100M+ structured entities in Wikidata \u2014 people, companies, places, concepts. Returns entity ID, label, description. Use IDs with wikidata.entity for full details. CC-0 public domain (Wikidata)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query (e.g. \"Tesla\", \"Barack Obama\", \"JavaScript\", \"Mount Everest\")"
          },
          "language": {
            "type": "string",
            "description": "Language code for labels (e.g. \"en\", \"de\", \"fr\", \"ja\"). Default: en",
            "default": "en"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results (1-20, default 10)",
            "default": 10
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "knowledge.wikidata.entity",
      "description": "Get structured data for a Wikidata entity by ID (e.g. Q42 = Douglas Adams). Returns labels, descriptions, aliases, and up to 20 property statements. 300+ languages supported. CC-0 (Wikidata)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Wikidata entity ID (e.g. \"Q42\" for Douglas Adams, \"Q478214\" for Tesla Inc). Get IDs from wikidata.search"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "language.dictionary.define",
      "description": "Get word definition \u2014 phonetic pronunciation, part of speech, definitions with examples, synonyms, antonyms, audio URL. Supports 12 languages: en, es, fr, de, it, pt, ru, ar, hi, ja, ko, zh (Free Dictionary API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "word": {
            "type": "string",
            "description": "Word to define (e.g. \"algorithm\", \"serendipity\", \"ubuntu\")"
          },
          "language": {
            "type": "string",
            "description": "Language code: en, es, fr, de, it, pt, ru, ar, hi, ja, ko, zh (default: en)",
            "default": "en"
          }
        },
        "required": [
          "word"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "language.dictionary.words",
      "description": "Find words by meaning, sound, rhyme, or spelling pattern. \"happy\" \u2192 pleased, blissful. \"algorithm\" rhymes \u2192 rhythm, logarithm. Great for writing, creative tasks, word games (Datamuse)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "meaning": {
            "type": "string",
            "description": "Find words with this meaning (e.g. \"happy\" \u2192 pleased, blissful, content)"
          },
          "sounds_like": {
            "type": "string",
            "description": "Find words that sound like this (e.g. \"elefant\" \u2192 elephant)"
          },
          "rhymes_with": {
            "type": "string",
            "description": "Find words that rhyme with this (e.g. \"algorithm\" \u2192 rhythm, logarithm)"
          },
          "starts_with": {
            "type": "string",
            "description": "Find words starting with these letters (e.g. \"algor\" \u2192 algorithm, algorithmic)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Max results (1-25, default 10)",
            "default": 10
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.global.stats",
      "title": "Crypto Global Stats",
      "description": "Get global cryptocurrency market statistics",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_defi": {
            "type": "boolean",
            "description": "Include DeFi-specific global stats"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "stocks.company.profile",
      "title": "Company Profile",
      "description": "Company profile by ticker \u2014 name, exchange, industry, country, market cap, shares outstanding, IPO date, logo, website (Finnhub)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Stock ticker symbol (e.g. \"AAPL\")",
            "minLength": 1,
            "maxLength": 10
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.address.reverse",
      "title": "Reverse Geocode (Geoapify)",
      "description": "Convert geographic coordinates (lat/lon) to a structured address \u2014 street, city, country, postal code (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude of the point to reverse geocode.",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "description": "Longitude of the point to reverse geocode.",
            "minimum": -180,
            "maximum": 180
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Result language code (e.g. \"en\", \"de\", \"ru\"). Default: English."
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "developer.github.user",
      "title": "GitHub User Profile",
      "description": "Get a GitHub user profile \u2014 name, bio, public repos count, followers, company, location, join date. Works for users and organizations (GitHub API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "GitHub username (e.g. \"torvalds\", \"whiteknightonhorse\")"
          }
        },
        "required": [
          "username"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "noaa.weather.forecast",
      "title": "NOAA 7-Day Forecast",
      "description": "Get 7-day weather forecast for a US location by latitude/longitude. Returns day and night periods with temperature (\u00b0F), precipitation chance, wind speed/direction, and detailed forecast text. Powered by NOAA National Weather Service (api.weather.gov). US contiguous only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees (US contiguous only: 24\u201350)",
            "minimum": 24,
            "maximum": 50
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees (US contiguous only: \u2212125 to \u221266)",
            "minimum": -125,
            "maximum": -66
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "noaa.weather.hourly",
      "title": "NOAA Hourly Forecast",
      "description": "Get hourly weather forecast (next 48 hours) for a US location by latitude/longitude. Returns temperature (\u00b0F), precipitation chance, wind speed/direction, and short conditions per hour. Powered by NOAA National Weather Service. US contiguous only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees (US contiguous only: 24\u201350)",
            "minimum": 24,
            "maximum": 50
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees (US contiguous only: \u2212125 to \u221266)",
            "minimum": -125,
            "maximum": -66
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "noaa.weather.observation",
      "title": "NOAA Latest Observation",
      "description": "Get latest weather observation from the nearest ASOS/AWOS station to a US location. Returns current temperature (\u00b0C/\u00b0F), humidity, wind, pressure, visibility, dewpoint, heat index, wind chill. Powered by NOAA National Weather Service. US contiguous only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees (US contiguous only: 24\u201350)",
            "minimum": 24,
            "maximum": 50
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees (US contiguous only: \u2212125 to \u221266)",
            "minimum": -125,
            "maximum": -66
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "realestate.property.details",
      "title": "US Property Details",
      "description": "Detailed property information by property ID \u2014 beds, baths, sqft, year built, lot size, tax assessment, HOA, days on market, photos, last sale price/date. Use for_sale search first to get property_id (RapidAPI / Realtor.com data)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "description": "Property ID from a for_sale search result (e.g. \"2734304997\")"
          }
        },
        "required": [
          "property_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "whoisjson.ssl.check",
      "title": "SSL Certificate Check",
      "description": "Validate SSL/TLS certificate for any domain. Returns issuer (org, CN), validity dates, subject CN, wildcard status, key size, and Subject Alternative Names (SAN) list. Useful for security audits, monitoring cert expiration, and verifying HTTPS configuration (WhoisJSON)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to check SSL certificate (e.g. google.com, apibase.pro)",
            "minLength": 1
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "whoisjson.dns.subdomains",
      "title": "Subdomain Discovery",
      "description": "Discover subdomains for any domain via DNS brute-force enumeration. Returns subdomain names, DNS record types (A/CNAME/MX), resolved IPs, and active/inactive status. Useful for security reconnaissance, asset inventory, and infrastructure mapping (WhoisJSON)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name to discover subdomains (e.g. github.com, example.com)",
            "minLength": 1
          }
        },
        "required": [
          "domain"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "npm.packages.downloads",
      "title": "npm Download Stats",
      "description": "Get download count for any npm package over a time period: last-day, last-week, last-month, last-year. Useful for measuring package popularity, adoption trends, and comparing alternatives (e.g. express: 92M/week).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "package": {
            "type": "string",
            "description": "npm package name (e.g. express, lodash, typescript)",
            "minLength": 1
          },
          "period": {
            "type": "string",
            "enum": [
              "last-day",
              "last-week",
              "last-month",
              "last-year"
            ],
            "description": "Time period for download stats (default: last-week)"
          }
        },
        "required": [
          "package"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "npm.packages.info",
      "title": "npm Package Info",
      "description": "Get metadata for any npm package: version, description, license, dependencies, maintainers, repository URL, keywords, engines. 2.1M+ packages. Supports scoped packages (@scope/name). Returns latest version by default or a specific version.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "package": {
            "type": "string",
            "description": "npm package name (e.g. express, react, @anthropic-ai/sdk)",
            "minLength": 1
          },
          "version": {
            "type": "string",
            "description": "Specific version to fetch (e.g. 5.2.1). Defaults to latest"
          }
        },
        "required": [
          "package"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "npm.packages.search",
      "title": "npm Package Search",
      "description": "Search 2.1M+ npm packages by keyword. Returns ranked results with quality, popularity, and maintenance scores, download counts, dependents, license, publisher. Find libraries for any task (e.g. \"mcp server\", \"react hooks\", \"typescript orm\").",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query (e.g. \"mcp server\", \"react hooks\", \"typescript orm\")",
            "minLength": 1
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results to return (1-20, default 10)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "npm.packages.versions",
      "title": "npm Package Versions",
      "description": "List all published versions of an npm package with dist-tags (latest, next, beta), deprecation status, and total version count. Returns the 50 most recent versions. Useful for dependency auditing and upgrade planning.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "package": {
            "type": "string",
            "description": "npm package name to list all versions (e.g. express, react)",
            "minLength": 1
          }
        },
        "required": [
          "package"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "osv.security.batch",
      "title": "Batch Vulnerability Scan",
      "description": "Scan up to 100 packages at once for known vulnerabilities. Submit package+version+ecosystem triples (e.g. full requirements.txt or package.json dependencies) and get vulnerability matches for all in a single call. Ideal for full dependency tree security audits.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "queries": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "package": {
                  "type": "string",
                  "description": "Package name",
                  "minLength": 1
                },
                "version": {
                  "type": "string",
                  "description": "Package version",
                  "minLength": 1
                },
                "ecosystem": {
                  "type": "string",
                  "enum": [
                    "npm",
                    "PyPI",
                    "Go",
                    "Maven",
                    "crates.io",
                    "NuGet",
                    "Packagist",
                    "RubyGems",
                    "Pub",
                    "Hex",
                    "SwiftURL",
                    "Linux",
                    "Android",
                    "OSS-Fuzz",
                    "GIT"
                  ],
                  "description": "Package ecosystem (npm, PyPI, Go, Maven, crates.io, NuGet, Packagist, RubyGems, etc.)"
                }
              },
              "required": [
                "package",
                "version",
                "ecosystem"
              ]
            },
            "description": "List of package+version+ecosystem to check (max 100)",
            "minItems": 1,
            "maxItems": 100
          }
        },
        "required": [
          "queries"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "osv.security.get",
      "title": "Get Vulnerability Details",
      "description": "Retrieve full details for a vulnerability by OSV ID (GHSA-xxxx), CVE ID (CVE-2021-xxxxx), or ecosystem ID (PYSEC/RUSTSEC/GO). Returns summary, CVSS severity, affected packages with fix versions, and reference links.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "vuln_id": {
            "type": "string",
            "description": "Vulnerability ID \u2014 OSV (e.g. GHSA-35jh-r3h4-6jhm), CVE (e.g. CVE-2021-23337), or PYSEC/GO/RUSTSEC ID",
            "minLength": 1
          }
        },
        "required": [
          "vuln_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "osv.security.query",
      "title": "Query Package Vulnerabilities",
      "description": "Check known vulnerabilities for a specific package version in any ecosystem (npm, PyPI, Go, Maven, Rust, NuGet, 14+ more). Returns CVE/GHSA IDs, severity scores, and affected package counts. Powered by Google OSV.dev \u2014 aggregates GitHub Security Advisories, NVD, and ecosystem-native databases.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "package": {
            "type": "string",
            "description": "Package name (e.g. lodash, requests, gin-gonic/gin)",
            "minLength": 1
          },
          "version": {
            "type": "string",
            "description": "Package version to check (e.g. 4.17.20, 2.25.0)",
            "minLength": 1
          },
          "ecosystem": {
            "type": "string",
            "enum": [
              "npm",
              "PyPI",
              "Go",
              "Maven",
              "crates.io",
              "NuGet",
              "Packagist",
              "RubyGems",
              "Pub",
              "Hex",
              "SwiftURL",
              "Linux",
              "Android",
              "OSS-Fuzz",
              "GIT"
            ],
            "description": "Package ecosystem (npm, PyPI, Go, Maven, crates.io, NuGet, Packagist, RubyGems, etc.)"
          }
        },
        "required": [
          "package",
          "version",
          "ecosystem"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "census.data.demographics",
      "title": "US Demographics Data",
      "description": "Get demographic composition for any US geography \u2014 median age, race (white/Black/Asian), Hispanic/Latino population, and bachelor's degree attainment. Source: ACS 5-year estimates (US Census Bureau). Useful for market research, policy analysis, and neighborhood profiling.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state_fips": {
            "type": "string",
            "description": "US state FIPS code (e.g. 06 for California, 36 for New York, * for all states)",
            "minLength": 1,
            "maxLength": 2
          },
          "county_fips": {
            "type": "string",
            "description": "County FIPS code within the state (e.g. 037 for Los Angeles, * for all counties). Omit for state-level data."
          },
          "year": {
            "type": "integer",
            "minimum": 2010,
            "maximum": 2023,
            "description": "Survey year (default 2022). ACS 5-year estimates available 2010-2022."
          }
        },
        "required": [
          "state_fips"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "census.data.economic",
      "title": "US Economic Data",
      "description": "Get economic indicators for any US geography \u2014 median household income, population in poverty, and unemployed count. Source: ACS 5-year estimates (US Census Bureau). Key data for market sizing, real estate analysis, and business location intelligence.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state_fips": {
            "type": "string",
            "description": "US state FIPS code (e.g. 06 for California, 36 for New York, * for all states)",
            "minLength": 1,
            "maxLength": 2
          },
          "county_fips": {
            "type": "string",
            "description": "County FIPS code within the state (e.g. 037 for Los Angeles, * for all counties). Omit for state-level data."
          },
          "year": {
            "type": "integer",
            "minimum": 2010,
            "maximum": 2023,
            "description": "Survey year (default 2022). ACS 5-year estimates available 2010-2022."
          }
        },
        "required": [
          "state_fips"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "census.data.housing",
      "title": "US Housing Data",
      "description": "Get housing statistics for any US geography \u2014 total units, median home value, median rent, owner-occupied vs renter-occupied counts. Source: ACS 5-year estimates (US Census Bureau). Essential for real estate agents, property valuations, and housing market analysis.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state_fips": {
            "type": "string",
            "description": "US state FIPS code (e.g. 06 for California, 36 for New York, * for all states)",
            "minLength": 1,
            "maxLength": 2
          },
          "county_fips": {
            "type": "string",
            "description": "County FIPS code within the state (e.g. 037 for Los Angeles, * for all counties). Omit for state-level data."
          },
          "year": {
            "type": "integer",
            "minimum": 2010,
            "maximum": 2023,
            "description": "Survey year (default 2022). ACS 5-year estimates available 2010-2022."
          }
        },
        "required": [
          "state_fips"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "census.data.population",
      "title": "US Population Data",
      "description": "Get population counts for any US geography by FIPS code \u2014 total, male, female. Covers all 50 states, 3,000+ counties, and sub-county areas. Source: American Community Survey 5-year estimates (US Census Bureau). Public domain, updated annually.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state_fips": {
            "type": "string",
            "description": "US state FIPS code (e.g. 06 for California, 36 for New York, * for all states)",
            "minLength": 1,
            "maxLength": 2
          },
          "county_fips": {
            "type": "string",
            "description": "County FIPS code within the state (e.g. 037 for Los Angeles, * for all counties). Omit for state-level data."
          },
          "year": {
            "type": "integer",
            "minimum": 2010,
            "maximum": 2023,
            "description": "Survey year (default 2022). ACS 5-year estimates available 2010-2022."
          }
        },
        "required": [
          "state_fips"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spending.federal.agency",
      "title": "Federal Agency Spending",
      "description": "Search federal awards by agency name (e.g. \"Defense\", \"NASA\", \"Health and Human Services\"). Returns top awards by amount for a fiscal year. Source: USAspending.gov \u2014 covers all federal agencies.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "agency_name": {
            "type": "string",
            "description": "Federal agency name or keyword (e.g. \"Defense\", \"NASA\", \"Health and Human Services\")",
            "minLength": 1
          },
          "fiscal_year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2026,
            "description": "Fiscal year (e.g. 2025). Default: current year."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of top awards to return (1-25, default 10)"
          }
        },
        "required": [
          "agency_name"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spending.federal.awards",
      "title": "Federal Award Search",
      "description": "Search 60M+ US federal contract and grant awards by keyword, recipient, or NAICS code. Returns award amount, recipient, agency, dates, and description. Sorted by amount descending. Source: USAspending.gov (DATA Act mandate, US Gov open data).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "Search keyword for federal awards (e.g. \"artificial intelligence\", \"cybersecurity\", company name)",
            "minLength": 1
          },
          "fiscal_year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2026,
            "description": "Fiscal year to filter (e.g. 2025). Default: current year."
          },
          "award_type": {
            "type": "string",
            "enum": [
              "contracts",
              "grants",
              "all"
            ],
            "description": "Filter by award type: contracts, grants, or all (default: all)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of results to return (1-25, default 10)"
          }
        },
        "required": [
          "keyword"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "spending.federal.geography",
      "title": "Federal Spending by State",
      "description": "Get total US federal spending by state for contracts, grants, or all awards in a fiscal year. Returns all 50+ states sorted by spending amount. Useful for regional economic analysis and policy research. Source: USAspending.gov.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fiscal_year": {
            "type": "integer",
            "minimum": 2017,
            "maximum": 2026,
            "description": "Fiscal year (e.g. 2025). Default: current year."
          },
          "award_type": {
            "type": "string",
            "enum": [
              "contracts",
              "grants",
              "all"
            ],
            "description": "Filter by award type: contracts, grants, or all (default: all)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sam.gov.entity_detail",
      "title": "SAM.gov Entity Detail",
      "description": "Get full SAM.gov registration details for a federal contractor by UEI (Unique Entity Identifier). Returns legal name, CAGE code, addresses, NAICS/PSC codes, business certifications, entity structure, organization type, and registration dates. Source: SAM.gov (GSA).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "uei": {
            "type": "string",
            "description": "Unique Entity Identifier (UEI) \u2014 12-character SAM.gov ID (e.g. KM99JJBNQ9M5 for Lockheed Martin)",
            "minLength": 1
          }
        },
        "required": [
          "uei"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sam.gov.entity_search",
      "title": "SAM.gov Entity Search",
      "description": "Search 700K+ registered US federal contractors and grantees by company name, state, or NAICS code. Returns UEI (Unique Entity Identifier), CAGE code, registration status, business types (Small Business, 8(a), HUBZone, WOSB, Veteran-Owned), and NAICS codes. Source: SAM.gov (GSA).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Company or organization name to search (e.g. \"Lockheed\", \"Google\", \"Deloitte\"). Supports partial match.",
            "minLength": 1
          },
          "state": {
            "type": "string",
            "maxLength": 2,
            "description": "US state code to filter (e.g. VA, CA, TX)"
          },
          "naics_code": {
            "type": "string",
            "description": "NAICS industry code to filter (e.g. 541512 for Computer Systems Design)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of results (1-25, default 10)"
          }
        },
        "required": [
          "name"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "fema.disaster.assistance",
      "title": "FEMA Housing Assistance",
      "description": "Query federal disaster housing assistance data by state and disaster number. Returns registration counts, average damage, total inspected, approved amounts by county. Useful for disaster recovery analysis and aid distribution research. Source: OpenFEMA.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "US state code (e.g. TX, FL, CA)",
            "minLength": 2,
            "maxLength": 2
          },
          "disaster_number": {
            "type": "integer",
            "description": "FEMA disaster number to filter (e.g. 4673)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 10)"
          }
        },
        "required": [
          "state"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "fema.disaster.declarations",
      "title": "FEMA Disaster Declarations",
      "description": "Search US federal disaster declarations from 1953 to present. Filter by state, incident type (Fire, Flood, Hurricane, Tornado, Earthquake), and year. Returns disaster number, title, dates, designated programs (IA, PA, HM). Source: OpenFEMA (US Gov open data).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "US state code (e.g. CA, TX, FL). Omit for all states."
          },
          "incident_type": {
            "type": "string",
            "enum": [
              "Fire",
              "Flood",
              "Hurricane",
              "Tornado",
              "Earthquake",
              "Severe Storm(s)",
              "Snow",
              "Drought",
              "Typhoon",
              "Biological",
              "Other"
            ],
            "description": "Disaster type to filter (e.g. Fire, Flood, Hurricane)"
          },
          "year": {
            "type": "integer",
            "minimum": 1953,
            "maximum": 2026,
            "description": "Filter by declaration year (1953-2026)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 10)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "fema.disaster.flood_claims",
      "title": "NFIP Flood Insurance Claims",
      "description": "Retrieve National Flood Insurance Program (NFIP) claims by state and year. Returns flood zone, building/contents payments, insurance coverage amounts, cause of damage. Essential for flood risk assessment and insurance analysis. Source: OpenFEMA.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "US state code (e.g. FL, TX, LA)",
            "minLength": 2,
            "maxLength": 2
          },
          "year": {
            "type": "integer",
            "minimum": 1970,
            "maximum": 2026,
            "description": "Year of loss to filter (e.g. 2024)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 10)"
          }
        },
        "required": [
          "state"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "pypi.packages.info",
      "title": "PyPI Package Info",
      "description": "Get metadata for any Python package from PyPI: version, summary, license, author, dependencies, classifiers, Python version requirements. 550K+ packages. Supports specific version lookup. Complements npm (UC-344) for polyglot dependency intelligence.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "package": {
            "type": "string",
            "description": "Python package name (e.g. requests, flask, numpy, anthropic)",
            "minLength": 1
          },
          "version": {
            "type": "string",
            "description": "Specific version (e.g. 2.31.0). Defaults to latest release."
          }
        },
        "required": [
          "package"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "pypi.packages.releases",
      "title": "PyPI Package Versions",
      "description": "List all published versions of a Python package with upload dates, yanked status, and distribution file types (sdist/wheel). Returns the 50 most recent versions. Useful for dependency auditing, version pinning, and upgrade planning.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "package": {
            "type": "string",
            "description": "Python package name to list all versions (e.g. django, pandas, scipy)",
            "minLength": 1
          }
        },
        "required": [
          "package"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "gbif.biodiversity.occurrence_count",
      "title": "GBIF Occurrence Count",
      "description": "Get total occurrence count for a species, optionally filtered by country. Useful for range size estimation, data density assessment, and conservation status analysis. Source: GBIF.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "taxon_key": {
            "type": "integer",
            "description": "GBIF taxon key to count occurrences for"
          },
          "country": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO country code to filter count (e.g. US, BR)"
          }
        },
        "required": [
          "taxon_key"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "gbif.biodiversity.occurrences",
      "title": "GBIF Species Occurrences",
      "description": "Search 2.5B+ species occurrence records by taxon, country, and year. Returns observation coordinates, date, collector institution, basis of record (specimen/observation). Filter by ISO country code. Source: GBIF (2000+ institutions, 100+ countries).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "taxon_key": {
            "type": "integer",
            "description": "GBIF taxon key for the species to search occurrences"
          },
          "country": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 country code (e.g. US, GB, BR, AU)"
          },
          "year": {
            "type": "integer",
            "minimum": 1700,
            "maximum": 2026,
            "description": "Filter by observation year (e.g. 2024)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 10)"
          }
        },
        "required": [
          "taxon_key"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "gbif.biodiversity.species_details",
      "title": "GBIF Species Details",
      "description": "Get full taxonomic profile for a species by GBIF taxon key. Returns classification hierarchy, vernacular (common) names, synonyms, number of descendants, and accepted name. Source: GBIF backbone taxonomy.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "taxon_key": {
            "type": "integer",
            "description": "GBIF taxon key (numeric ID from species search results)"
          }
        },
        "required": [
          "taxon_key"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "gbif.biodiversity.species_search",
      "title": "GBIF Species Search",
      "description": "Search 9M+ species in the GBIF backbone taxonomy by common or scientific name. Returns taxon key, scientific name, kingdom/phylum/class/order/family/genus, and taxonomic status. Filter by rank (SPECIES, GENUS, FAMILY). Source: Global Biodiversity Information Facility (CC0).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Species name to search \u2014 common name (e.g. \"polar bear\") or scientific name (e.g. \"Ursus maritimus\")",
            "minLength": 1
          },
          "rank": {
            "type": "string",
            "enum": [
              "KINGDOM",
              "PHYLUM",
              "CLASS",
              "ORDER",
              "FAMILY",
              "GENUS",
              "SPECIES"
            ],
            "description": "Taxonomic rank filter (default: SPECIES). Use SPECIES to avoid virus/subspecies matches."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (1-20, default 5)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "congress.legislation.bill_details",
      "title": "US Bill Details",
      "description": "Get full details for a specific US bill by Congress number, type (hr/s), and bill number. Returns title, all sponsors, co-sponsor count, action history, committee referrals, policy subjects. Source: Congress.gov.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "congress": {
            "type": "integer",
            "description": "Congress number (e.g. 119 for 2025-2026, 118 for 2023-2024)",
            "minimum": 93,
            "maximum": 119
          },
          "type": {
            "type": "string",
            "enum": [
              "hr",
              "s",
              "hjres",
              "sjres",
              "hconres",
              "sconres",
              "hres",
              "sres"
            ],
            "description": "Bill type: hr (House bill), s (Senate bill), hjres, sjres, etc."
          },
          "number": {
            "type": "integer",
            "description": "Bill number (e.g. 1 for HR 1)",
            "minimum": 1
          }
        },
        "required": [
          "congress",
          "type",
          "number"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "congress.legislation.bills",
      "title": "US Congressional Bills",
      "description": "Search US federal bills and resolutions from 1973 to present. Filter by Congress number (93-119), bill type (hr/s/hjres/sjres). Returns title, sponsor, party, latest action, policy area. Source: Congress.gov (Library of Congress).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "congress": {
            "type": "integer",
            "minimum": 93,
            "maximum": 119,
            "description": "Congress number (93=1973 to 119=2025-2026). Default: current (119)."
          },
          "type": {
            "type": "string",
            "enum": [
              "hr",
              "s",
              "hjres",
              "sjres",
              "hconres",
              "sconres",
              "hres",
              "sres"
            ],
            "description": "Bill type: hr (House), s (Senate), hjres, sjres, hconres, sconres, hres, sres"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of results (1-25, default 10)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "congress.legislation.members",
      "title": "US Congressional Members",
      "description": "Search current and historical members of the US Congress. Filter by state, chamber (House/Senate), and Congress number. Returns name, party, state, district, bioguide ID. Source: Congress.gov.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "US state code (e.g. CA, TX, NY)"
          },
          "chamber": {
            "type": "string",
            "enum": [
              "house",
              "senate"
            ],
            "description": "Chamber: house or senate"
          },
          "congress": {
            "type": "integer",
            "minimum": 93,
            "maximum": 119,
            "description": "Congress number. Default: current (119)."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of results (1-25, default 10)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "depsdev.insights.advisories",
      "title": "Security Advisories (deps.dev)",
      "description": "List security advisories (from OSV) affecting a specific package version. Cross-ecosystem: npm, PyPI, Go, Maven, Cargo, NuGet. Returns advisory IDs with links to OSV.dev for full details. Complements osv.query for version-specific lookups.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "system": {
            "type": "string",
            "enum": [
              "npm",
              "pypi",
              "go",
              "maven",
              "cargo",
              "nuget"
            ],
            "description": "Package ecosystem: npm, pypi, go, maven, cargo, or nuget"
          },
          "package": {
            "type": "string",
            "description": "Package name to check for security advisories",
            "minLength": 1
          },
          "version": {
            "type": "string",
            "description": "Package version to check (e.g. 4.17.20)",
            "minLength": 1
          }
        },
        "required": [
          "system",
          "package",
          "version"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "depsdev.insights.dependencies",
      "title": "Dependency Tree (deps.dev)",
      "description": "Resolve the full transitive dependency tree for a package version. Returns all direct and indirect dependencies with versions and relation type. Reveals hidden supply chain depth (e.g. express@5.2.1 has 67 transitive deps). Google deps.dev.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "system": {
            "type": "string",
            "enum": [
              "npm",
              "pypi",
              "go",
              "maven",
              "cargo",
              "nuget"
            ],
            "description": "Package ecosystem: npm, pypi, go, maven, cargo, or nuget"
          },
          "package": {
            "type": "string",
            "description": "Package name (e.g. lodash, flask, github.com/gin-gonic/gin)",
            "minLength": 1
          },
          "version": {
            "type": "string",
            "description": "Package version to resolve dependencies for (e.g. 4.17.21, 3.0.0)",
            "minLength": 1
          }
        },
        "required": [
          "system",
          "package",
          "version"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "depsdev.insights.package",
      "title": "Package Info (deps.dev)",
      "description": "Get package metadata from Google deps.dev \u2014 all versions, default version, ecosystem. Covers npm, PyPI, Go, Maven, Cargo, NuGet (50M+ package versions). Complements npm/PyPI registries with cross-ecosystem unified view.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "system": {
            "type": "string",
            "enum": [
              "npm",
              "pypi",
              "go",
              "maven",
              "cargo",
              "nuget"
            ],
            "description": "Package ecosystem: npm, pypi, go, maven, cargo, or nuget"
          },
          "package": {
            "type": "string",
            "description": "Package name (e.g. express, requests, gin-gonic/gin, log4j-core)",
            "minLength": 1
          }
        },
        "required": [
          "system",
          "package"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "epa.environment.toxic_releases",
      "title": "EPA Toxic Release Inventory",
      "description": "Search EPA Toxic Release Inventory (TRI) facilities by US state or ZIP code. Returns facility name, address, county, industry sector, and closed status. 600K+ regulated facilities. Source: EPA Envirofacts (US Gov open data).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "US state code (e.g. CA, TX, NY, FL)",
            "minLength": 2,
            "maxLength": 2
          },
          "zip_code": {
            "type": "string",
            "description": "ZIP code to filter (e.g. 90001). Overrides state filter if provided."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 10)"
          }
        },
        "required": [
          "state"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "epa.environment.water_systems",
      "title": "EPA Public Water Systems",
      "description": "Search public water systems by US state. Returns system name, PWSID, activity status, primacy agency, EPA region, population served, and service connections. Source: EPA Safe Drinking Water Act data.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "US state code (e.g. FL, CA, TX)",
            "minLength": 2,
            "maxLength": 2
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 10)"
          }
        },
        "required": [
          "state"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ncei.climate.daily_data",
      "title": "NCEI Daily Climate Data",
      "description": "Retrieve historical daily weather observations from NOAA NCEI \u2014 max/min temperature, precipitation, snowfall, wind speed. 260+ years of records from global stations. Values in tenths of \u00b0C (temp) and tenths of mm (precip). Source: GHCND dataset.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station_id": {
            "type": "string",
            "description": "NCEI station ID (e.g. GHCND:USW00094728 for Central Park, NY). Get from ncei.stations tool.",
            "minLength": 1
          },
          "start_date": {
            "type": "string",
            "description": "Start date in YYYY-MM-DD format (e.g. 2025-01-01)"
          },
          "end_date": {
            "type": "string",
            "description": "End date in YYYY-MM-DD format (e.g. 2025-01-31). Max 1 year range."
          },
          "datatypes": {
            "type": "string",
            "description": "Comma-separated data types: TMAX (max temp), TMIN (min temp), PRCP (precipitation), SNOW, AWND (avg wind). Default: all."
          }
        },
        "required": [
          "station_id",
          "start_date",
          "end_date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "ncei.climate.stations",
      "title": "NCEI Weather Stations",
      "description": "Search 100K+ global weather stations from NOAA NCEI by location (state FIPS, ZIP, country). Returns station ID, name, coordinates, elevation, and data coverage dates (some from 1700s). Use station IDs with ncei.daily_data for historical climate records.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "location_id": {
            "type": "string",
            "description": "Location ID: FIPS:06 (California), FIPS:36 (New York), ZIP:10001, CITY:US360019, or CNTRY:US",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "description": "Number of stations to return (1-25, default 10)"
          }
        },
        "required": [
          "location_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "climate.indicators.arctic_ice",
      "title": "Arctic Sea Ice Extent",
      "description": "Arctic sea ice extent from NSIDC \u2014 monthly measurements in million km\u00b2 since 1979. Tracks long-term decline in Arctic ice coverage. Returns last 10 years by default. Source: National Snow and Ice Data Center.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "years": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of years of data to return (1-50, default 10). Data is monthly."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "climate.indicators.co2",
      "title": "Atmospheric CO2 (Keeling Curve)",
      "description": "Atmospheric CO2 concentration from NOAA Mauna Loa Observatory \u2014 the Keeling Curve. Monthly readings in ppm (parts per million) since 1958. Returns last 10 years by default. Source: NOAA ESRL.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "years": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of years of data to return (1-50, default 10). Data is monthly."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "climate.indicators.methane",
      "title": "Atmospheric Methane",
      "description": "Atmospheric methane concentration from NOAA ESRL \u2014 monthly readings in ppb (parts per billion) since 1983. Methane is the second most important greenhouse gas after CO2. Returns last 10 years by default.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "years": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of years of data to return (1-50, default 10). Data is monthly."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "climate.indicators.nitrous_oxide",
      "title": "Atmospheric Nitrous Oxide",
      "description": "Atmospheric nitrous oxide concentration from NOAA ESRL \u2014 monthly readings in ppb since 2001. N2O is a potent greenhouse gas with 273x the warming potential of CO2. Returns last 10 years by default.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "years": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of years of data to return (1-50, default 10). Data is monthly."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "climate.indicators.temperature",
      "title": "Global Temperature Anomaly",
      "description": "Global surface temperature anomaly from NASA GISS \u2014 monthly readings since 1880. Values in \u00b0C vs 1951-1980 baseline. Returns last 10 years by default (adjustable 1-50). Source: NASA Goddard Institute for Space Studies.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "years": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of years of data to return (1-50, default 10). Data is monthly."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "chart.visualization.create",
      "title": "Create Chart Image",
      "description": "\u26a1 ACTION: Generate a chart image (PNG) from data \u2014 bar, line, pie, doughnut, radar, scatter. Returns a permanent image URL. Combine with data tools (climate.co2, census.population, finance.exchange_rates) to visualize any dataset. Powered by QuickChart (Chart.js).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "bar",
              "line",
              "pie",
              "doughnut",
              "radar",
              "scatter",
              "horizontalBar"
            ],
            "description": "Chart type: bar, line, pie, doughnut, radar, scatter, horizontalBar"
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "X-axis labels (e.g. [\"Q1\", \"Q2\", \"Q3\", \"Q4\"])"
          },
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "Dataset label (e.g. \"Revenue\", \"Temperature\")"
                },
                "data": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  },
                  "description": "Array of numeric values"
                }
              },
              "required": [
                "label",
                "data"
              ]
            },
            "description": "One or more datasets to plot",
            "minItems": 1
          },
          "title": {
            "type": "string",
            "description": "Chart title displayed at top"
          },
          "width": {
            "type": "integer",
            "minimum": 100,
            "maximum": 1000,
            "description": "Image width in pixels (100-1000, default 500)"
          },
          "height": {
            "type": "integer",
            "minimum": 100,
            "maximum": 1000,
            "description": "Image height in pixels (100-1000, default 300)"
          }
        },
        "required": [
          "type",
          "labels",
          "datasets"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "figi.finance.filter",
      "title": "Filter Financial Instruments",
      "description": "Filter financial instruments by exchange code, market sector (Equity/Corp/Govt/Index/Curncy/Comdty), or security type (Common Stock/ETP/REIT/ADR). Browse instrument universe by structured criteria. Bloomberg OpenFIGI.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "exchange_code": {
            "type": "string",
            "description": "Exchange code (e.g. US, LN, HK, JP)"
          },
          "market_sector": {
            "type": "string",
            "description": "Market sector (e.g. Equity, Corp, Govt, Index, Curncy, Comdty)"
          },
          "security_type": {
            "type": "string",
            "description": "Security type (e.g. \"Common Stock\", \"ETP\", \"REIT\", \"ADR\")"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "figi.finance.map",
      "title": "Map Financial Identifier to FIGI",
      "description": "Resolve financial instrument identifiers \u2014 ISIN, CUSIP, SEDOL, or ticker symbol to Bloomberg FIGI (ISO 18774). Returns FIGI, composite FIGI, security name, type, and exchange. 300M+ instruments across 45K+ exchanges. Use ID_ISIN, ID_CUSIP, ID_SEDOL, or TICKER as id_type.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id_type": {
            "type": "string",
            "enum": [
              "ID_ISIN",
              "ID_CUSIP",
              "ID_SEDOL",
              "ID_BB_GLOBAL",
              "TICKER",
              "ID_WERTPAPIER",
              "ID_COMMON"
            ],
            "description": "Identifier type: ID_ISIN, ID_CUSIP, ID_SEDOL, TICKER, ID_BB_GLOBAL"
          },
          "id_value": {
            "type": "string",
            "description": "Identifier value (e.g. US0378331005 for ISIN, AAPL for ticker, BBG000B9XRY4 for FIGI)",
            "minLength": 1
          },
          "exchange_code": {
            "type": "string",
            "description": "Exchange code to narrow results (e.g. US, LN, JP). Optional."
          }
        },
        "required": [
          "id_type",
          "id_value"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "figi.finance.search",
      "title": "Search Financial Instruments",
      "description": "Search 300M+ financial instruments by company name or ticker keyword. Filter by exchange and security type. Returns Bloomberg FIGI, ticker, name, market sector. Covers equities, ETPs, bonds, derivatives globally.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query \u2014 company name or ticker (e.g. \"Tesla\", \"Apple Inc\", \"MSFT\")",
            "minLength": 1
          },
          "exchange_code": {
            "type": "string",
            "description": "Filter by exchange code (e.g. US, LN, JP)"
          },
          "security_type": {
            "type": "string",
            "description": "Filter by security type (e.g. \"Common Stock\", \"ETP\", \"REIT\")"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.edgar.xbrl_concept",
      "title": "SEC Company Financial History",
      "description": "Complete history of any XBRL financial concept (Revenues, NetIncomeLoss, Assets, EPS) for a company across all SEC filings. Returns up to 20 most recent values with period dates, form type, fiscal year. Free alternative to Bloomberg for historical financials.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cik": {
            "type": "string",
            "description": "SEC CIK number (e.g. \"320193\" for Apple, \"789019\" for Microsoft)",
            "minLength": 1
          },
          "tag": {
            "type": "string",
            "description": "XBRL concept tag (e.g. Revenues, NetIncomeLoss, Assets, EarningsPerShareBasic)",
            "minLength": 1
          },
          "taxonomy": {
            "type": "string",
            "description": "XBRL taxonomy (default: us-gaap). Other: ifrs-full, dei, srt"
          }
        },
        "required": [
          "cik",
          "tag"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "finance.edgar.xbrl_frames",
      "title": "SEC Cross-Company Financial Comparison",
      "description": "Compare a financial metric across ALL SEC-reporting companies for a period. Query Revenues for CY2023 \u2192 2,649 companies with values. Top: Walmart $648B, UnitedHealth $371B. Free alternative to Bloomberg/FactSet. Period format: CY2023 (annual), CY2023Q4I (quarterly).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tag": {
            "type": "string",
            "description": "XBRL concept tag (e.g. Revenues, NetIncomeLoss, Assets, TotalDebt)",
            "minLength": 1
          },
          "period": {
            "type": "string",
            "description": "Reporting period: CY2023 (annual), CY2023Q4I (quarterly instant), CY2023Q3 (quarterly duration)",
            "minLength": 1
          },
          "unit": {
            "type": "string",
            "description": "Unit of measure (default: USD). Other: USD/shares for EPS, shares for share counts"
          },
          "taxonomy": {
            "type": "string",
            "description": "XBRL taxonomy (default: us-gaap)"
          }
        },
        "required": [
          "tag",
          "period"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "usno.astronomy.moon_phases",
      "title": "Moon Phases",
      "description": "Get all moon phase dates for a year \u2014 New Moon, First Quarter, Full Moon, Last Quarter with exact UTC timestamps. ~50 phases per year. Source: US Naval Observatory (canonical astronomical authority, US Gov public domain).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": 1700,
            "maximum": 2100,
            "description": "Year for moon phases (default: current year, e.g. 2026)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "usno.astronomy.seasons",
      "title": "Equinoxes & Solstices",
      "description": "Get exact dates and UTC times for vernal equinox, summer solstice, autumnal equinox, and winter solstice for any year. Also includes Earth perihelion and aphelion dates. Source: US Naval Observatory.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": 1700,
            "maximum": 2100,
            "description": "Year for equinoxes and solstices (default: current year)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "usno.astronomy.sun_moon",
      "title": "Sun & Moon Rise/Set Times",
      "description": "Get sunrise, sunset, moonrise, moonset, and transit times for any location and date. Includes civil/nautical/astronomical twilight. Used for photography golden hour, agriculture planning, outdoor events. Source: USNO.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date in YYYY-MM-DD format (e.g. 2026-04-07)"
          },
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees (e.g. 40.7128 for New York)",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees (e.g. -74.0060 for New York)",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "date",
          "latitude",
          "longitude"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "wger.fitness.exercise_details",
      "title": "Exercise Details",
      "description": "Get full exercise details by ID \u2014 description, primary and secondary muscles worked, required equipment (barbell/dumbbell/bodyweight/machine), and category. Use with exercise_search to build workout plans.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Exercise base ID from search results (e.g. 615 for Squats)"
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "wger.fitness.exercise_search",
      "title": "Exercise Search",
      "description": "Search 896 exercises by name \u2014 bench press, squat, deadlift, curl, etc. Returns exercise name, category (Chest/Back/Legs/Arms/Abs/Shoulders/Cardio), and ID for details lookup. Open-source fitness database (Wger, CC-BY-SA).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "term": {
            "type": "string",
            "description": "Exercise name to search (e.g. \"bench press\", \"squat\", \"deadlift\", \"bicep curl\")",
            "minLength": 1
          }
        },
        "required": [
          "term"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "wger.fitness.ingredients",
      "title": "Food Ingredient Nutrition",
      "description": "Search 1.28M food ingredients by name \u2014 chicken breast, rice, banana, oats. Returns calories (kcal), protein, carbs, fat, fiber, sugar, sodium per 100g. Complements USDA FDC with broader international coverage.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Food ingredient name (e.g. \"chicken breast\", \"rice\", \"banana\", \"oats\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (1-20, default 10)"
          }
        },
        "required": [
          "name"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "email.verification.check",
      "title": "Verify Email Address",
      "description": "Verify an email address \u2014 SMTP deliverability check, DNS/MX validation, disposable email detection, catch-all server detection, free provider flag, role account flag (info@, admin@). Returns comprehensive verification result. Powered by WhoisXML API.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to verify (e.g. user@example.com, test@gmail.com)",
            "minLength": 3
          }
        },
        "required": [
          "email"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "solar.system.bodies",
      "title": "Solar System Bodies",
      "description": "List solar system bodies \u2014 planets, moons, asteroids, comets, dwarf planets. Returns name, body type, gravity, radius, and moon count. 1,400+ bodies. Filter by type. Source: Solar System OpenData (MIT license).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "body_type": {
            "type": "string",
            "enum": [
              "planet",
              "moon",
              "asteroid",
              "comet",
              "dwarf_planet",
              "all"
            ],
            "description": "Filter by body type: planet, moon, asteroid, comet, dwarf_planet, or all (default: all)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "solar.system.body_details",
      "title": "Solar System Body Details",
      "description": "Get comprehensive data for a solar system body \u2014 mass, radius, density, gravity, escape velocity, temperature, axial tilt, orbital period, semi-major axis, eccentricity, inclination, discoverer, and list of moons. Source: Solar System OpenData.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Body ID from search results (e.g. \"mars\", \"jupiter\", \"moon\", \"europa\", \"ceres\")",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "iss.space.position",
      "title": "ISS Current Position",
      "description": "Get the real-time position of the International Space Station \u2014 latitude, longitude, altitude (km), velocity (km/h), and daylight/eclipse visibility. ISS orbits at 28,000 km/h, completes one orbit every 90 minutes. Updates every ~60 seconds.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "units": {
            "type": "string",
            "enum": [
              "kilometers",
              "miles"
            ],
            "description": "Distance units: kilometers (default) or miles"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "iss.space.tle",
      "title": "ISS Orbital Elements (TLE)",
      "description": "Get the Two-Line Element set (TLE) for the International Space Station \u2014 NORAD catalog #25544. Contains orbital parameters for trajectory prediction and satellite tracking calculations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "json",
              "text"
            ],
            "description": "Response format: json (default) or text (raw TLE two-line element)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hf.hub.datasets",
      "title": "Search ML Datasets",
      "description": "Search 200K+ datasets on HuggingFace Hub by name or keyword. Returns dataset ID, downloads, likes, tags. Covers NLP, vision, audio, tabular datasets. Sorted by downloads.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Search query \u2014 dataset name or keyword (e.g. \"wikipedia\", \"imagenet\", \"squad\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (1-20, default 10)"
          }
        },
        "required": [
          "search"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hf.hub.model_details",
      "title": "ML Model Details",
      "description": "Get full metadata for a HuggingFace model \u2014 downloads, likes, tags, library, author, pipeline task, model card data. Use model_id from hf.models search (e.g. \"meta-llama/Llama-3.3-70B-Instruct\").",
      "inputSchema": {
        "type": "object",
        "properties": {
          "model_id": {
            "type": "string",
            "description": "Full model ID (e.g. \"meta-llama/Llama-3.3-70B-Instruct\", \"stabilityai/stable-diffusion-xl-base-1.0\")",
            "minLength": 1
          }
        },
        "required": [
          "model_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "hf.hub.models",
      "title": "Search ML Models",
      "description": "Search 1M+ ML models on HuggingFace Hub by name, task (text-generation, image-classification, translation), or library (transformers, diffusers). Returns model ID, downloads, likes, pipeline tag. Sorted by downloads.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Search query \u2014 model name or keyword (e.g. \"llama\", \"stable-diffusion\", \"whisper\")",
            "minLength": 1
          },
          "task": {
            "type": "string",
            "description": "Filter by ML task: text-generation, image-classification, translation, text-to-image, automatic-speech-recognition, etc."
          },
          "library": {
            "type": "string",
            "description": "Filter by framework: transformers, diffusers, sentence-transformers, gguf, etc."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Number of results (1-20, default 10)"
          }
        },
        "required": [
          "search"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "crypto.global.stats",
      "title": "Crypto Global Stats",
      "description": "Get global cryptocurrency market statistics",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_defi": {
            "type": "boolean",
            "description": "Include DeFi-specific global stats"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "stocks.company.profile",
      "title": "Company Profile",
      "description": "Company profile by ticker \u2014 name, exchange, industry, country, market cap, shares outstanding, IPO date, logo, website (Finnhub)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Stock ticker symbol (e.g. \"AAPL\")",
            "minLength": 1,
            "maxLength": 10
          }
        },
        "required": [
          "symbol"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "geo.address.reverse",
      "title": "Reverse Geocode (Geoapify)",
      "description": "Convert geographic coordinates (lat/lon) to a structured address \u2014 street, city, country, postal code (Geoapify/OSM)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude of the point to reverse geocode.",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "description": "Longitude of the point to reverse geocode.",
            "minimum": -180,
            "maximum": 180
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Result language code (e.g. \"en\", \"de\", \"ru\"). Default: English."
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "developer.github.user",
      "title": "GitHub User Profile",
      "description": "Get a GitHub user profile \u2014 name, bio, public repos count, followers, company, location, join date. Works for users and organizations (GitHub API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "GitHub username (e.g. \"torvalds\", \"whiteknightonhorse\")"
          }
        },
        "required": [
          "username"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "realestate.property.details",
      "title": "US Property Details",
      "description": "Detailed property information by property ID \u2014 beds, baths, sqft, year built, lot size, tax assessment, HOA, days on market, photos, last sale price/date. Use for_sale search first to get property_id (RapidAPI / Realtor.com data)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "description": "Property ID from a for_sale search result (e.g. \"2734304997\")"
          }
        },
        "required": [
          "property_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "water.usgs.realtime",
      "title": "Real-Time Water Data",
      "description": "Get real-time streamflow (ft^3/s), gage height (ft), water temperature, and conductance for a USGS monitoring site. Updated every 15 minutes. Covers rivers, streams, lakes, reservoirs across the US. Use water.sites to find site numbers (USGS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "site_no": {
            "type": "string",
            "description": "USGS site number (e.g. \"09380000\"). Use water.sites to find site numbers first.",
            "minLength": 1
          },
          "parameter_cd": {
            "type": "string",
            "description": "Parameter code(s), comma-separated. Common: 00060=streamflow, 00065=gage height, 00010=temperature. Default: all available."
          },
          "period": {
            "type": "string",
            "description": "ISO 8601 duration for data window (e.g. \"PT2H\" for 2 hours, \"P7D\" for 7 days). Default: PT2H."
          }
        },
        "required": [
          "site_no"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "water.usgs.sites",
      "title": "Search Water Monitoring Sites",
      "description": "Search 1.5M+ USGS water monitoring sites by US state, county FIPS, bounding box, or site number. Returns site ID, station name, coordinates, altitude, HUC watershed code. Use site numbers with water.realtime for live data (USGS)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "US state FIPS code, 2 chars (e.g. \"CA\", \"NY\", \"CO\")"
          },
          "county": {
            "type": "string",
            "description": "County FIPS code, 5 digits (e.g. \"06037\" for Los Angeles County)"
          },
          "bbox": {
            "type": "string",
            "description": "Bounding box: west,south,east,north in decimal degrees (e.g. \"-105.5,39.5,-104.5,40.5\")"
          },
          "site_no": {
            "type": "string",
            "description": "USGS site number (e.g. \"09380000\" for Colorado River at Lees Ferry)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "worldbank.dev.indicators",
      "title": "Search Development Indicators",
      "description": "Search 16,000+ World Bank development indicators by keyword or topic \u2014 GDP, population, poverty, education, health, environment, trade. Returns indicator ID, name, source, description, topics. Use indicator IDs with finance.country_data for time-series data (World Bank, CC BY 4.0)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "Search keyword for indicators (e.g. \"gdp\", \"population\", \"poverty\", \"education\", \"co2 emissions\")"
          },
          "topic": {
            "type": "string",
            "description": "Topic ID filter (1=Agriculture, 3=Economy, 4=Education, 6=Environment, 8=Health, 11=Poverty, 14=Science, 19=Climate Change)"
          },
          "source": {
            "type": "string",
            "description": "Source ID filter (2=World Development Indicators, 11=Africa, 57=Gender)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Results per page (1-50, default 20)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "cdc.health.datasets",
      "title": "Search CDC Health Datasets",
      "description": "Search 1,400+ CDC public health datasets \u2014 COVID-19, chronic disease, vaccination, mortality, birth/death statistics, environmental health. Returns dataset ID, name, description, category. Use dataset IDs with cdc.query to fetch data (US Gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search keyword (e.g. \"covid deaths\", \"vaccination rates\", \"chronic disease\", \"mortality\")"
          },
          "category": {
            "type": "string",
            "description": "Dataset category filter (e.g. \"NCHS\", \"COVID-19\", \"Chronic Disease Indicators\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 20)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "cdc.health.query",
      "title": "Query CDC Dataset",
      "description": "Query a specific CDC dataset using SoQL filters \u2014 filter by state, year, age group, condition. Returns structured rows with column names. Supports WHERE, SELECT, ORDER, GROUP BY. Use cdc.datasets to find dataset IDs first (US Gov, Socrata SODA API)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataset_id": {
            "type": "string",
            "description": "CDC dataset ID in xxxx-xxxx format (e.g. \"9bhg-hcku\" for COVID deaths). Use cdc.datasets to find IDs."
          },
          "where": {
            "type": "string",
            "description": "SoQL WHERE clause filter (e.g. \"state='CA'\", \"year > 2020\", \"age_group='65+'\")"
          },
          "select": {
            "type": "string",
            "description": "Columns to return, comma-separated (e.g. \"state, year, deaths\"). Default: all columns."
          },
          "order": {
            "type": "string",
            "description": "Sort order (e.g. \"year DESC\", \"deaths DESC\"). Default: dataset default order."
          },
          "group": {
            "type": "string",
            "description": "Group by columns for aggregation (e.g. \"state\" with select \"state, SUM(deaths)\")"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "Max rows to return (1-1000, default 100)"
          }
        },
        "required": [
          "dataset_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "dblp.cs.author",
      "title": "Search CS Authors",
      "description": "Search 3M+ computer science authors on DBLP. Returns author name, DBLP PID, profile URL, aliases, affiliations. Use for finding researchers, checking publication records, or discovering collaborators (DBLP, CC0)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Author name to search (e.g. \"Geoffrey Hinton\", \"Yann LeCun\", \"Ilya Sutskever\")",
            "minLength": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Number of results (1-30, default 10)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "dblp.cs.search",
      "title": "Search CS Papers",
      "description": "Search 7M+ computer science publications on DBLP by title, keyword, or topic. Returns title, authors, venue (NeurIPS, ICML, CVPR, ACL, etc.), year, DOI. The largest CS-specific bibliography \u2014 covers journals, conferences, and workshops (DBLP, CC0)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query \u2014 paper title, keyword, or topic (e.g. \"transformer attention\", \"graph neural network\", \"LLM reasoning\")",
            "minLength": 1
          },
          "year": {
            "type": "integer",
            "description": "Filter by publication year (e.g. 2024)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 20)"
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tides.noaa.predictions",
      "title": "Tide Predictions",
      "description": "Get tide predictions for a NOAA station \u2014 high/low tides, hourly, or 6-minute intervals. Returns predicted water level in feet or meters. Covers US coastlines, rivers, Great Lakes. Station IDs: 8518750 (NYC), 9414290 (SF), 8443970 (Boston) (NOAA, US Gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station": {
            "type": "string",
            "description": "NOAA station ID (e.g. \"8518750\" for The Battery NYC, \"9414290\" for San Francisco, \"8443970\" for Boston)",
            "minLength": 1
          },
          "begin_date": {
            "type": "string",
            "description": "Start date in YYYYMMDD format (e.g. \"20260409\")"
          },
          "end_date": {
            "type": "string",
            "description": "End date in YYYYMMDD format (e.g. \"20260410\"). Max range: 31 days."
          },
          "interval": {
            "type": "string",
            "enum": [
              "hilo",
              "h",
              "6"
            ],
            "description": "Prediction interval: \"hilo\" = high/low tides only (default), \"h\" = hourly, \"6\" = every 6 minutes"
          },
          "datum": {
            "type": "string",
            "description": "Vertical datum: MLLW (default), MSL, NAVD, MHHW, MHW, MLW, etc."
          },
          "units": {
            "type": "string",
            "enum": [
              "english",
              "metric"
            ],
            "description": "Units: \"english\" = feet (default), \"metric\" = meters"
          }
        },
        "required": [
          "station",
          "begin_date",
          "end_date"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "tides.noaa.water_levels",
      "title": "Real-Time Water Levels",
      "description": "Get real-time observed water levels from a NOAA station \u2014 latest reading or recent history. Returns water level in feet or meters with quality flags. Updated every 6 minutes. Covers US coastlines, rivers, Great Lakes (NOAA, US Gov)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station": {
            "type": "string",
            "description": "NOAA station ID (e.g. \"8518750\" for The Battery NYC, \"9414290\" for San Francisco)",
            "minLength": 1
          },
          "date": {
            "type": "string",
            "description": "Date filter: \"latest\" (default, most recent reading), \"today\", \"recent\" (last 72 hours), or YYYYMMDD for specific date"
          },
          "datum": {
            "type": "string",
            "description": "Vertical datum: MLLW (default), MSL, NAVD, MHHW, MHW, MLW, etc."
          },
          "units": {
            "type": "string",
            "enum": [
              "english",
              "metric"
            ],
            "description": "Units: \"english\" = feet (default), \"metric\" = meters"
          }
        },
        "required": [
          "station"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "met.art.details",
      "title": "Artwork Details",
      "description": "Get full details for a Met Museum artwork by object ID \u2014 title, artist, date, medium, dimensions, department, culture, provenance, high-res image URLs, public domain status. Use met.search to find object IDs first (Met Museum, CC0)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "object_id": {
            "type": "integer",
            "description": "Met Museum object ID (e.g. 436524 for Van Gogh Sunflowers, 45734 for Washington Crossing the Delaware). Use met.search to find IDs.",
            "minimum": 1
          }
        },
        "required": [
          "object_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "met.art.search",
      "title": "Search Met Museum Artworks",
      "description": "Search 470,000+ artworks at The Metropolitan Museum of Art by keyword, artist, medium, department, date range, or geography. Returns object IDs \u2014 use met.details for full metadata and images. CC0 public domain (Met Museum)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search keyword \u2014 artist, title, medium, or subject (e.g. \"monet\", \"sunflowers\", \"greek vase\", \"armor\")",
            "minLength": 1
          },
          "department_id": {
            "type": "integer",
            "description": "Department filter: 1=American Decorative Arts, 3=Ancient Near Eastern Art, 6=Asian Art, 9=Drawings and Prints, 11=European Paintings, 13=Greek and Roman Art, 17=Medieval Art, 21=Modern Art"
          },
          "medium": {
            "type": "string",
            "description": "Medium filter (e.g. \"Paintings\", \"Sculpture\", \"Photographs\", \"Ceramics\")"
          },
          "has_images": {
            "type": "boolean",
            "description": "Only return artworks with images (default: true)"
          },
          "geo_location": {
            "type": "string",
            "description": "Geographic location filter (e.g. \"France\", \"Japan\", \"Egypt\")"
          },
          "date_begin": {
            "type": "integer",
            "description": "Start year for date range filter (e.g. 1800). Use with date_end."
          },
          "date_end": {
            "type": "integer",
            "description": "End year for date range filter (e.g. 1900). Use with date_begin."
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rijks.art.details",
      "title": "Rijksmuseum Artwork Details",
      "description": "Get full details for a Rijksmuseum artwork by object ID \u2014 title (multiple languages), object number, creation date, production location, materials, dimensions, current gallery location. Linked Art JSON-LD format (CIDOC CRM). Use rijks.search to find object IDs first (Rijksmuseum, CC-BY)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "object_id": {
            "type": "string",
            "description": "Rijksmuseum numeric ID (e.g. \"200107928\" for The Night Watch). Use rijks.search to find IDs.",
            "minLength": 1
          }
        },
        "required": [
          "object_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "rijks.art.search",
      "title": "Search Rijksmuseum Collection",
      "description": "Search 800,000+ artworks at the Rijksmuseum (Dutch national museum) by title, description, creation date, or object number. Returns Linked Open Data object IDs \u2014 use rijks.details for full metadata. Covers Rembrandt, Vermeer, Van Gogh, and centuries of Dutch art. CC-BY license (Rijksmuseum)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Artwork title search (e.g. \"Night Watch\", \"Self-portrait\", \"Milkmaid\")"
          },
          "description": {
            "type": "string",
            "description": "Search within artwork descriptions (e.g. \"portrait\", \"landscape\")"
          },
          "creation_date": {
            "type": "string",
            "description": "Filter by creation year or date (e.g. \"1642\", \"1665\")"
          },
          "object_number": {
            "type": "string",
            "description": "Rijksmuseum object number (e.g. \"SK-C-5\" for Night Watch)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "cma.art.details",
      "title": "CMA Artwork Details",
      "description": "Get full details for a Cleveland Museum artwork by ID \u2014 title, artist, nationality, date, medium, dimensions, culture, provenance, license status (CC0/restricted), image URLs (web + full resolution). Use cma.search to find artwork IDs first (CMA, CC0)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "artwork_id": {
            "type": "integer",
            "description": "Cleveland Museum artwork ID (e.g. 135382 for Monet \"The Red Kerchief\"). Use cma.search to find IDs.",
            "minimum": 1
          }
        },
        "required": [
          "artwork_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "cma.art.search",
      "title": "Search Cleveland Museum Collection",
      "description": "Search 64,000+ artworks at the Cleveland Museum of Art by keyword, artist, type, or department. Filter for CC0-only (commercial-free) images. Returns artwork IDs, title, artist, date, license status, image URLs. Use cma.artwork for full details (CMA, CC0)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search keyword \u2014 artist, title, subject (e.g. \"monet\", \"armor\", \"japanese\")"
          },
          "type": {
            "type": "string",
            "description": "Artwork type filter (e.g. \"Painting\", \"Sculpture\", \"Print\", \"Photograph\")"
          },
          "department": {
            "type": "string",
            "description": "Department filter (e.g. \"European Painting and Sculpture\", \"Asian Art\", \"Prints\")"
          },
          "artist": {
            "type": "string",
            "description": "Artist name filter (e.g. \"Claude Monet\", \"Pablo Picasso\")"
          },
          "cc0_only": {
            "type": "boolean",
            "description": "Only return CC0-licensed artworks (free for commercial use). Default: false."
          },
          "has_image": {
            "type": "boolean",
            "description": "Only return artworks with images (default: true)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Number of results (1-50, default 20)"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "smithsonian.collection.record",
      "title": "Smithsonian Record Details",
      "description": "Get full record for a Smithsonian Open Access item by ID \u2014 title, unit code (which of 19 museums), license (CC0 flag), record_link (canonical URL), data_source, online media (images/audio/video), freetext metadata, indexed structured fields. Use smithsonian.search to find IDs first (Smithsonian, CC0 subset)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Smithsonian record ID from a previous search result (e.g. \"edanmdm-nmnhvz_5068559\" or \"ld1-*\"). Use smithsonian.search first to find IDs.",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "smithsonian.collection.search",
      "title": "Search Smithsonian Collections",
      "description": "Full-text search across 11M+ records from 19 Smithsonian museums \u2014 art, artifacts, scientific specimens, archives. Filter by type (objects/species/archives/books/online_media/events/places), sort by relevancy/newest/updated/random, and CC0-only by default. Covers National Museum of Natural History, Air and Space, American Art, Portrait Gallery, Freer|Sackler, and more (Smithsonian Open Access, CC0 subset)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Full-text search query. Example: \"dinosaur\", \"picasso\", \"apollo 11\". Supports EDAN query syntax (field:value, AND/OR).",
            "minLength": 1
          },
          "rows": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of results to return (1-100, default 10)."
          },
          "start": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset for pagination (default 0). Useful with rowCount from previous call."
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevancy",
              "newest",
              "updated",
              "random"
            ],
            "description": "Sort order for results. Default: relevancy."
          },
          "type": {
            "type": "string",
            "enum": [
              "archives",
              "books",
              "online_media",
              "objects",
              "events",
              "places",
              "species"
            ],
            "description": "Filter by record type. E.g. \"objects\" for 3D objects, \"species\" for scientific specimens."
          },
          "online_media_type": {
            "type": "string",
            "enum": [
              "Images",
              "Sound recordings",
              "Videos"
            ],
            "description": "Filter to items that have media of a specific type."
          },
          "cc0_only": {
            "type": "boolean",
            "description": "Filter results to CC0-licensed records only (default true). Set false to include all records with their license field."
          }
        },
        "required": [
          "q"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    }
  ],
  "prompts": [
    {
      "name": "discover-tools",
      "description": "Find the right APIbase tools for a task. Describes available categories, search strategies, and tool selection criteria.",
      "arguments": [
        {
          "name": "task",
          "description": "What you want to accomplish (e.g. \"find flights from NYC to London\")",
          "required": true
        }
      ]
    },
    {
      "name": "api-workflow",
      "description": "Design a multi-step API workflow combining multiple APIbase tools. Returns execution plan with tool sequence, data flow, and error handling.",
      "arguments": [
        {
          "name": "goal",
          "description": "End-to-end goal (e.g. \"plan a trip to Tokyo with flights, weather, and local events\")",
          "required": true
        },
        {
          "name": "budget",
          "description": "Optional USDC budget constraint for the workflow",
          "required": false
        }
      ]
    },
    {
      "name": "x402-payment-guide",
      "description": "Explains x402 USDC micropayment flow for APIbase. Covers wallet setup on Base, payment headers, escrow mechanics, and refund policy.",
      "arguments": [
        {
          "name": "topic",
          "description": "Specific payment topic (e.g. \"setup\", \"escrow\", \"refunds\", \"pricing\")",
          "required": false
        }
      ]
    }
  ],
  "resources": [
    {
      "name": "tool-catalog",
      "description": "Full tool catalog with schemas, pricing, and provider info",
      "uri": "https://apibase.pro/api/v1/tools"
    },
    {
      "name": "health-status",
      "description": "System health check",
      "uri": "https://apibase.pro/health/ready"
    }
  ]
}