---
title: "Endpoint MCP — JSON-RPC (initialize, tools/list, tools/call)"
method: POST
path: "/mcp"
tags: ["MCP"]
---

# Endpoint MCP — JSON-RPC (initialize, tools/list, tools/call)

`POST /mcp`

## Request

- Base URL: `https://api.tokolaku.id`
- URL: `https://api.tokolaku.id/mcp`
- Auth: HTTP bearer

Satu endpoint untuk seluruh protokol MCP (Streamable HTTP, **stateless** — tiap POST independen, tanpa session). Klien MCP standar (Claude Code/Desktop, SDK MCP) menangani protokol ini otomatis — cukup daftarkan URL + header `x-api-key`.

Tools v1 (tampil sesuai scope key): `send_message` (messages:write), `generate_bot_reply` (chat:write), `list_channels` (channels:read), `list_conversations` + `get_conversation` (inbox:read), `list_products` (products:read), `get_subscription` (subscription:read).

Hanya **secret key**; publishable key ditolak 403. `GET`/`DELETE` ke endpoint ini dijawab 405. Sertakan header `Accept: application/json, text/event-stream`.

## Request body

- McpJsonRpcRequest
  - `jsonrpc` '2.0', required
  - `id` union: ID request (angka/string). Absen = notification.
    - integer
    - string
  - `method` string, required: Method MCP: `initialize`, `tools/list`, `tools/call`, dst.
  - `params` object

## Response `200`

Respons JSON-RPC (error level tool/protokol juga dibungkus 200)

- McpJsonRpcResponse
  - `jsonrpc` '2.0', required
  - `id` union
    - integer
    - string
  - `result` object
  - `error` object: Error level JSON-RPC (tetap HTTP 200).
    - `code` integer
    - `message` string

## Other responses

- `401`: API key tak ada / tidak valid
- `403`: Publishable key ditolak — MCP hanya menerima secret key
- `405`: Method selain POST
- `429`: Rate limit / kuota bulan ini habis

---

[API](https://skmtc.dev/tokolaku/apis/tokolaku-engine-api.md) · [All operations](https://skmtc.dev/tokolaku/apis/tokolaku-engine-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tokolaku/apis/tokolaku-engine-api/revisions/5d95caea34ef?raw)
