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
| Endpoint | https://ikrames.com/api/mcp |
| Transport | Streamable HTTP (POST) |
| Protocol | 2025-06-18 |
| Session | none — 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-18Claude 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.