Your REST API is already the tool.
RCP is a lightweight, open protocol for exposing REST endpoints as AI-callable tools — no protocol server, no persistent connection. A server publishes a manifest; a client fetches it and calls the endpoints directly.
$ npm i rcp-sdkThe shape of it
Two roles, no third “host” layer, no persistent connection — every interaction is a plain, stateless HTTP request. Discovery and execution even hit different places: the manifest is only ever a directory, and the model’s tool call goes straight to the tool’s own URL.
- 1Discovery
The client fetches the manifest URL once per session. The server returns its rcpVersion, auth mode, and tool list.
- 2Selection
The model sees only exposedParams — anything bound to a resolver was already stripped from the schema.
- 3Execution
The client fills resolver-bound params from ctx, renders the request, and calls the tool's own URL directly.
When it’s not MCP
If MCP is the right fit when you need rich, stateful capabilities, RCP is for the much more common case: you already have a REST API, and you just want an AI application to call some of its endpoints as tools.
| RCP | MCP | |
|---|---|---|
| Connection | Stateless HTTP request | Persistent session |
| Server | Your existing REST API | A dedicated protocol server |
| Best fit | You already have endpoints to expose | Rich, stateful capabilities |
Params the model never sees
A resolver-bound param never reaches the model — it’s removed from the tool schema at discovery time, not just hidden by convention. Use it for a tenant ID, an internal user ID, anything the model shouldn’t supply or even see.
Read more about resolversSDKs
The reference implementation. Client and server, same package.
More languages land the same way — self-contained, own package manifest, own tests.
Popular guides
Expose REST API to AI in 5 minutes
Install rcp-sdk, defineTool(), serve manifest, discover with createRcpClient().
RCP vs MCP — lightweight alternative
When stateless HTTP beats a dedicated MCP server.
Build AI agent with OpenAI tools
Via OpenAI SDK — rcpToolsToOpenAiTools() to ChatCompletionTool[].
Build AI agent with LangChain
DynamicStructuredTool + LangGraph + MultiServerRcpClient.
Build AI agent with Gemini
Google GenAI function calling for Gemini 2.5 — Interactions + classic.
RCP manifest format
GET /manifest — JSON directory of AI tools.
Secure tenant isolation — killer feature
Params the model never sees — stop prompt injection from leaking tenant data.