Agent Quickstart  ·  Zero Friction

Octodamus
for AI Agents

Live demo. Free key. Copy-paste framework schemas. The fastest path from zero to live market intelligence in your agent — under 5 minutes.

Free 500 req/day MCP on Smithery x402 Autonomous LangChain CrewAI AutoGen OpenAI Tools
Get Free Key GitHub Examples
Live Demo
Octodamus API — Live · No key required
// Hit a button above to see live data from Octodamus...
No key needed for /v2/ask (100/day free) and /v2/demo.  ·  Get free key for /v2/agent-signal.

Framework Tool Schemas

Copy-paste ready. Works out of the box — just add your API key.

import httpx

OCTO_KEY = "octo_your_key"  # free: https://api.octodamus.com/v1/signup

# Primary signal endpoint — poll every 15 minutes
signal = httpx.get(
    "https://api.octodamus.com/v2/agent-signal",
    headers={"X-OctoData-Key": OCTO_KEY},
).json()

print(signal["action"])      # BUY | SELL | HOLD | WATCH
print(signal["confidence"])  # high | medium | low
print(signal["reasoning"])   # plain-text explanation

# Ask a question — free, no key needed
answer = httpx.post(
    "https://api.octodamus.com/v2/ask?q=What+is+your+read+on+BTC",
).json()["answer"]

# Inject market context into your LLM system prompt
brief = httpx.get(
    "https://api.octodamus.com/v2/brief",
    headers={"X-OctoData-Key": OCTO_KEY},
).json()["brief"]
system_prompt = f"Live market context: {brief}\n\n{your_base_prompt}"
from langchain.tools import tool
import httpx

OCTO_KEY = "octo_your_key"  # free: https://api.octodamus.com/v1/signup

@tool
def get_market_signal(query: str = "") -> str:
    """Get the current crypto market signal from Octodamus Oracle.
    Returns BUY/SELL/HOLD action, confidence, Fear & Greed index,
    BTC trend, and top Polymarket edge play. Call every 15 minutes."""
    d = httpx.get(
        "https://api.octodamus.com/v2/agent-signal",
        headers={"X-OctoData-Key": OCTO_KEY},
    ).json()
    return (
        f"Action: {d['action']} | Confidence: {d['confidence']} | "
        f"F&G: {d['fear_greed'].get('value')} | BTC: {d['btc'].get('trend')} | "
        f"Reasoning: {d['reasoning']}"
    )

@tool
def ask_octodamus(question: str) -> str:
    """Ask Octodamus any market question. Grounded in live data. Free: 100/day."""
    return httpx.post(
        f"https://api.octodamus.com/v2/ask?q={question}"
    ).json().get("answer", "")
from crewai_tools import tool
import httpx

OCTO_KEY = "octo_your_key"  # free: https://api.octodamus.com/v1/signup

@tool("Octodamus Market Signal")
def octodamus_signal(action: str = "get") -> dict:
    """Fetch current crypto market signal from Octodamus Oracle.
    Returns BUY/SELL/HOLD with confidence, Fear & Greed, BTC trend,
    and Polymarket edge plays. Use every 15 minutes for fresh data."""
    return httpx.get(
        "https://api.octodamus.com/v2/agent-signal",
        headers={"X-OctoData-Key": OCTO_KEY},
    ).json()

@tool("Ask Octodamus")
def octodamus_ask(question: str) -> str:
    """Ask Octodamus a market question. Returns AI answer grounded in
    live prices, oracle signals, and Polymarket positions. Free, no key."""
    return httpx.post(
        f"https://api.octodamus.com/v2/ask?q={question}"
    ).json().get("answer", "")
import httpx, openai

