Connect Fodda

Streamable HTTP endpoints for Claude, ChatGPT, Google, Copilot, Grok, and IDEs. Paste the URL, authenticate, and get back to work.

Get your connection token or API key at app.fodda.ai/connections →

Three Ways to Authenticate

  • Sign-in (OAuth) (Recommended Default): For any client supporting modern OAuth / Dynamic Client Registration (Claude, ChatGPT, Perplexity). Leave client ID/secret blank; sign in with your Fodda account when your client prompts you.
  • Connection Token (Tokenized URL): For clients that do not support OAuth or custom headers (Notion, legacy tools). The opaque token in the URL is your credential. Keep this URL secret.
  • API Key (Developers & Headers): For developer tools, REST API callers, scripts, and clients accepting custom headers (Cursor, Claude Code, Vertex AI, Python/Node). Use Authorization: Bearer sk_live_... or X-API-Key.

Supported Clients & Environments

Client Endpoint to Paste Auth Method Guide
Claude https://mcp.fodda.ai/mcp OAuth Setup Guide →
ChatGPT Install in ChatGPT OAuth Setup Guide →
Google https://mcp.fodda.ai/mcp Bearer API Key Setup Guide →
Microsoft Copilot https://mcp.fodda.ai/copilot OAuth or API Key Setup Guide →
Grok Use a Fodda bot template OAuth Setup Guide →
Meta Muse https://mcp.fodda.ai/mcp Bearer API Key Setup Guide →
Developer Tools https://mcp.fodda.ai/mcp OAuth or API Key Setup Guide →
Perplexity https://mcp.fodda.ai/mcp OAuth Docs →
Notion https://mcp.fodda.ai/c/<CONNECTION_TOKEN> Connection Token Docs →

Automated HTTP 402 Tollbooth & Micropayments

Query verified graphs with zero human onboarding. Autonomous agents can catch the $0.50 HTTP 402 challenge and settle in-flight.

Python Example (Requests)

import requests

def query_fodda(endpoint_url, payload, get_spt_token_fn=None, api_key=None):
    headers = {"Content-Type": "application/json"}
    if api_key:
        headers["Authorization"] = f"Bearer {api_key}"

    response = requests.post(endpoint_url, json=payload, headers=headers)
    if response.status_code == 402 and get_spt_token_fn:
        spt_token = get_spt_token_fn()
        headers["Authorization"] = f"Bearer {spt_token}"
        retry_response = requests.post(endpoint_url, json=payload, headers=headers)
        return retry_response.json()
        
    response.raise_for_status()
    return response.json()

Node.js / TypeScript Example (Fetch API)

async function queryFodda(endpointUrl, payload, getSptTokenFn, apiKey) {
  const headers = { 'Content-Type': 'application/json' };
  if (apiKey) headers['Authorization'] = `Bearer ${apiKey}`;

  let response = await fetch(endpointUrl, {
    method: 'POST',
    headers,
    body: JSON.stringify(payload)
  });

  if (response.status === 402 && getSptTokenFn) {
    const sptToken = await getSptTokenFn();
    headers['Authorization'] = `Bearer ${sptToken}`;
    const retryResponse = await fetch(endpointUrl, {
      method: 'POST',
      headers,
      body: JSON.stringify(payload)
    });
    return await retryResponse.json();
  }

  if (!response.ok) {
    throw new Error(`Fodda API Error: ${response.status} ${response.statusText}`);
  }

  return await response.json();
}

Payment Rails Supported

  • Stripe Shared Payment Tokens (SPT): Pass Authorization: Bearer spt_... or X-SPT-Token.
  • x402 Micro-settlement: Pass X-402-Payment: {"tx_hash": "...", "network": "base"} (USDC on Base/Polygon).
  • Standard API Keys: Pass Authorization: Bearer <api_key>.

Machine discovery definitions: api.fodda.ai/.well-known/agent.json and api.fodda.ai/llms.txt.

Universal Fallback

Any other MCP client: paste https://mcp.fodda.ai/mcp and sign in. Can't do OAuth? Use your connection-token URL. For programmatic access, see our REST API documentation at /api.