MCP server

Connect Claude, ChatGPT, Cursor or any MCP client to mcp.instadata.dev and every endpoint becomes a tool.

https://mcp.instadata.dev is a remote MCP server over streamable HTTP. It supports OAuth 2.1 with PKCE, so clients that can sign in need no key, and a bearer key for clients that only take headers.

{
  "mcpServers": {
    "instadata": { "url": "https://mcp.instadata.dev" }
  }
}

In Claude Code:

claude mcp add --transport http instadata https://mcp.instadata.dev

With a key instead of OAuth:

{
  "mcpServers": {
    "instadata": {
      "url": "https://mcp.instadata.dev",
      "headers": { "Authorization": "Bearer ik_live_..." }
    }
  }
}

Tools

The server exposes capability tools for the common reads (profile, posts, transcript, comments, search and so on), plus list_endpoints, which is free and calls nothing upstream, and call_endpoint, which runs any path on the sheet. The live list with descriptions is on the MCP page and in the server card.

Each tool’s description carries its parameters, its unit and its price, so a model can pick the right call without reading docs. Tool calls are billed as normal usage from the same balance; failed calls are free. Every call shows up in the dashboard logs with its request id.

Per-client setup

Claude (claude.ai, desktop, Code), ChatGPT developer-mode connectors, Cursor, Windsurf, VS Code, Gemini CLI and the OpenAI Agents SDK are covered on the MCP page, including one-click installs for Cursor and VS Code.

Function calling without MCP

Any endpoint wraps as a tool in a few lines:

def instagram_profile(handle: str) -> dict:
    """Public profile for an Instagram handle: followers, bio, links, verification."""
    r = httpx.get("https://api.instadata.dev/v1/instagram/channel-stats",
                  params={"handle": handle},
                  headers={"Authorization": f"Bearer {KEY}"}, timeout=120)
    r.raise_for_status()
    return r.json()["data"]

Use format=text on transcripts headed into a prompt and fields= to keep tool results small.