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.
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.