{
 "openapi": "3.1.0",
 "info": {
  "title": "A.U.G.U.R Synapse — agent tool exchange",
  "version": "2.2.1",
  "x-guidance": "Call any tool with POST https://augur-trade.com/hub/api/v1/tools/{id} and a JSON body matching its schema. Paid tools answer HTTP 402 with x402 payment requirements (Solana: USDC TransferChecked or native SOL to the payTo address; the exchange is its own facilitator and pays the network fee). Sign the transfer, retry with X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) and you get the result plus a settlement receipt; you are only charged if the tool answered. Alternatives: a prepaid credit key (Authorization: Bearer hk_…) or X-PAYMENT-TX with a signature you already sent. Free tools need no payment; 10 free paid calls/day with header X-Synapse-Free: 1. Everything is read-only; pump.fun data is our own recording of every curve trade since 2026-09-11, other data comes from the providers listed in llms.txt, cached and paced so callers never see their rate limits.",
  "description": "A tool exchange for AI agents, run by an AI (A.L.F). 79 read-only tools: crypto markets and DeFi on every chain (prices, TVL, yields, stablecoins, perps funding, order books, gas, EVM contracts and token security), Solana and pump.fun intelligence from our own live recording of every bonding-curve trade, launch bundle forensics on Solana and 18 EVM chains (who bundled it, insiders, airdrops, serial devs), Meteora DLMM liquidity, reading and inspecting the web (clean page text, PDFs, DNS, WHOIS, TLS, robots), research (Wikipedia, arXiv, packages and CVEs, GitHub, Hacker News, DOIs, books), the physical world (weather, geocoding, FX, holidays, time zones, countries, earthquakes, sun/moon) and exact local utilities (QR, hashing, JSON Schema, cron, diff, units, JWT). MCP + HTTP. Pay per call via x402 in USDC or SOL on Solana or USDC on Base, or with prepaid credits. 10 free paid-tool calls per day; free tools are always free.",
  "contact": {
   "url": "https://augur-trade.com/hub",
   "email": "agent@augur-trade.com"
  }
 },
 "servers": [
  {
   "url": "https://augur-trade.com"
  }
 ],
 "paths": {
  "/hub/api/v1/tools/pump_pulse": {
   "post": {
    "operationId": "pump_pulse",
    "summary": "pump.fun market pulse",
    "description": "Live pump.fun heartbeat: trades/min, launches, graduations, graduation rate, hottest tokens in the last 15 min. Computed from our own live recording of every pump.fun bonding-curve trade. Use it to decide whether the launch market is hot or dead before scanning individual tokens.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
       },
       "example": {}
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/pump_history": {
   "post": {
    "operationId": "pump_history",
    "summary": "pump.fun history",
    "description": "pump.fun over time: launches, graduations, graduation rate, trades, SOL volume and unique wallets per day or hour since 2026-09-11 — with a compare window. The same tape as pump_pulse, sliced into UTC days or hours so an agent can compare the market over time instead of reading one snapshot. Pass compare_from/compare_to to get a second window and the per-period change (e.g. this week vs last week). Closed periods are precomputed from our own live recording of every bonding-curve trade; the open period is marked partial. Also reports the share of trades made by pump.fun's own mayhem agent, so it can be separated from real demand.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "granularity": {
          "type": "string",
          "pattern": "^(day|hour)$",
          "default": "day",
          "description": "Bucket size: \"day\" or \"hour\". Default \"day\"."
         },
         "from": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}(:\\d{2}){0,2}Z?)?$",
          "description": "UTC start, e.g. 2026-09-18 or 2026-09-18T06 (default: 14 days / 48 hours back)"
         },
         "to": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}(:\\d{2}){0,2}Z?)?$",
          "description": "UTC end, inclusive (default: now)"
         },
         "compare_from": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}(:\\d{2}){0,2}Z?)?$",
          "description": "start of a second window to compare against"
         },
         "compare_to": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}(:\\d{2}){0,2}Z?)?$",
          "description": "end of the comparison window, inclusive"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "granularity": "day",
        "from": "2026-09-19",
        "to": "2026-09-25",
        "compare_from": "2026-09-12",
        "compare_to": "2026-09-18"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/pump_launches": {
   "post": {
    "operationId": "pump_launches",
    "summary": "Newest pump.fun launches",
    "description": "The newest pump.fun tokens with dev buy, early buyers/volume, curve progress, market cap and creator launch count. Returns up to 50 of the most recent launches (seconds old) with the first-N-seconds flow already aggregated, so an agent can shortlist without replaying the chain.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 20,
          "description": "How many of the newest launches to return. Range 1-50. Default 20."
         },
         "window_s": {
          "type": "integer",
          "minimum": 30,
          "maximum": 3600,
          "default": 300,
          "description": "early-flow window after creation. Range 30-3600. Default 300."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "limit": 10,
        "window_s": 120
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/pump_token": {
   "post": {
    "operationId": "pump_token",
    "summary": "pump.fun token forensics",
    "description": "Full bonding-curve forensics for one pump.fun mint: flow, dev buys/sells, launch snipers, top curve holders, peak, graduation, red flags. Aggregates every recorded curve trade of the token: unique wallets, buy/sell SOL, first-60-second flow, whether the dev sold out, non-dev wallets that bought in the launch slots (bundles), top net holders on the curve, peak market cap and post-graduation liquidity.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0.01,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.01"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "mint"
        ],
        "properties": {
         "mint": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "pump.fun token mint. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "mint": "2L2eDWq1G6YhREhEdnsGLxMLoWKH2AjgwmL3og42pump"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/pump_wallet": {
   "post": {
    "operationId": "pump_wallet",
    "summary": "pump.fun wallet profile",
    "description": "Any wallet's pump.fun trading record: realized PnL, win rate, hold time, frequency (bot or human), tokens it launched. Analyses up to the last 20,000 curve trades of the wallet. Use it to judge whether a wallet is smart money, a sniper bot, a serial dumper or a dev.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0.01,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.01"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "wallet"
        ],
        "properties": {
         "wallet": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "wallet address. Base58 Solana address, 32-44 chars."
         },
         "limit": {
          "type": "integer",
          "minimum": 100,
          "maximum": 20000,
          "default": 20000,
          "description": "How many of the wallet's most recent recorded trades to analyse. Range 100-20000. Default 20000."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "wallet": "BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/pump_dev": {
   "post": {
    "operationId": "pump_dev",
    "summary": "pump.fun dev track record",
    "description": "A creator wallet's launch history: launches, graduation rate, launch cadence, how fast the dev sells, verdict. Looks up every token the wallet created since recording began and replays the dev's own trades on its 15 most recent launches.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0.01,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.01"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "creator"
        ],
        "properties": {
         "creator": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "creator (dev) wallet. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "creator": "AbsisGdsxyHA7MueN1kZCTpBcGzMVw1F5qQZgnBWFERo"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/pump_odds": {
   "post": {
    "operationId": "pump_odds",
    "summary": "Graduation odds",
    "description": "Probability a pump.fun launch graduates, from how comparable launches in our tape actually ended — with the lift over the ~3% base rate. Buckets the launch's first 60 seconds (unique buyers, buy SOL, dev buy) and returns the empirical graduation rate of thousands of comparable recent launches whose outcome is known, shrunk toward coarser buckets when samples are thin. Rebuilt every 6 hours.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0.01,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.01"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "mint"
        ],
        "properties": {
         "mint": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "pump.fun token mint. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "mint": "2L2eDWq1G6YhREhEdnsGLxMLoWKH2AjgwmL3og42pump"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/smart_money": {
   "post": {
    "operationId": "smart_money",
    "summary": "Smart money on pump.fun",
    "description": "The pump.fun wallets with the best realized PnL in the last 24 h — and the tokens those wallets are buying right now. Leaderboard of wallets by realized profit on fully-closed curve positions (min 8 closed, rebuilt every 30 min), sortable by PnL, win rate or ROI, plus a live feed of what the top 50 bought in the last N minutes, ranked by how many of them piled in.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0.02,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.02"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 20,
          "description": "How many top wallets to return. Range 1-50. Default 20."
         },
         "window_min": {
          "type": "integer",
          "minimum": 1,
          "maximum": 120,
          "default": 15,
          "description": "look-back for buying_now. Range 1-120. Default 15."
         },
         "sort": {
          "type": "string",
          "pattern": "^(pnl|win_rate|roi)$",
          "default": "pnl",
          "description": "Rank by realized PnL in SOL (\"pnl\"), win rate (\"win_rate\") or return on SOL spent (\"roi\"). Default \"pnl\"."
         },
         "exclude_bots": {
          "type": "boolean",
          "default": false,
          "description": "drop sub-20-second and high-frequency wallets. Default false."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "limit": 10,
        "window_min": 15,
        "sort": "pnl",
        "exclude_bots": true
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/copy_backtest": {
   "post": {
    "operationId": "copy_backtest",
    "summary": "Copy-trade backtest",
    "description": "Would copying this wallet have made money? Replays its pump.fun entries and exits 0–25 slots late on the recorded curve and shows where the edge dies. Takes the wallet's pump.fun positions over the last 1–14 days and simulates a copier that buys the same token and sells when the leader sells, arriving 0, 1, 2, 5, 10 or 25 slots (0–10 s) late. Fills use the bonding-curve reserves our tape recorded at that moment, including curve fees and the copy's own price impact. Returns PnL, win rate and ROI per latency, the leader's own median ROI for contrast, and a verdict: copyable, latency-sensitive (edge gone by N slots), or not copyable. A wallet that looks great on its own PnL often loses money for anyone who follows it.",
    "tags": [
     "Pump Cortex"
    ],
    "x-price-usd": 0.03,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.03"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "wallet"
        ],
        "properties": {
         "wallet": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "leader wallet to copy. Base58 Solana address, 32-44 chars."
         },
         "days": {
          "type": "integer",
          "minimum": 1,
          "maximum": 14,
          "default": 3,
          "description": "How many days of the wallet's history to replay. Range 1-14. Default 3."
         },
         "size_sol": {
          "type": "number",
          "minimum": 0.01,
          "maximum": 10,
          "default": 0.1,
          "description": "SOL per copied entry. Range 0.01-10. Default 0.1."
         },
         "exit": {
          "type": "string",
          "pattern": "^(first_sell|full_exit)$",
          "default": "first_sell",
          "description": "sell on the leader's first sell, or once it has sold 90%. Default \"first_sell\"."
         },
         "max_positions": {
          "type": "integer",
          "minimum": 10,
          "maximum": 300,
          "default": 150,
          "description": "most recent positions to replay. Range 10-300. Default 150."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "wallet": "HNhuE4Y3RNCx5tPBkNsCTWKT14542NxnGi9aXEyN1x8E",
        "days": 3,
        "size_sol": 0.1
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/token_risk": {
   "post": {
    "operationId": "token_risk",
    "summary": "Token risk score",
    "description": "0-100 rug-risk score for any Solana token: mint/freeze authority, Token-2022 traps, holder concentration, liquidity depth — plus pump.fun curve flags. Contract state is read live from Solana (authorities, Token-2022 extensions such as transfer fees, hooks, permanent delegate, pausable), holders from the largest accounts, market from DexScreener; for tokens still on any launchpad bonding curve (pump.fun, Meteora DBC, letsbonk…) liquidity is the SOL/USDC in the curve, read from chain (field `curve`). For pump.fun mints the curve forensics flags are merged in.",
    "tags": [
     "Risk Amygdala"
    ],
    "x-price-usd": 0.005,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "mint"
        ],
        "properties": {
         "mint": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "token mint. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/launch_scan": {
   "post": {
    "operationId": "launch_scan",
    "summary": "Launch scan (bundle)",
    "description": "One call, one verdict on a pump.fun launch: 0-100 score with positives and risks, graduation odds, dev record, snipers, holders, flow. Runs pump_token + pump_dev + pump_odds together (cheaper than calling them separately) and folds them into a single score and verdict an agent can act on: strong / neutral / weak / avoid.",
    "tags": [
     "Risk Amygdala"
    ],
    "x-price-usd": 0.025,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.025"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "mint"
        ],
        "properties": {
         "mint": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "pump.fun token mint. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "mint": "2L2eDWq1G6YhREhEdnsGLxMLoWKH2AjgwmL3og42pump"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/counterparty_check": {
   "post": {
    "operationId": "counterparty_check",
    "summary": "Counterparty check",
    "description": "One-call verdict on a Solana wallet before you deal with it: serial token launcher, fast dumper, trading bot, or clean. Combines the wallet's pump.fun launch history (graduation rate, how fast it sells its own launches) with its trading profile into a risk level and reasons.",
    "tags": [
     "Risk Amygdala"
    ],
    "x-price-usd": 0.005,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "wallet"
        ],
        "properties": {
         "wallet": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "wallet address. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "wallet": "AbsisGdsxyHA7MueN1kZCTpBcGzMVw1F5qQZgnBWFERo"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/price": {
   "post": {
    "operationId": "price",
    "summary": "Token prices",
    "description": "USD price, 24h change and liquidity for up to 100 Solana mints; flags illiquid (dead) tokens. Jupiter price data with a liquidity floor: anything under $1,000 of liquidity is flagged dead, because round-trip quotes on dead curves look fine and are not.",
    "tags": [
     "Market Stem"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "mints"
        ],
        "properties": {
         "mints": {
          "type": "array",
          "items": {
           "type": "string",
           "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
           "description": "mint"
          },
          "minItems": 1,
          "maxItems": 100,
          "description": "Solana token mint addresses (base58) to price. 1-100 items."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "mints": [
         "So11111111111111111111111111111111111111112",
         "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/wallet_holdings": {
   "post": {
    "operationId": "wallet_holdings",
    "summary": "Wallet holdings",
    "description": "Everything a Solana wallet holds — SOL, SPL and Token-2022 tokens — valued in USD and sorted by value. Reads token accounts from both token programs and prices them in one pass. Empty accounts are counted as reclaimable rent.",
    "tags": [
     "Market Stem"
    ],
    "x-price-usd": 0.003,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "wallet"
        ],
        "properties": {
         "wallet": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "wallet address. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "wallet": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/tx_explain": {
   "post": {
    "operationId": "tx_explain",
    "summary": "Explain a transaction",
    "description": "Turns any Solana transaction signature into plain facts: status, fee, programs by name, SOL and token balance changes per owner, a one-line summary. Works for swaps, pump.fun trades, LP moves, transfers and failures (includes the error log lines).",
    "tags": [
     "Market Stem"
    ],
    "x-price-usd": 0.003,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "signature"
        ],
        "properties": {
         "signature": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{64,90}$",
          "description": "Solana transaction signature (base58, 64-90 chars)."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "signature": "4e1vcgjBw2yfNTzGSneQdmY87G1ubgTQNvzsbyN9oPMdFmFKvaAx9UnXM1VaKnY7MFRfV5Mx2xtcNaEkrifmA5u8"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/dlmm_pool": {
   "post": {
    "operationId": "dlmm_pool",
    "summary": "Meteora DLMM pool",
    "description": "State of a Meteora DLMM pool: price, bin step, fees, TVL, volume and fees by window (30 m–24 h), 24 h fee yield and its annualized APR/APY. For LP agents choosing where to provide liquidity.",
    "tags": [
     "Liquidity Lobe"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "pool"
        ],
        "properties": {
         "pool": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "DLMM pool (pair) address. Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "pool": "HTvjzsfX3yU6BUodCjZ5vZkUrAxMDTrBs3CJaq43ashR"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/dlmm_positions": {
   "post": {
    "operationId": "dlmm_positions",
    "summary": "Wallet DLMM positions",
    "description": "Open Meteora DLMM positions of any wallet: value, unclaimed fees, PnL, in/out of range — or its closed-position history. Set history=true for closed positions with deposits, withdrawals, fees and PnL per pool.",
    "tags": [
     "Liquidity Lobe"
    ],
    "x-price-usd": 0.005,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "wallet"
        ],
        "properties": {
         "wallet": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "wallet address. Base58 Solana address, 32-44 chars."
         },
         "history": {
          "type": "boolean",
          "default": false,
          "description": "true = closed-position history instead of open positions. Default false."
         },
         "page": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 1,
          "description": "Page of closed-position history (only with history=true). Range 1-50. Default 1."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "wallet": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/dlmm_whales": {
   "post": {
    "operationId": "dlmm_whales",
    "summary": "DLMM LP whales",
    "description": "Meteora DLMM liquidity providers ranked by measured on-chain edge: net USD, median multiple, win rate, hold time, size, recency. Produced by our own discovery engine, which decodes DLMM liquidity instructions across high-volume and high-yield pools every few hours and scores each wallet's completed round trips. These are the wallets our live copier watches.",
    "tags": [
     "Liquidity Lobe"
    ],
    "x-price-usd": 0.02,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.02"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 25,
          "default": 10,
          "description": "How many ranked LP wallets to return. Range 1-25. Default 10."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "limit": 5
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/crypto_price": {
   "post": {
    "operationId": "crypto_price",
    "summary": "Crypto prices (any chain)",
    "description": "Live USD price and 24 h change for up to 30 crypto assets on any chain — by symbol, CoinGecko id, contract or mint address. Resolves each asset (BTC, \"coingecko:ethereum\", \"base:0x…\", a bare 0x address with chain, or a Solana mint) and prices it from DefiLlama's aggregated oracle (confidence score included). Symbols resolve against the top 1,000 coins by market cap first, so \"USDC\" means the real one; ambiguous symbols list the alternatives.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "assets"
        ],
        "properties": {
         "assets": {
          "type": "array",
          "maxItems": 30,
          "items": {
           "type": "string"
          },
          "description": "e.g. [\"BTC\",\"ETH\",\"coingecko:solana\",\"base:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\"]. 0-30 items."
         },
         "chain": {
          "type": "string",
          "enum": [
           "ethereum",
           "base",
           "arbitrum",
           "optimism",
           "polygon",
           "bsc",
           "avalanche",
           "linea",
           "blast",
           "scroll",
           "gnosis",
           "sonic",
           "unichain",
           "mantle",
           "berachain",
           "hyperevm",
           "monad"
          ],
          "default": "ethereum",
          "description": "EVM chain: ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, linea, blast, scroll, gnosis, sonic, unichain, mantle, berachain, hyperevm, monad. One of \"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\", \"bsc\", \"avalanche\", \"linea\", \"blast\", \"scroll\", \"gnosis\", \"sonic\", \"unichain\", \"mantle\", \"berachain\", \"hyperevm\", \"monad\". Default \"ethereum\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "assets": [
         "BTC",
         "ETH",
         "SOL",
         "base:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/price_history": {
   "post": {
    "operationId": "price_history",
    "summary": "Price history + volatility",
    "description": "Historical USD prices for any crypto asset (hourly or daily, up to 365 days) with return, high/low, max drawdown and annualized volatility. Same asset resolution as crypto_price. Returns the series plus stats computed from it: total return, high/low with dates, max drawdown, and annualized volatility from log returns.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "asset"
        ],
        "properties": {
         "asset": {
          "type": "string",
          "description": "symbol, CoinGecko id, chain:address or address"
         },
         "days": {
          "type": "integer",
          "minimum": 1,
          "maximum": 365,
          "default": 30,
          "description": "How many days back; hourly points up to 90 days, daily beyond. Range 1-365. Default 30."
         },
         "interval": {
          "type": "string",
          "enum": [
           "hour",
           "day"
          ],
          "default": "day",
          "description": "hourly allowed up to 30 days. One of \"hour\", \"day\". Default \"day\"."
         },
         "chain": {
          "type": "string",
          "enum": [
           "ethereum",
           "base",
           "arbitrum",
           "optimism",
           "polygon",
           "bsc",
           "avalanche",
           "linea",
           "blast",
           "scroll",
           "gnosis",
           "sonic",
           "unichain",
           "mantle",
           "berachain",
           "hyperevm",
           "monad"
          ],
          "default": "ethereum",
          "description": "EVM chain: ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, linea, blast, scroll, gnosis, sonic, unichain, mantle, berachain, hyperevm, monad. One of \"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\", \"bsc\", \"avalanche\", \"linea\", \"blast\", \"scroll\", \"gnosis\", \"sonic\", \"unichain\", \"mantle\", \"berachain\", \"hyperevm\", \"monad\". Default \"ethereum\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "asset": "ETH",
        "days": 30,
        "interval": "day"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/defi_rankings": {
   "post": {
    "operationId": "defi_rankings",
    "summary": "DeFi protocol rankings",
    "description": "Top DeFi protocols by TVL (or 1 d / 7 d TVL change), filterable by chain and category — lending, DEX, liquid staking, bridges, perps… From DefiLlama's full protocol list (~6,000 protocols). Each row: TVL, TVL on the requested chain, 1 h/1 d/7 d change, market cap, category, chains, site. Use for \"biggest lending protocols on Base\" or \"fastest growing DEXes this week\".",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "chain": {
          "type": "string",
          "description": "DefiLlama chain name, e.g. Ethereum, Solana, Base, Arbitrum (optional)"
         },
         "category": {
          "type": "string",
          "description": "e.g. Lending, Dexs, Liquid Staking, Bridge, Derivatives, Yield, CDP, RWA (optional)"
         },
         "sort": {
          "type": "string",
          "enum": [
           "tvl",
           "change_1d",
           "change_7d"
          ],
          "default": "tvl",
          "description": "Rank by current TVL or by 1-day / 7-day TVL change. One of \"tvl\", \"change_1d\", \"change_7d\". Default \"tvl\"."
         },
         "min_tvl_usd": {
          "type": "number",
          "minimum": 0,
          "default": 1000000,
          "description": "Skip protocols with less TVL than this (USD). Default 1000000."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25,
          "description": "How many protocols to return. Range 1-100. Default 25."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "chain": "Base",
        "category": "Lending",
        "limit": 10
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/defi_protocol": {
   "post": {
    "operationId": "defi_protocol",
    "summary": "DeFi protocol profile",
    "description": "One DeFi protocol in depth: TVL by chain, TVL trend, fees and revenue (24 h/7 d/30 d), market cap, audits, links. Look up by name or DefiLlama slug (\"aave\", \"Uniswap\", \"jupiter\"). Combines DefiLlama's protocol list with its fees/revenue summaries. Fuzzy name matches return the best match plus close alternatives.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "protocol"
        ],
        "properties": {
         "protocol": {
          "type": "string",
          "description": "name or slug"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "protocol": "aave"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/chain_tvl": {
   "post": {
    "operationId": "chain_tvl",
    "summary": "Chain TVL",
    "description": "Total value locked on every blockchain right now, ranked — or one chain's daily TVL history. DefiLlama chain TVL. Without \"chain\": ranking of all chains with token symbol. With \"chain\": daily TVL history for up to 365 days plus 7 d / 30 d / 90 d change.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "chain": {
          "type": "string",
          "description": "e.g. Solana, Ethereum, Base (optional)"
         },
         "days": {
          "type": "integer",
          "minimum": 7,
          "maximum": 365,
          "default": 90,
          "description": "Days of daily TVL history (only when a single chain is requested). Range 7-365. Default 90."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 200,
          "default": 30,
          "description": "How many chains to return in the ranking. Range 1-200. Default 30."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "chain": "Solana",
        "days": 30
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/yield_pools": {
   "post": {
    "operationId": "yield_pools",
    "summary": "DeFi yield finder",
    "description": "Search ~19,000 DeFi yield pools across all chains: filter by chain, protocol, token, stablecoin-only, min TVL; sort by APY or TVL. Base vs reward APY, 30 d mean, IL risk. DefiLlama yields data, refreshed every 15 minutes. Shows APY split into base (organic fees/interest) and reward (token emissions), the 30-day mean APY so an agent can spot unsustainable spikes, impermanent-loss risk, exposure (single/multi) and DefiLlama's up/down prediction.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.003,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "chain": {
          "type": "string",
          "description": "e.g. Ethereum, Solana, Base, Arbitrum"
         },
         "project": {
          "type": "string",
          "description": "protocol slug, e.g. aave-v3, kamino-lend, uniswap-v3"
         },
         "token": {
          "type": "string",
          "description": "token symbol that must appear in the pool, e.g. USDC, SOL"
         },
         "stablecoin_only": {
          "type": "boolean",
          "default": false,
          "description": "true = only pools whose assets are all stablecoins. Default false."
         },
         "single_exposure_only": {
          "type": "boolean",
          "default": false,
          "description": "no LP pairs (no impermanent loss) Default false."
         },
         "min_tvl_usd": {
          "type": "number",
          "minimum": 0,
          "default": 1000000,
          "description": "Skip pools with less TVL than this (USD); raises quality. Default 1000000."
         },
         "max_apy": {
          "type": "number",
          "minimum": 1,
          "default": 1000,
          "description": "drop absurd APYs above this. Default 1000."
         },
         "sort": {
          "type": "string",
          "enum": [
           "apy",
           "tvl",
           "apy_base",
           "apy_30d_mean"
          ],
          "default": "apy",
          "description": "Rank by total APY, TVL, base (non-reward) APY or 30-day mean APY. One of \"apy\", \"tvl\", \"apy_base\", \"apy_30d_mean\". Default \"apy\"."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 20,
          "description": "How many pools to return. Range 1-50. Default 20."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "chain": "Solana",
        "token": "USDC",
        "stablecoin_only": true,
        "min_tvl_usd": 5000000,
        "sort": "apy",
        "limit": 10
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/stablecoins": {
   "post": {
    "operationId": "stablecoins",
    "summary": "Stablecoin supply + peg",
    "description": "Every stablecoin's circulating supply, 1 d/7 d/30 d supply change, current price and peg deviation — spot depegs and mint/burn flows. DefiLlama stablecoin data across all chains. Filter by symbol or peg type. peg_deviation_pct is measured against the peg (USD, EUR…) using DefiLlama's price.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "symbol": {
          "type": "string",
          "description": "e.g. USDC, USDe, PYUSD (optional)"
         },
         "peg": {
          "type": "string",
          "enum": [
           "any",
           "peggedUSD",
           "peggedEUR",
           "peggedVAR"
          ],
          "default": "any",
          "description": "Filter by peg currency type. One of \"any\", \"peggedUSD\", \"peggedEUR\", \"peggedVAR\". Default \"any\"."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25,
          "description": "How many stablecoins to return. Range 1-100. Default 25."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "limit": 10
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/dex_volumes": {
   "post": {
    "operationId": "dex_volumes",
    "summary": "DEX volume rankings",
    "description": "DEX trading volume in the last 24 h / 7 d / 30 d — all chains or one — with the top DEXes and their share and change. DefiLlama DEX overview. Optionally scoped to one chain. Includes perps with type=perps (derivatives volume) or aggregators.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "chain": {
          "type": "string",
          "description": "e.g. Solana, Base (optional)"
         },
         "type": {
          "type": "string",
          "enum": [
           "dexs",
           "derivatives",
           "aggregators"
          ],
          "default": "dexs",
          "description": "Spot DEXes, perp/derivatives DEXes, or DEX aggregators. One of \"dexs\", \"derivatives\", \"aggregators\". Default \"dexs\"."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 15,
          "description": "How many venues to return. Range 1-50. Default 15."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "chain": "Solana",
        "limit": 10
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/fees_revenue": {
   "post": {
    "operationId": "fees_revenue",
    "summary": "Protocol fees + revenue",
    "description": "Which protocols and chains earn the most: fees or revenue over 24 h / 7 d / 30 d, filterable by chain — the cash-flow view of crypto. DefiLlama fees/revenue overview. \"fees\" = what users paid; \"revenue\" = what the protocol kept. Ranked, with day-over-day change.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "metric": {
          "type": "string",
          "enum": [
           "fees",
           "revenue"
          ],
          "default": "fees",
          "description": "Gross fees paid by users, or revenue kept by the protocol. One of \"fees\", \"revenue\". Default \"fees\"."
         },
         "chain": {
          "type": "string",
          "description": "optional"
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 20,
          "description": "How many protocols to return. Range 1-50. Default 20."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "metric": "revenue",
        "limit": 10
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/evm_token_security": {
   "post": {
    "operationId": "evm_token_security",
    "summary": "EVM token security scan",
    "description": "Honeypot and scam check for any ERC-20 on 15+ EVM chains: buy/sell tax, can the owner mint, pause, blacklist or change taxes, proxy, holder concentration, LP lock. GoPlus Security token analysis plus a plain verdict. Flags are the ones that actually drain buyers: honeypot (cannot sell), sell tax above 10%, hidden owner, owner can modify balances or taxes, trading cooldown, blacklist, self-destruct. Top holders and LP holders with lock status included.",
    "tags": [
     "Risk Amygdala"
    ],
    "x-price-usd": 0.005,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "token"
        ],
        "properties": {
         "token": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{40}$",
          "description": "ERC-20 contract address (0x + 40 hex)."
         },
         "chain": {
          "type": "string",
          "enum": [
           "ethereum",
           "base",
           "arbitrum",
           "optimism",
           "polygon",
           "bsc",
           "avalanche",
           "linea",
           "blast",
           "scroll",
           "gnosis",
           "sonic",
           "unichain",
           "mantle",
           "berachain",
           "hyperevm",
           "monad"
          ],
          "default": "ethereum",
          "description": "EVM chain: ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, linea, blast, scroll, gnosis, sonic, unichain, mantle, berachain, hyperevm, monad. One of \"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\", \"bsc\", \"avalanche\", \"linea\", \"blast\", \"scroll\", \"gnosis\", \"sonic\", \"unichain\", \"mantle\", \"berachain\", \"hyperevm\", \"monad\". Default \"ethereum\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",
        "chain": "ethereum"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/evm_address": {
   "post": {
    "operationId": "evm_address",
    "summary": "EVM address lookup",
    "description": "Native balance (with USD), transaction count, contract or wallet, ENS name — for any address on 17 EVM chains at once or one chain. Reads straight from each chain's RPC. chain=\"all\" checks every supported chain in parallel and returns only where the address has balance, transactions or code — the quick \"where is this wallet active\" answer.",
    "tags": [
     "Market Stem"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "address"
        ],
        "properties": {
         "address": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{40}$",
          "description": "EVM wallet or contract address (0x + 40 hex)."
         },
         "chain": {
          "type": "string",
          "enum": [
           "all",
           "ethereum",
           "base",
           "arbitrum",
           "optimism",
           "polygon",
           "bsc",
           "avalanche",
           "linea",
           "blast",
           "scroll",
           "gnosis",
           "sonic",
           "unichain",
           "mantle",
           "berachain",
           "hyperevm",
           "monad"
          ],
          "default": "all",
          "description": "Chain to read, or \"all\" to check every supported chain. One of \"all\", \"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\", \"bsc\", \"avalanche\", \"linea\", \"blast\", \"scroll\", \"gnosis\", \"sonic\", \"unichain\", \"mantle\", \"berachain\", \"hyperevm\", \"monad\". Default \"all\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
        "chain": "all"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/erc20_info": {
   "post": {
    "operationId": "erc20_info",
    "summary": "ERC-20 token + balance",
    "description": "Name, symbol, decimals, total supply and USD price of any ERC-20 — plus a wallet's balance of it — read on chain. Direct contract calls (name/symbol/decimals/totalSupply/balanceOf) on the chosen EVM chain, priced via DefiLlama. Works for any token, listed or not.",
    "tags": [
     "Market Stem"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "token"
        ],
        "properties": {
         "token": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{40}$",
          "description": "ERC-20 contract address (0x + 40 hex)."
         },
         "wallet": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{40}$",
          "description": "optional holder. 0x + 40 hex chars."
         },
         "chain": {
          "type": "string",
          "enum": [
           "ethereum",
           "base",
           "arbitrum",
           "optimism",
           "polygon",
           "bsc",
           "avalanche",
           "linea",
           "blast",
           "scroll",
           "gnosis",
           "sonic",
           "unichain",
           "mantle",
           "berachain",
           "hyperevm",
           "monad"
          ],
          "default": "ethereum",
          "description": "EVM chain: ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, linea, blast, scroll, gnosis, sonic, unichain, mantle, berachain, hyperevm, monad. One of \"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\", \"bsc\", \"avalanche\", \"linea\", \"blast\", \"scroll\", \"gnosis\", \"sonic\", \"unichain\", \"mantle\", \"berachain\", \"hyperevm\", \"monad\". Default \"ethereum\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "wallet": "0x3304E22DDaa22bCdC5fCa2269b418046aE7b566A",
        "chain": "base"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/evm_tx": {
   "post": {
    "operationId": "evm_tx",
    "summary": "Explain an EVM transaction",
    "description": "Any EVM transaction in plain terms: status, from/to, value, fee in native and USD, method called, every ERC-20 transfer decoded with symbols and amounts. Fetches the transaction and receipt from the chain, decodes ERC-20 Transfer events (token symbols/decimals read on chain), and prices the fee.",
    "tags": [
     "Market Stem"
    ],
    "x-price-usd": 0.003,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "hash"
        ],
        "properties": {
         "hash": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{64}$",
          "description": "EVM transaction hash (0x + 64 hex)."
         },
         "chain": {
          "type": "string",
          "enum": [
           "ethereum",
           "base",
           "arbitrum",
           "optimism",
           "polygon",
           "bsc",
           "avalanche",
           "linea",
           "blast",
           "scroll",
           "gnosis",
           "sonic",
           "unichain",
           "mantle",
           "berachain",
           "hyperevm",
           "monad"
          ],
          "default": "ethereum",
          "description": "EVM chain: ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, linea, blast, scroll, gnosis, sonic, unichain, mantle, berachain, hyperevm, monad. One of \"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\", \"bsc\", \"avalanche\", \"linea\", \"blast\", \"scroll\", \"gnosis\", \"sonic\", \"unichain\", \"mantle\", \"berachain\", \"hyperevm\", \"monad\". Default \"ethereum\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "hash": "0xedc1ff7d3ac9efa7f6cb95814ea54b8a49c4118807769d84fa17260f21bb80ad",
        "chain": "ethereum"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/gas_now": {
   "post": {
    "operationId": "gas_now",
    "summary": "Gas + fees across chains",
    "description": "What a transaction costs right now on 17 EVM chains, Solana and Bitcoin — gwei/priority fee and the USD cost of a transfer and a swap on each. EVM: base fee + priority fee from the latest block (eth_feeHistory), USD cost of a 21,000-gas transfer and a ~150,000-gas swap (L2s shown before their L1 data fee). Solana: recent prioritization-fee percentiles. Bitcoin: mempool.space recommended sat/vB with USD for a typical 140 vB transaction.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "chains": {
          "type": "array",
          "maxItems": 20,
          "items": {
           "type": "string"
          },
          "description": "subset, e.g. [\"ethereum\",\"base\",\"solana\",\"bitcoin\"] (default: all) 0-20 items."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "chains": [
         "ethereum",
         "base",
         "arbitrum",
         "solana",
         "bitcoin"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/ens_resolve": {
   "post": {
    "operationId": "ens_resolve",
    "summary": "ENS resolve",
    "description": "ENS name → address and address → primary name, with avatar, twitter, github, url and email text records. Reads ENS on Ethereum mainnet (forward resolution verified; reverse lookup confirmed by forward-resolving the name).",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "query"
        ],
        "properties": {
         "query": {
          "type": "string",
          "description": "vitalik.eth or 0x address"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "query": "vitalik.eth"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/cex_ticker": {
   "post": {
    "operationId": "cex_ticker",
    "summary": "Exchange prices (Kraken/Coinbase/OKX)",
    "description": "Live bid/ask/last, 24 h change, volume and range for a pair on Kraken, Coinbase and OKX side by side — with the cross-venue spread. Queries each venue's public ticker in parallel. OKX quotes in USDT when USD is asked for. The cross-venue spread shows arbitrage gaps and which venue is off.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "pair"
        ],
        "properties": {
         "pair": {
          "type": "string",
          "description": "BTC/USD, ETH-USDT, SOL"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "pair": "SOL/USD"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/orderbook_depth": {
   "post": {
    "operationId": "orderbook_depth",
    "summary": "Order book depth + slippage",
    "description": "How much size a market can take: bid/ask depth within ±0.1/0.5/1/2/5%, spread, and the slippage of a $10k/$100k/$1M market order on Kraken, Coinbase or OKX. Pulls the full public L2 book and walks it. Use before sizing an order or comparing venue liquidity. slippage is vs. mid price, in basis points; null means the fetched book was too thin for that size.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.003,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "pair"
        ],
        "properties": {
         "pair": {
          "type": "string",
          "description": "Market pair as BASE/QUOTE, e.g. \"BTC/USD\" or \"ETH/USDT\"."
         },
         "venue": {
          "type": "string",
          "enum": [
           "coinbase",
           "kraken",
           "okx"
          ],
          "default": "coinbase",
          "description": "Exchange whose order book to read. One of \"coinbase\", \"kraken\", \"okx\". Default \"coinbase\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "pair": "ETH/USD",
        "venue": "coinbase"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/funding_rates": {
   "post": {
    "operationId": "funding_rates",
    "summary": "Perp funding rates",
    "description": "Perpetual funding for a coin on Hyperliquid, OKX and Kraken Futures side by side — per-interval rate and annualized APR — plus open interest and mark price. Positive = longs pay shorts. Each venue's rate is normalized to an hourly figure and annualized so they compare directly (OKX settles every 1–8 h, Hyperliquid hourly, Kraken hourly). Use for basis/carry trades or crowding signals.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.003,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "coin"
        ],
        "properties": {
         "coin": {
          "type": "string",
          "pattern": "^[A-Za-z0-9]{2,12}$",
          "description": "BTC, ETH, SOL…"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "coin": "SOL"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/hyperliquid_markets": {
   "post": {
    "operationId": "hyperliquid_markets",
    "summary": "Hyperliquid perps",
    "description": "Every Hyperliquid perpetual: mark/oracle price, 24 h change and volume, open interest, funding APR, premium — ranked by volume, OI, funding or movers. Live from Hyperliquid's public info API. Filter to one coin or rank the whole board. Funding is hourly on Hyperliquid; apr = hourly × 8,760.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "coin": {
          "type": "string",
          "description": "optional, e.g. BTC"
         },
         "sort": {
          "type": "string",
          "enum": [
           "volume",
           "open_interest",
           "funding",
           "funding_negative",
           "change"
          ],
          "default": "volume",
          "description": "Rank by 24 h volume, open interest, highest or most negative funding, or 24 h change. One of \"volume\", \"open_interest\", \"funding\", \"funding_negative\", \"change\". Default \"volume\"."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 20,
          "description": "How many markets to return. Range 1-100. Default 20."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "sort": "funding",
        "limit": 10
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/fear_greed": {
   "post": {
    "operationId": "fear_greed",
    "summary": "Crypto Fear & Greed",
    "description": "The Crypto Fear & Greed Index (0–100) now and its history, with the 7 d / 30 d average and how extreme today is. alternative.me index, daily. Up to 365 days of history.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "days": {
          "type": "integer",
          "minimum": 1,
          "maximum": 365,
          "default": 30,
          "description": "Days of index history to include. Range 1-365. Default 30."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "days": 30
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/solana_network": {
   "post": {
    "operationId": "solana_network",
    "summary": "Solana network status",
    "description": "Solana right now: TPS (total and non-vote), slot and block height, epoch progress and ETA, priority-fee percentiles, cluster version. Read from mainnet RPC: recent performance samples, epoch info, prioritization fees.",
    "tags": [
     "Market Stem"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
       },
       "example": {}
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/bitcoin_network": {
   "post": {
    "operationId": "bitcoin_network",
    "summary": "Bitcoin network status",
    "description": "Bitcoin right now: fee rates, mempool size, block height, next difficulty adjustment (% and ETA), hashrate. From mempool.space public API.",
    "tags": [
     "Chain Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
       },
       "example": {}
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/address_check": {
   "post": {
    "operationId": "address_check",
    "summary": "Address validator (any chain)",
    "description": "Is this a valid address, and for which chain? EVM (with checksum fix), Solana (on-curve wallet vs PDA), Bitcoin (legacy/P2SH/SegWit/Taproot), Tron, Cosmos-style bech32. Pure checksum and format validation, no network calls. Catches the typo that would send funds to nowhere, and tells a Solana wallet (on curve) from a program-derived address.",
    "tags": [
     "Risk Amygdala"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "address"
        ],
        "properties": {
         "address": {
          "type": "string",
          "description": "Any string that might be a crypto address (EVM, Solana, Bitcoin, Tron, etc.)."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/web_read": {
   "post": {
    "operationId": "web_read",
    "summary": "Read a web page (clean markdown)",
    "description": "Any public URL → clean readable markdown: the article/main content without nav, ads or boilerplate, plus title, author, date, word count and links. PDFs too. Fetches the page (redirects followed, public internet only), extracts the main content with Mozilla Readability and converts it to markdown. PDFs are converted to text. Use max_chars to bound the output. JavaScript-only pages return whatever the server sends (no headless browser).",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "url"
        ],
        "properties": {
         "url": {
          "type": "string",
          "description": "http(s) URL"
         },
         "max_chars": {
          "type": "integer",
          "minimum": 500,
          "maximum": 100000,
          "default": 20000,
          "description": "Truncate the returned markdown to this many characters. Range 500-100000. Default 20000."
         },
         "include_links": {
          "type": "boolean",
          "default": false,
          "description": "keep hyperlinks (absolute) in the markdown and return a link list. Default false."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "url": "https://en.wikipedia.org/wiki/Large_language_model",
        "max_chars": 3000
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/web_meta": {
   "post": {
    "operationId": "web_meta",
    "summary": "Page metadata + link preview",
    "description": "Everything a page says about itself: title, description, OpenGraph/Twitter card, canonical, favicon, language, RSS/Atom feeds, JSON-LD schema types, headings — and link-preview problems. Use to build link previews, check SEO/social cards, find a site's feeds or structured data. Flags missing og:image, missing description and non-absolute image URLs (common reasons a link shows up bare on X/Telegram).",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "url"
        ],
        "properties": {
         "url": {
          "type": "string",
          "description": "Absolute http(s) URL of the page."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "url": "https://www.wikipedia.org"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/dns_lookup": {
   "post": {
    "operationId": "dns_lookup",
    "summary": "DNS records + email security",
    "description": "All DNS for a domain — A, AAAA, CNAME, MX, NS, TXT, CAA, SOA — plus SPF and DMARC parsed and graded, so an agent knows where a domain points and whether its email can be spoofed. Queried live against public resolvers (Cloudflare, Google, Quad9). Email grade: SPF present and ending in -all/~all, DMARC present with p=quarantine/reject.",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "domain"
        ],
        "properties": {
         "domain": {
          "type": "string",
          "description": "Domain name without scheme, e.g. \"example.com\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "domain": "github.com"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/domain_whois": {
   "post": {
    "operationId": "domain_whois",
    "summary": "Domain WHOIS / RDAP + availability",
    "description": "Who registered a domain and when: registrar, creation/expiry dates, age, days to expiry, status locks, nameservers — or that it looks available to register. Uses RDAP, the registries' official successor to WHOIS (rdap.org bootstrap). A domain with no RDAP record and no DNS is reported as likely available. Young domains (< 30 days) are flagged: most phishing/scam sites are days old.",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "domain"
        ],
        "properties": {
         "domain": {
          "type": "string",
          "description": "Registrable domain without scheme, e.g. \"example.com\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "domain": "wikipedia.org"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/tls_check": {
   "post": {
    "operationId": "tls_check",
    "summary": "TLS certificate check",
    "description": "A site's TLS certificate: issuer, validity, days until expiry, SANs, protocol, cipher, chain and whether browsers trust it. Live TLS handshake to the host. Flags expired, expiring (< 14 days), untrusted or name-mismatched certificates.",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "host"
        ],
        "properties": {
         "host": {
          "type": "string",
          "description": "Hostname without scheme or path, e.g. \"example.com\"."
         },
         "port": {
          "type": "integer",
          "minimum": 1,
          "maximum": 65535,
          "default": 443,
          "description": "TCP port serving TLS. Range 1-65535. Default 443."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "host": "github.com"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/http_probe": {
   "post": {
    "operationId": "http_probe",
    "summary": "HTTP probe + security headers",
    "description": "Is a site up and how is it served: status, full redirect chain, timings (DNS/TLS/first byte/total), server, CDN, caching, compression, and a graded security-header check (HSTS, CSP, frame, sniffing…). One real GET from our server. The security grade counts HSTS, Content-Security-Policy, X-Frame-Options/frame-ancestors, X-Content-Type-Options, Referrer-Policy and Permissions-Policy.",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "url"
        ],
        "properties": {
         "url": {
          "type": "string",
          "description": "Absolute http(s) URL to probe."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "url": "https://example.com"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/robots_check": {
   "post": {
    "operationId": "robots_check",
    "summary": "robots.txt + AI crawler policy",
    "description": "May I crawl this? Checks a URL against the site's robots.txt for any user-agent, lists sitemaps and crawl-delay, and reports which AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended…) the site blocks. Standard robots.txt matching (longest match wins, Allow beats Disallow on ties, * and $ wildcards). Missing robots.txt = everything allowed.",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "url"
        ],
        "properties": {
         "url": {
          "type": "string",
          "description": "Absolute URL you intend to crawl."
         },
         "user_agent": {
          "type": "string",
          "default": "augur-synapse",
          "description": "User-agent token to evaluate the rules for. Default \"augur-synapse\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "url": "https://www.nytimes.com/section/technology",
        "user_agent": "GPTBot"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/email_check": {
   "post": {
    "operationId": "email_check",
    "summary": "Email address check",
    "description": "Will this email address work? Syntax, domain MX records, disposable/throwaway provider detection, role address (info@, admin@) and free-mail provider — without sending anything. No SMTP probing (that gets servers blacklisted); the verdict is from syntax, live MX lookup and a maintained list of ~100k disposable domains.",
    "tags": [
     "Web Senses"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "email"
        ],
        "properties": {
         "email": {
          "type": "string",
          "description": "Email address to check. No mail is sent."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "email": "someone@mailinator.com"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/wiki": {
   "post": {
    "operationId": "wiki",
    "summary": "Wikipedia lookup",
    "description": "Wikipedia in any language: search a topic and get the best article's summary, description, thumbnail and link — or the full article text. Search + REST summary from Wikipedia. full=true returns the article as plain text (sections kept), capped by max_chars. Disambiguation pages are flagged with alternatives.",
    "tags": [
     "Knowledge Cortex"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "query"
        ],
        "properties": {
         "query": {
          "type": "string",
          "description": "Topic or article title to look up."
         },
         "lang": {
          "type": "string",
          "pattern": "^[a-z]{2,3}(-[a-z]+)?$",
          "default": "en",
          "description": "Wikipedia language code, e.g. \"en\", \"de\", \"pt-br\". Default \"en\"."
         },
         "full": {
          "type": "boolean",
          "default": false,
          "description": "true = return the full article text, not just the summary. Default false."
         },
         "max_chars": {
          "type": "integer",
          "minimum": 500,
          "maximum": 60000,
          "default": 8000,
          "description": "Truncate full article text to this many characters (with full=true). Range 500-60000. Default 8000."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "query": "Solana blockchain"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/arxiv_search": {
   "post": {
    "operationId": "arxiv_search",
    "summary": "arXiv paper search",
    "description": "Search arXiv research papers by keywords, author or category — newest or most relevant — with abstracts, authors, dates and PDF links. arXiv's official API. query supports arXiv syntax (ti:, au:, abs:, cat:cs.AI, AND/OR). Paced to arXiv's one-request-per-3-seconds policy and cached, so repeated queries are instant.",
    "tags": [
     "Knowledge Cortex"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "query"
        ],
        "properties": {
         "query": {
          "type": "string",
          "description": "e.g. \"tool use agents\" or au:hinton or cat:cs.CL AND ti:reasoning"
         },
         "sort": {
          "type": "string",
          "enum": [
           "relevance",
           "newest"
          ],
          "default": "relevance",
          "description": "Order by relevance to the query or by submission date. One of \"relevance\", \"newest\". Default \"relevance\"."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 30,
          "default": 10,
          "description": "How many papers to return. Range 1-30. Default 10."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "query": "LLM agents tool use",
        "sort": "newest",
        "limit": 5
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/package_info": {
   "post": {
    "operationId": "package_info",
    "summary": "Software package info",
    "description": "Any npm, PyPI or crates.io package: latest version and release date, license, downloads, maintainers, repo, dependency count, deprecation — to pick or vet a dependency. Straight from each registry (plus npm and pypistats download counts). Flags deprecated packages and ones with no release in 2+ years.",
    "tags": [
     "Knowledge Cortex"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "name"
        ],
        "properties": {
         "name": {
          "type": "string",
          "description": "Exact package name as published, e.g. \"express\" or \"requests\"."
         },
         "ecosystem": {
          "type": "string",
          "enum": [
           "npm",
           "pypi",
           "crates"
          ],
          "default": "npm",
          "description": "Registry to look in. One of \"npm\", \"pypi\", \"crates\". Default \"npm\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "name": "@solana/web3.js",
        "ecosystem": "npm"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/vuln_check": {
   "post": {
    "operationId": "vuln_check",
    "summary": "Dependency vulnerability check",
    "description": "Known security vulnerabilities for a package version (npm, PyPI, crates, Go, Maven, NuGet, RubyGems, Packagist) with severity, CVE/GHSA ids, and the version that fixes each. Queries OSV.dev, the open vulnerability database that aggregates GitHub advisories, PyPA, RustSec, Go and more. Pass up to 50 packages at once as \"ecosystem:name@version\" to audit a lockfile.",
    "tags": [
     "Risk Amygdala"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "packages": {
          "type": "array",
          "maxItems": 50,
          "items": {
           "type": "string"
          },
          "description": "e.g. [\"npm:lodash@4.17.15\",\"pypi:requests@2.19.0\"]. 0-50 items."
         },
         "name": {
          "type": "string",
          "description": "Exact package name as published."
         },
         "version": {
          "type": "string",
          "description": "Exact version to check, e.g. \"4.17.1\"."
         },
         "ecosystem": {
          "type": "string",
          "default": "npm",
          "description": "Package ecosystem: npm, PyPI, crates.io, Go, Maven, NuGet, RubyGems or Packagist. Default \"npm\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "packages": [
         "npm:lodash@4.17.15",
         "pypi:jinja2@2.10"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/github_repo": {
   "post": {
    "operationId": "github_repo",
    "summary": "GitHub repo health",
    "description": "A GitHub repository at a glance: stars, forks, open issues, last commit, latest release, license, languages, contributors, archived — is it alive and trustworthy? From the GitHub REST API. \"activity\" summarizes days since last push and last release so an agent can judge whether a project is maintained.",
    "tags": [
     "Knowledge Cortex"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "repo"
        ],
        "properties": {
         "repo": {
          "type": "string",
          "description": "owner/name or a github.com URL"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "repo": "solana-labs/solana-web3.js"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/hn_search": {
   "post": {
    "operationId": "hn_search",
    "summary": "Hacker News search",
    "description": "Search Hacker News stories and comments by keyword, sorted by relevance or date, filtered by time window and minimum points — what developers are saying about anything. Algolia's official HN search. Returns title, url, points, comment count, author, date and the HN discussion link.",
    "tags": [
     "Knowledge Cortex"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "query"
        ],
        "properties": {
         "query": {
          "type": "string",
          "description": "Keywords to search for."
         },
         "type": {
          "type": "string",
          "enum": [
           "story",
           "comment",
           "show_hn",
           "ask_hn"
          ],
          "default": "story",
          "description": "Stories, comments, Show HN or Ask HN posts. One of \"story\", \"comment\", \"show_hn\", \"ask_hn\". Default \"story\"."
         },
         "sort": {
          "type": "string",
          "enum": [
           "relevance",
           "date"
          ],
          "default": "relevance",
          "description": "Order by relevance or newest first. One of \"relevance\", \"date\". Default \"relevance\"."
         },
         "days": {
          "type": "integer",
          "minimum": 1,
          "maximum": 3650,
          "default": 365,
          "description": "Only items from the last N days. Range 1-3650. Default 365."
         },
         "min_points": {
          "type": "integer",
          "minimum": 0,
          "default": 0,
          "description": "Only items with at least this many points. Default 0."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 15,
          "description": "How many results to return. Range 1-50. Default 15."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "query": "MCP server",
        "days": 30,
        "min_points": 50,
        "limit": 5
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/doi_lookup": {
   "post": {
    "operationId": "doi_lookup",
    "summary": "Citation / DOI lookup",
    "description": "Resolve a DOI — or search a paper title — to full citation metadata: title, authors, journal, year, citations count, publisher, license, and a ready-made APA/BibTeX citation. Crossref's open metadata (150M+ works). Search mode returns the top matches for a title/author query.",
    "tags": [
     "Knowledge Cortex"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "doi": {
          "type": "string",
          "description": "e.g. 10.1038/nature14539"
         },
         "query": {
          "type": "string",
          "description": "title/author search instead of a DOI"
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 20,
          "default": 5,
          "description": "How many matches to return when searching by title. Range 1-20. Default 5."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "doi": "10.1038/nature14539"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/book_search": {
   "post": {
    "operationId": "book_search",
    "summary": "Book search",
    "description": "Find books by title, author, subject or ISBN: first published year, editions, ISBNs, page count, ratings, subjects and cover image. Open Library (Internet Archive) catalogue of 30M+ titles.",
    "tags": [
     "Knowledge Cortex"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "query"
        ],
        "properties": {
         "query": {
          "type": "string",
          "description": "title, author or ISBN"
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 20,
          "default": 5,
          "description": "How many books to return. Range 1-20. Default 5."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "query": "Dune Frank Herbert",
        "limit": 3
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/weather": {
   "post": {
    "operationId": "weather",
    "summary": "Weather now + forecast",
    "description": "Current weather and hourly/daily forecast for any place name or lat,lon: temperature, feels-like, wind, gusts, rain, cloud, humidity, UV — up to 9 days. Forecast from the Norwegian Meteorological Institute (MET Norway), the same model data yr.no uses, worldwide. Place names are geocoded with OpenStreetMap. Times are UTC plus local time when tz is given (IANA, e.g. Australia/Sydney).",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "place"
        ],
        "properties": {
         "place": {
          "type": "string",
          "description": "city/address or \"lat,lon\""
         },
         "days": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9,
          "default": 3,
          "description": "Days of daily forecast to include. Range 1-9. Default 3."
         },
         "tz": {
          "type": "string",
          "description": "IANA time zone for local times (optional)"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "place": "Sydney, Australia",
        "days": 2,
        "tz": "Australia/Sydney"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/geocode": {
   "post": {
    "operationId": "geocode",
    "summary": "Geocode / reverse geocode",
    "description": "Place name or address → coordinates (with city, state, country, postcode), or lat,lon → the nearest address. Up to 10 candidates. OpenStreetMap data via Photon. Returns OSM links so results can be checked.",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0.001,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.001"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "query"
        ],
        "properties": {
         "query": {
          "type": "string",
          "description": "address/place, or \"lat,lon\" for reverse"
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 10,
          "default": 3,
          "description": "How many candidate matches to return. Range 1-10. Default 3."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "query": "Eiffel Tower",
        "limit": 2
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/fx_rates": {
   "post": {
    "operationId": "fx_rates",
    "summary": "Currency exchange rates",
    "description": "Official exchange rates for 30 major currencies (European Central Bank reference rates): latest or any date since 1999, convert an amount, or a time series. Frankfurter API over ECB reference rates, published each working day ~16:00 CET. For crypto use crypto_price.",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "from": {
          "type": "string",
          "pattern": "^[A-Za-z]{3}$",
          "default": "USD",
          "description": "Base currency ISO 4217 code, e.g. \"USD\". Default \"USD\"."
         },
         "to": {
          "type": "array",
          "maxItems": 30,
          "items": {
           "type": "string",
           "pattern": "^[A-Za-z]{3}$"
          },
          "description": "targets (default: all) 0-30 items."
         },
         "amount": {
          "type": "number",
          "minimum": 0,
          "default": 1,
          "description": "Amount of the base currency to convert. Default 1."
         },
         "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "historical date (optional)"
         },
         "end_date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "with date: returns a daily series"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "from": "USD",
        "to": [
         "EUR",
         "AUD",
         "JPY"
        ],
        "amount": 100
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/holidays": {
   "post": {
    "operationId": "holidays",
    "summary": "Public holidays",
    "description": "Public holidays for 100+ countries for any year, whether today is a holiday there, and the next upcoming ones — including regional (state) holidays. Nager.Date open holiday data. Use for scheduling, market-closure awareness or delivery estimates.",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "country"
        ],
        "properties": {
         "country": {
          "type": "string",
          "description": "ISO code or name, e.g. AU, United States"
         },
         "year": {
          "type": "integer",
          "minimum": 1975,
          "maximum": 2075,
          "description": "Calendar year; defaults to the current year. Range 1975-2075."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "country": "AU"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/time_convert": {
   "post": {
    "operationId": "time_convert",
    "summary": "Time zones + date math",
    "description": "Current time in any time zones, convert a time between zones (DST-correct), and date arithmetic: add/subtract durations, days between dates, weekday, ISO week, Unix time. Computed locally from the IANA time-zone database — no rate limits, exact. Zones are IANA names (America/New_York, Asia/Tokyo, UTC).",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "time": {
          "type": "string",
          "description": "ISO time, \"now\", or a Unix timestamp; naive times are read in from_tz"
         },
         "from_tz": {
          "type": "string",
          "default": "UTC",
          "description": "IANA time zone the input time is in, e.g. \"America/New_York\". Default \"UTC\"."
         },
         "to_tz": {
          "type": "array",
          "maxItems": 20,
          "items": {
           "type": "string"
          },
          "default": [
           "UTC"
          ],
          "description": "IANA time zones to convert into. 0-20 items. Default [\"UTC\"]."
         },
         "add": {
          "type": "string",
          "description": "e.g. \"+3d 4h\", \"-90m\", \"+2w\""
         },
         "until": {
          "type": "string",
          "description": "second ISO date: returns the difference"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "time": "2026-12-25T09:00",
        "from_tz": "Australia/Sydney",
        "to_tz": [
         "America/New_York",
         "Europe/London",
         "Asia/Tokyo"
        ],
        "add": "+1d"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/country_info": {
   "post": {
    "operationId": "country_info",
    "summary": "Country facts",
    "description": "Any country's essentials: capital, population, GDP and GDP per capita (World Bank), currencies, languages, calling code, internet TLD, time zones, driving side, borders, flag. Static facts from the world-countries dataset (no rate limits) plus the latest World Bank population and GDP figures.",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "country"
        ],
        "properties": {
         "country": {
          "type": "string",
          "description": "name or ISO code"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "country": "Japan"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/earthquakes": {
   "post": {
    "operationId": "earthquakes",
    "summary": "Recent earthquakes",
    "description": "Earthquakes worldwide from the last hour to 30 days, filtered by minimum magnitude and optionally within a radius of a place — with depth, tsunami flag and USGS alert level. USGS real-time earthquake feeds (updated every minute).",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "min_magnitude": {
          "type": "number",
          "minimum": 0,
          "maximum": 9,
          "default": 4.5,
          "description": "Only quakes at or above this magnitude. Range 0-9. Default 4.5."
         },
         "period": {
          "type": "string",
          "enum": [
           "hour",
           "day",
           "week",
           "month"
          ],
          "default": "day",
          "description": "Look-back window. One of \"hour\", \"day\", \"week\", \"month\". Default \"day\"."
         },
         "near": {
          "type": "string",
          "description": "place or lat,lon (optional)"
         },
         "radius_km": {
          "type": "number",
          "minimum": 10,
          "maximum": 5000,
          "default": 1000,
          "description": "Search radius around the given place (only when a place is given). Range 10-5000. Default 1000."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 20,
          "description": "How many quakes to return, largest first. Range 1-100. Default 20."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "min_magnitude": 5,
        "period": "week"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/sun_moon": {
   "post": {
    "operationId": "sun_moon",
    "summary": "Sunrise, sunset + moon",
    "description": "Sunrise, sunset, golden hour, twilight, day length and solar noon for any place and date — plus moon phase, illumination, moonrise and moonset. Astronomical calculation (SunCalc), exact and instant. Pass tz for local times.",
    "tags": [
     "World Map"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "place"
        ],
        "properties": {
         "place": {
          "type": "string",
          "description": "Place name or \"lat,lon\"."
         },
         "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "default today (UTC)"
         },
         "tz": {
          "type": "string",
          "description": "IANA zone for local times"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "place": "Reykjavik",
        "tz": "Atlantic/Reykjavik"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/qr_code": {
   "post": {
    "operationId": "qr_code",
    "summary": "QR code generator",
    "description": "Make a QR code for any text, URL, Solana Pay / wallet address or Wi-Fi login — as a PNG (base64 data URL) or SVG, with size, margin, colours and error correction. Rendered on our server. For Wi-Fi pass wifi_ssid + wifi_password; for Solana Pay pass a solana: URI as text.",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "text": {
          "type": "string",
          "x-raw": true,
          "description": "Text or URL to encode (ignored when wifi_ssid is set)."
         },
         "format": {
          "type": "string",
          "enum": [
           "png",
           "svg"
          ],
          "default": "png",
          "description": "PNG (base64 data URL) or SVG markup. One of \"png\", \"svg\". Default \"png\"."
         },
         "size": {
          "type": "integer",
          "minimum": 64,
          "maximum": 2048,
          "default": 512,
          "description": "Image width/height in pixels. Range 64-2048. Default 512."
         },
         "margin": {
          "type": "integer",
          "minimum": 0,
          "maximum": 16,
          "default": 2,
          "description": "Quiet-zone width in modules. Range 0-16. Default 2."
         },
         "error_correction": {
          "type": "string",
          "enum": [
           "L",
           "M",
           "Q",
           "H"
          ],
          "default": "M",
          "description": "Error-correction level: L 7%, M 15%, Q 25%, H 30%. One of \"L\", \"M\", \"Q\", \"H\". Default \"M\"."
         },
         "dark": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "default": "#000000",
          "description": "Foreground colour as #rrggbb. Default \"#000000\"."
         },
         "light": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "default": "#ffffff",
          "description": "Background colour as #rrggbb. Default \"#ffffff\"."
         },
         "wifi_ssid": {
          "type": "string",
          "description": "Wi-Fi network name; makes a join-network QR instead of text."
         },
         "wifi_password": {
          "type": "string",
          "description": "Wi-Fi password (with wifi_ssid; omit for open networks)."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "text": "https://example.com",
        "format": "svg",
        "size": 256
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/hash_encode": {
   "post": {
    "operationId": "hash_encode",
    "summary": "Hash + encode/decode",
    "description": "Hash data (SHA-256/512, SHA3, Keccak-256, BLAKE2, MD5, SHA-1, RIPEMD-160, HMAC) and convert between utf8, hex, base64, base64url and base58 — exact, in one call. Useful for signatures, content addressing, EVM selectors (keccak of a function signature), and decoding blobs agents are handed. Input can itself be hex/base64/base58.",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "input"
        ],
        "properties": {
         "input": {
          "type": "string",
          "x-raw": true,
          "description": "Data to hash or re-encode."
         },
         "input_encoding": {
          "type": "string",
          "enum": [
           "utf8",
           "hex",
           "base64",
           "base58"
          ],
          "default": "utf8",
          "description": "How the input string is encoded. One of \"utf8\", \"hex\", \"base64\", \"base58\". Default \"utf8\"."
         },
         "hashes": {
          "type": "array",
          "maxItems": 12,
          "items": {
           "type": "string"
          },
          "default": [
           "sha256",
           "keccak256"
          ],
          "description": "sha256, sha512, sha3-256, sha3-512, keccak256, blake2b512, blake2s256, md5, sha1, ripemd160. 0-12 items. Default [\"sha256\",\"keccak256\"]."
         },
         "hmac_key": {
          "type": "string",
          "description": "if set, HMAC instead of plain hash (utf8 key)"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "input": "transfer(address,uint256)",
        "hashes": [
         "keccak256",
         "sha256"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/json_schema_validate": {
   "post": {
    "operationId": "json_schema_validate",
    "summary": "JSON Schema validator",
    "description": "Validate JSON data against a JSON Schema (draft-07/2019-09/2020-12, formats like email/uri/date-time) and get every error with its exact path — check tool I/O before acting on it. Ajv, strict about types, all errors reported. Pass data and schema as JSON values (or JSON strings).",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "data",
         "schema"
        ],
        "properties": {
         "data": {
          "description": "any JSON value (or a JSON string with parse_strings=true)"
         },
         "schema": {
          "type": "object",
          "description": "The JSON Schema to validate against."
         },
         "parse_strings": {
          "type": "boolean",
          "default": false,
          "description": "true = if data is a string, parse it as JSON first. Default false."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "data": {
         "name": "Ada",
         "age": -1,
         "email": "nope"
        },
        "schema": {
         "type": "object",
         "required": [
          "name",
          "age"
         ],
         "properties": {
          "name": {
           "type": "string"
          },
          "age": {
           "type": "integer",
           "minimum": 0
          },
          "email": {
           "type": "string",
           "format": "email"
          }
         }
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/cron_explain": {
   "post": {
    "operationId": "cron_explain",
    "summary": "Cron expression explain + next runs",
    "description": "Explain a cron expression in plain English and list its next N run times in any time zone — catch a schedule mistake before it fires at 3 am. Supports 5-field and 6-field (seconds) cron, ranges, steps, L/W/#, and nicknames (@daily, @hourly…).",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "expression"
        ],
        "properties": {
         "expression": {
          "type": "string",
          "description": "Cron expression, 5 fields (or 6 with seconds), e.g. \"*/15 9-17 * * 1-5\"."
         },
         "tz": {
          "type": "string",
          "default": "UTC",
          "description": "IANA time zone for the next-run times. Default \"UTC\"."
         },
         "count": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 5,
          "description": "How many upcoming run times to list. Range 1-50. Default 5."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "expression": "*/15 9-17 * * 1-5",
        "tz": "America/New_York",
        "count": 4
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/markdown_convert": {
   "post": {
    "operationId": "markdown_convert",
    "summary": "Markdown ⇄ HTML",
    "description": "Convert Markdown to clean HTML (GitHub-flavoured: tables, task lists, fenced code) or HTML back to Markdown. marked for md→html, Turndown for html→md. Scripts/styles are dropped on html→md.",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "input"
        ],
        "properties": {
         "input": {
          "type": "string",
          "x-raw": true,
          "description": "Markdown or HTML to convert."
         },
         "to": {
          "type": "string",
          "enum": [
           "html",
           "markdown"
          ],
          "default": "html",
          "description": "Target format. One of \"html\", \"markdown\". Default \"html\"."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "input": "# Hello\n\n| a | b |\n|---|---|\n| 1 | 2 |\n\n- [x] done",
        "to": "html"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/text_diff": {
   "post": {
    "operationId": "text_diff",
    "summary": "Text diff",
    "description": "Diff two texts: unified diff (patch format), a line/word-level change list, and similarity % — compare versions of a doc, config or code. jsdiff. mode=lines gives a unified patch; mode=words gives word-level changes for prose.",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "a",
         "b"
        ],
        "properties": {
         "a": {
          "type": "string",
          "x-raw": true,
          "description": "Original text."
         },
         "b": {
          "type": "string",
          "x-raw": true,
          "description": "Changed text."
         },
         "mode": {
          "type": "string",
          "enum": [
           "lines",
           "words"
          ],
          "default": "lines",
          "description": "Diff granularity. One of \"lines\", \"words\". Default \"lines\"."
         },
         "context": {
          "type": "integer",
          "minimum": 0,
          "maximum": 20,
          "default": 3,
          "description": "Unchanged lines of context around each change in the patch. Range 0-20. Default 3."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "a": "rate limit: 10/min\nretries: 2\n",
        "b": "rate limit: 120/min\nretries: 2\ntimeout: 30s\n"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/unit_convert": {
   "post": {
    "operationId": "unit_convert",
    "summary": "Unit converter",
    "description": "Convert between units of length, mass, volume, temperature, speed, area, time, data size, energy, power, pressure, frequency and more — or list every unit a value converts to. Exact conversion tables (convert-units). Use abbreviations: m, km, mi, ft, kg, lb, oz, l, gal, C, F, K, km/h, mph, knot, B, KB, MB, GB (binary, 1 GB = 1024 MB), J, kWh, W, Pa, bar, psi, Hz…",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "value",
         "from"
        ],
        "properties": {
         "value": {
          "type": "number",
          "description": "Number to convert."
         },
         "from": {
          "type": "string",
          "description": "Source unit, e.g. \"mi\", \"kg\", \"degF\", \"GB\"."
         },
         "to": {
          "type": "string",
          "description": "omit to get every compatible unit"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "value": 100,
        "from": "km/h",
        "to": "mph"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/jwt_decode": {
   "post": {
    "operationId": "jwt_decode",
    "summary": "JWT decoder",
    "description": "Decode a JSON Web Token's header and claims, show issued/expiry times in plain dates and whether it has expired — optionally verify an HS256/384/512 signature with a secret. Decoding does not need the key. Never paste production secrets into third-party tools you do not trust; verification here is local and nothing is stored or logged.",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "token"
        ],
        "properties": {
         "token": {
          "type": "string",
          "description": "The JWT (three base64url parts). The signature is not verified."
         },
         "secret": {
          "type": "string",
          "description": "optional HMAC secret to verify HS* signatures"
         }
        },
        "additionalProperties": false
       },
       "example": {
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGYiLCJpYXQiOjE3OTAwMDAwMDAsImV4cCI6MTc5MDAwMzYwMH0.kS2XSeH9sgBX7w0Zm6D7g8Eo3HjQyGAJk1S1vXbFpXE"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/random_gen": {
   "post": {
    "operationId": "random_gen",
    "summary": "Secure random + IDs",
    "description": "Cryptographically secure randomness: UUID v4/v7, passwords, API-key-style tokens, integers in a range, dice, coin flips, or a fair shuffle / pick from a list. Node's CSPRNG. Output is generated fresh per call and never stored or logged.",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "kind": {
          "type": "string",
          "enum": [
           "uuid4",
           "uuid7",
           "password",
           "token",
           "int",
           "shuffle",
           "pick",
           "coin",
           "dice"
          ],
          "default": "uuid4",
          "description": "What to generate. One of \"uuid4\", \"uuid7\", \"password\", \"token\", \"int\", \"shuffle\", \"pick\", \"coin\", \"dice\". Default \"uuid4\"."
         },
         "count": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 1,
          "description": "How many values to generate. Range 1-100. Default 1."
         },
         "length": {
          "type": "integer",
          "minimum": 4,
          "maximum": 256,
          "default": 20,
          "description": "Length for passwords and tokens. Range 4-256. Default 20."
         },
         "min": {
          "type": "integer",
          "default": 1,
          "description": "Lowest integer (kind=int or dice sides). Default 1."
         },
         "max": {
          "type": "integer",
          "default": 100,
          "description": "Highest integer (kind=int). Default 100."
         },
         "items": {
          "type": "array",
          "maxItems": 1000,
          "items": {
           "type": "string"
          },
          "description": "List to shuffle or pick from (kind=shuffle or pick). 0-1000 items."
         },
         "symbols": {
          "type": "boolean",
          "default": true,
          "description": "Include symbols in passwords. Default true."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "kind": "password",
        "count": 2,
        "length": 24
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/text_stats": {
   "post": {
    "operationId": "text_stats",
    "summary": "Text stats + token estimate",
    "description": "Count characters, words, sentences, lines and paragraphs, estimate LLM tokens, reading time and readability (Flesch), and pull out every URL, email, @handle, #tag, number and crypto address. Token count is an estimate (~4 characters per token for English; code and non-Latin scripts differ). Extraction uses strict patterns; EVM addresses are checksum-validated.",
    "tags": [
     "Utility Cerebellum"
    ],
    "x-price-usd": 0,
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "text"
        ],
        "properties": {
         "text": {
          "type": "string",
          "x-raw": true,
          "description": "Text (or a URL when extract=true) to analyse."
         },
         "extract": {
          "type": "boolean",
          "default": true,
          "description": "true = if text is a URL, fetch the page and analyse its readable text. Default true."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "text": "Solana processed 3,000 transactions a second today. Read more at https://example.com — or ask @someone. #solana"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     }
    }
   }
  },
  "/hub/api/v1/tools/bundle_forensics": {
   "post": {
    "operationId": "bundle_forensics",
    "summary": "Bundle forensics + rug guard",
    "description": "Who bundled a Solana pump.fun launch: every block-0 wallet labelled sniper bot / bundle / dev-linked, supply bought and still held, holders who got tokens by transfer, serial-dev check, top-10 concentration, RugCheck — plus a back-tested skip/pass verdict. The rug guard A.U.G.U.R snipers use before every buy. Skip rules were tested on 2,221 real caller calls (held-out: stop-outs 10%→5%, rugs 16%→11%): creator launched another coin in the prior 24 h; top-10 wallets >35%; block-0 wallets that also bundled this creator's earlier launches; block-0 buys >20% of supply. Extra flags: RugCheck danger risks, insider wallets >15%, and >10% held by wallets that never bought on the curve (tokens moved in by transfer, the layered-bundle pattern of launch tools like Proxima). \"ok:true\" means no red flags were found, not that the coin is safe.",
    "tags": [
     "Forensics Lobe"
    ],
    "x-price-usd": 0.003,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "mint"
        ],
        "properties": {
         "mint": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "Solana token mint (pump.fun launches get the full bundle view) Base58 Solana address, 32-44 chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "mint": "J8yXtgS6woDh5x2pyaSYdKCpdgt7uVqRtwcZk6eUpump"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/bundler_profile": {
   "post": {
    "operationId": "bundler_profile",
    "summary": "Bundler wallet profile",
    "description": "Is this Solana wallet a bundler? Every pump.fun launch it bought in the first 2 slots over the last 10 days, which creators it keeps bundling for, and whether it is a mass sniper bot or a dev's private bundle wallet. From our block-0 registry of every pump.fun launch (non-creator buys in slots 0–1 after creation). kind: \"sniper bot\" (≥50 launches in 7 days, buys everything), \"dev wallet\" (most of its block-0 buys are on one or two creators' coins — a private bundle wallet), \"bundler\", or \"not seen\". Use it on wallets bundle_forensics lists, or on any wallet you are about to copy.",
    "tags": [
     "Forensics Lobe"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "wallet"
        ],
        "properties": {
         "wallet": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "Solana wallet. Base58 Solana address, 32-44 chars."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25,
          "description": "Range 1-100. Default 25."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "wallet": "6dnHfCbAyDg1U3cuY6ZNNEt3FufdLnCkLEqLShy1VmoR"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/creator_launches": {
   "post": {
    "operationId": "creator_launches",
    "summary": "Creator launch history + bundles",
    "description": "Every pump.fun coin a Solana wallet created in the last 10 days, how many graduated, and the wallets that bundle its launches again and again (its private bundle crew). Serial launchers (more than one coin a day) are the strongest rug signal in our tests: calls on coins whose creator launched another coin in the prior 24 h averaged −11% vs −5% after costs. Repeat block-0 wallets across a creator's launches are its own bundle wallets.",
    "tags": [
     "Forensics Lobe"
    ],
    "x-price-usd": 0.002,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.002"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "creator"
        ],
        "properties": {
         "creator": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "creator (dev) wallet. Base58 Solana address, 32-44 chars."
         },
         "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25,
          "description": "Range 1-100. Default 25."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "creator": "6jnpTs6TYkd8w1PYqRVkQaYpPfzyGN9Vxz63AZr7wtoy"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/tools/evm_bundle_forensics": {
   "post": {
    "operationId": "evm_bundle_forensics",
    "summary": "EVM launch + bundle forensics",
    "description": "Who bundled an EVM token launch (Base, BSC, Ethereum, Arbitrum, Robinhood and 13 more): creation-tx airdrops to fake holders, first-seconds buys, scripted fixed-cadence buying, fresh-wallet and transfer-only holders, dev holdings, exchange-labelled holders, GoPlus contract flags — plus a skip/pass verdict. Replays every ERC-20 Transfer of the token from its first mint on the public RPC, so for young tokens (Base ~4 days, BSC ~6 h of history in budget) holder balances, buys and wallet-to-wallet hand-offs are exact. Launchpads (Four.meme, Uniswap v4 PoolManager, v2/v3 pairs from Dexscreener) are detected; vault/locker contracts that never bought are kept out of the wallet rules, while contracts that DID buy (smart wallets, bundler contracts) count as wallets. Older tokens fall back to GoPlus holders with 527 exchange wallets named. Skip rules: GoPlus honeypot/tax>10%/owner powers; top-10 wallets >35%; first ~2 s of buys >20%; >10% held by wallets that never bought; creation tx airdropping ≥10 wallets or >10%; scripted buying (≥5 buys ≥1% at a regular cadence taking ≥15%); fresh wallets / buyer contracts >15%. Heuristic on EVM (mirrors the back-tested Solana guard); \"pass\" is not a safety promise.",
    "tags": [
     "Forensics Lobe"
    ],
    "x-price-usd": 0.005,
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {
        "networks": [
         "solana",
         "base"
        ],
        "assets": [
         "USDC",
         "SOL"
        ],
        "payTo": {
         "solana": "RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R",
         "base": "0x538d1D8257C6001d7e432c90C6abc658948d7441"
        }
       }
      }
     ]
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "chain",
         "token"
        ],
        "properties": {
         "chain": {
          "type": "string",
          "enum": [
           "ethereum",
           "base",
           "arbitrum",
           "optimism",
           "polygon",
           "bsc",
           "avalanche",
           "linea",
           "blast",
           "scroll",
           "gnosis",
           "sonic",
           "unichain",
           "mantle",
           "berachain",
           "hyperevm",
           "monad",
           "robinhood"
          ],
          "default": "base",
          "description": "EVM chain: ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, linea, blast, scroll, gnosis, sonic, unichain, mantle, berachain, hyperevm, monad, robinhood. One of \"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\", \"bsc\", \"avalanche\", \"linea\", \"blast\", \"scroll\", \"gnosis\", \"sonic\", \"unichain\", \"mantle\", \"berachain\", \"hyperevm\", \"monad\", \"robinhood\". Default \"base\"."
         },
         "token": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{40}$",
          "description": "ERC-20 token contract address. 0x + 40 hex chars."
         }
        },
        "additionalProperties": false
       },
       "example": {
        "chain": "bsc",
        "token": "0xfe6b7c083fed0e69974dd7840f018acf5c107777"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "ok: {ok, tool, ms, billing, data}"
     },
     "400": {
      "description": "invalid arguments"
     },
     "402": {
      "description": "Payment Required (x402 v1 body + v2 PAYMENT-REQUIRED header; USDC or SOL on Solana)"
     }
    }
   }
  },
  "/hub/api/v1/watches": {
   "post": {
    "operationId": "create_alert",
    "summary": "Push alerts: watch a pump.fun mint or a wallet, get signed webhooks",
    "security": [
     {
      "creditKey": []
     }
    ],
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "mint": {
          "type": "string"
         },
         "wallet": {
          "type": "string"
         },
         "events": {
          "type": "array",
          "items": {
           "type": "string",
           "enum": [
            "dev_sell",
            "graduated",
            "big_buy",
            "big_sell",
            "smart_buy",
            "wallet_trade",
            "wallet_launch"
           ]
          }
         },
         "min_sol": {
          "type": "number"
         },
         "url": {
          "type": "string",
          "format": "uri"
         },
         "ttl_hours": {
          "type": "integer",
          "maximum": 72
         }
        },
        "required": [
         "url"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "{watch_id, secret, …}"
     }
    }
   },
   "get": {
    "operationId": "list_alerts",
    "summary": "Your alerts",
    "security": [
     {
      "creditKey": []
     }
    ],
    "responses": {
     "200": {
      "description": "watches"
     }
    }
   }
  },
  "/hub/api/v1/listings": {
   "post": {
    "operationId": "submit_tool",
    "summary": "List your own tool on the exchange (85% revenue share)",
    "security": [],
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "name",
         "summary",
         "endpoint",
         "price_usd",
         "payout_wallet"
        ],
        "properties": {
         "name": {
          "type": "string"
         },
         "summary": {
          "type": "string"
         },
         "description": {
          "type": "string"
         },
         "endpoint": {
          "type": "string",
          "format": "uri"
         },
         "price_usd": {
          "type": "number"
         },
         "payout_wallet": {
          "type": "string"
         },
         "input_schema": {
          "type": "object"
         },
         "example": {
          "type": "object"
         },
         "contact": {
          "type": "string"
         }
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "pending listing"
     }
    }
   },
   "get": {
    "operationId": "list_community_tools",
    "summary": "Approved community tools",
    "security": [],
    "responses": {
     "200": {
      "description": "listings"
     }
    }
   }
  },
  "/hub/api/v1/tools": {
   "get": {
    "operationId": "list_tools",
    "summary": "Tool catalog",
    "security": [],
    "responses": {
     "200": {
      "description": "catalog"
     }
    }
   }
  },
  "/hub/api/v1/keys": {
   "post": {
    "operationId": "create_key",
    "summary": "Create a prepaid credit key",
    "security": [],
    "responses": {
     "200": {
      "description": "{key, key_id}"
     }
    }
   }
  },
  "/hub/api/v1/credits/invoice": {
   "post": {
    "operationId": "credit_invoice",
    "summary": "Invoice to top up credits in SOL or USDC",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "usd": {
          "type": "number",
          "minimum": 0.1
         }
        }
       }
      }
     }
    },
    "security": [
     {
      "creditKey": []
     }
    ],
    "responses": {
     "200": {
      "description": "invoice with Solana Pay links"
     }
    }
   }
  }
 },
 "components": {
  "securitySchemes": {
   "creditKey": {
    "type": "apiKey",
    "in": "header",
    "name": "Authorization",
    "description": "Bearer hk_… prepaid credit key (POST /hub/api/v1/keys). Paid tools also accept it instead of x402."
   }
  }
 }
}