Developers

Quickstart

Endpoint, headers and the shortest path from a key to a first answer.

Ikrames exposes an MCP server so an agent can work inside your workspace: read what is there, spend credits to generate, and fetch the result.

It is built for programs, not for people. Everything here needs an API key, and you make one yourself — see Getting a key. If you are looking for the app itself, start at the overview.

One key belongs to exactly one workspace. Every tool is scoped to that workspace, and the workspace is never an argument you pass — so it is not something a caller can get wrong.

Connecting

Endpointhttps://ikrames.com/api/mcp
TransportStreamable HTTP (POST)
Protocol2025-06-18
Sessionnone — every request carries its own key

Two headers are required on every call. The protocol header is not optional: without it the transport rejects the request before your key is ever read.

Authorization: Bearer <YOUR_KEY>
Mcp-Protocol-Version: 2025-06-18

Claude Desktop

{
  "mcpServers": {
    "ikrames": {
      "type": "http",
      "url": "https://ikrames.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_KEY>"
      }
    }
  }
}

Cursor

Same shape, in ~/.cursor/mcp.json for every project, or .cursor/mcp.json inside one.

{
  "mcpServers": {
    "ikrames": {
      "type": "http",
      "url": "https://ikrames.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_KEY>"
      }
    }
  }
}

The project-local file sits inside your repository. A key pasted there is a key one git add . away from being public — put it in the per-user file, or keep the project file out of version control.

curl

curl -s https://ikrames.com/api/mcp \
  -H "Authorization: Bearer $IKRAMES_KEY" \
  -H "Content-Type: application/json" \
  -H "Mcp-Protocol-Version: 2025-06-18" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0", "id": 1, "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": { "name": "curl", "version": "1" }
    }
  }'
{
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": { "tools": { "listChanged": true } },
    "serverInfo": { "name": "ikrames", "version": "1.0.0" }
  },
  "jsonrpc": "2.0", "id": 1
}

Responses arrive as either plain JSON or a single Server-Sent Event frame, so send Accept: application/json, text/event-stream and be ready to strip a data: prefix.

Was this helpful?