OCTO_KEY = "octo_your_key"  # free: https://api.octodamus.com/v1/signup

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_market_signal",
            "description": "Get current crypto market signal. Returns BUY/SELL/HOLD, Fear & Greed, BTC trend, Polymarket edges.",
            "parameters": {"type": "object", "properties": {}, "required": []},
        },
    },
    {
        "type": "function",
        "function": {
            "name": "ask_octodamus",
            "description": "Ask Octodamus any market question. Grounded in live data. Free, 100/day.",
            "parameters": {
                "type": "object",
                "properties": {"question": {"type": "string"}},
                "required": ["question"],
            },
        },
    },
]

def handle_tool_call(name, args):
    if name == "get_market_signal":
        return httpx.get(
            "https://api.octodamus.com/v2/agent-signal",
            headers={"X-OctoData-Key": OCTO_KEY},
        ).json()
    if name == "ask_octodamus":
        return httpx.post(
            f"https://api.octodamus.com/v2/ask?q={args['question']}"
        ).json().get("answer", "")

MCP Server

Connect any MCP-compatible agent in 30 seconds. No package to install.

# Claude Desktop / Claude Code — add to your MCP config
{
  "mcpServers": {
    "octodamus": {
      "url": "https://api.octodamus.com/mcp"
    }
  }
}

# Or connect via Smithery
# smithery.ai/server/octodamusai/market-intelligence

Tools available once connected: get_agent_signal, get_polymarket_edge, get_market_brief, get_all_data, buy_premium_api, buy_guide — and more.

x402 Autonomous Payments

Two modes: pay $0.01 per call with no account, or acquire a full API key autonomously.

Option A — Micro: $0.01 per call (no key needed)

Sign a $0.01 USDC EIP-3009 authorization on Base and send it as a header. No account, no subscription — response returned immediately.

import httpx

# Step 1: probe endpoint — receive 402 with payment details
r = httpx.get("https://api.octodamus.com/v2/agent-signal")
# r.status_code == 402
# r.json()["detail"]["micro_amount_usdc"]  -> 0.01
# r.json()["detail"]["micro_pay_to"]       -> treasury address

# Step 2: sign $0.01 USDC (10000 micro-units) EIP-3009 authorization
# using your wallet SDK (Coinbase AgentKit, CDP, ethers.js, viem...)
# amount = 10000  (USDC has 6 decimals: $0.01 = 10,000 units)

# Step 3: retry with signed authorization — data returned directly, no key
signal = httpx.get(
    "https://api.octodamus.com/v2/agent-signal",
    headers={"PAYMENT-SIGNATURE": your_signed_auth},
).json()

# Treasury:  0x5c6B3a3dAe296d3cef50fef96afC73410959a6Db
# USDC Base: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
# Network:   Base mainnet (eip155:8453)
# Amount:    10000 (= $0.01 USDC)

Option B — Subscribe: acquire API key autonomously

Agents with a funded Base wallet can acquire API keys without any human intervention.

import httpx

# Step 1: hit endpoint — receive 402 with payment instructions
r = httpx.get("https://api.octodamus.com/v1/subscribe?plan=trial")
# r.status_code == 402
# r.json()["detail"]["pay_to"]   -> treasury address
# r.json()["detail"]["amounts_usdc"] -> [5]
# r.json()["detail"]["step_1"]   -> sign EIP-3009 authorization

# Step 2: sign $5 USDC EIP-3009 authorization using your wallet SDK
# (Coinbase AgentKit, CDP Wallet SDK, ethers.js, viem, etc.)

# Step 3: retry with signed authorization
r2 = httpx.get(
    "https://api.octodamus.com/v1/subscribe?plan=trial",
    headers={"PAYMENT-SIGNATURE": your_signed_auth},
)
api_key = r2.json()["api_key"]  # live immediately — 10k req/day, 7 days

# Treasury:  0x5c6B3a3dAe296d3cef50fef96afC73410959a6Db
# USDC Base: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
# Network:   Base mainnet (eip155:8453)

Start in 60 Seconds

Free key — 500 req/day — all v2 endpoints — no card.

Get Free Key → GitHub Examples Full Docs