Hackathon Quickstart
A single copy-paste reference for the facts you need in the first thirty minutes: where the MCP endpoint is, which chains are supported, which USDC address and faucet to use, what the two API key types are for, and the rate limits. Each section links to its full reference page.
1. Connect the MCP endpoint
The hosted MCP server is the fastest way to drive KeeperHub from an AI agent.
claude mcp add --transport http keeperhub https://app.keeperhub.com/mcpRun /mcp in Claude Code to complete OAuth in the browser. For headless or CI
environments, pass an organization API key instead:
claude mcp add --transport http keeperhub https://app.keeperhub.com/mcp \
--header "Authorization: Bearer kh_your_key_here"Every listed marketplace workflow is also reachable as its own typed MCP server
at https://app.keeperhub.com/mcp/w/<slug>. See the MCP Server
reference for the full tool list and per-workflow details.
The endpoint URL is also shown, with a copy button, in the dashboard under Settings -> API Keys.
2. Pick a key type
KeeperHub has two key systems. They are not interchangeable.
| Prefix | Scope | Managed at | Use for |
|---|---|---|---|
kh_ | Organization | /api/keys | REST API, MCP server, Claude Code plugin |
wfb_ | User | /api/api-keys | Webhook trigger authentication |
For programmatic API and MCP access, use an organization (kh_) key. Full
details: API Keys.
3. Supported chains
Status reflects support maturity: stable chains are production-ready; experimental chains are accepted but may behave unreliably (for example, broadcasts can hang) and should not be used for production writes without opting in explicitly.
Start on a testnet. Fund the wallet with native gas first, then test USDC.
Testnets (recommended for hacking)
| Network | chainId | USDC | Faucets | Status |
|---|---|---|---|---|
| Ethereum Sepolia | 11155111 | 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238 | ETH , USDC | stable |
| Base Sepolia | 84532 | 0x036CbD53842c5426634e7929541eC2318f3dCF7e | ETH , USDC | stable |
Mainnets
| Network | chainId | USDC | Status |
|---|---|---|---|
| Ethereum | 1 | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | stable |
| Base | 8453 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | stable |
| Arbitrum One | 42161 | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 | stable |
| Optimism | 10 | 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85 | stable |
| Polygon | 137 | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | stable |
Experimental
| Network | chainId | Status |
|---|---|---|
| 0G | 16661 | experimental |
| 0G Galileo (testnet) | 16602 | experimental |
The live source of truth for chains is GET /api/chains; agents can read the
same list (including per-chain status) from the list_action_schemas MCP
tool. Faucet links are third-party and may change. See the full
Chains reference for chain-name aliases and ABI fetching.
4. Rate limits
| Context | Limit |
|---|---|
| Authenticated requests | 100 / minute |
| Unauthenticated requests | 10 / minute |
| Direct execution (per API key) | 60 / minute |
Rate-limited requests return 429 with a Retry-After header. See
Direct Execution for spending caps.
5. Sandbox
The Code action runs untrusted JavaScript in an isolated node:vm sandbox with
outbound SSRF protection. See Code Plugin for what is allowed
and blocked.