Give your chatbot, tutor, API or agent research-informed resets: short video experiences matched to how someone feels, guided breathing, guided reflections, brain tips with citations, and short guided stories. You connect once with a partner key. Your users never see a Reulay sign-in and don't need a Reulay account.
Request a pilot key: product@reulay.com
It works with any MCP client: the Anthropic and OpenAI APIs, the MCP SDKs, and agent frameworks.
https://mcp.reulay.com/partner/mcp (Streamable HTTP, stateless, POST only)Authorization: Bearer rp_... with your partner key. X-Reulay-Key: rp_... also works.X-Reulay-End-User: <your opaque id> header, or appended to the key as rp_<key>.<your opaque id>.recommend_experienceUp to 3 short video experiences for how the person feels, in their own words, with why each helps.
browse_libraryThe library, filtered by mindset (Calm, Focus, Somatic, Sublime and more), words or length.
start_experienceA link that plays the chosen experience in any browser.
suggest_resetA one-line reset offer for the moment: a breathing pattern and, with more time, a matching experience.
start_breathing_exerciseA guided breathing exercise (cyclic sighing, box, 4-7-8, coherent), 1, 2 or 5 minutes, as a markdown guide.
start_reflectionA short guided reflection for a difficult conversation or for self-doubt, one question at a time.
get_brain_tipA research-backed Brain Based Tip with its citation, or an Inspiration card, optionally on a topic.
list_journeysShort guided stories, each about one mindset.
start_journeyOne journey as a readable story with video links.
Every result is JSON in the text content (and in structuredContent), plus a short tip telling the model how to present it. Server instructions explain when to offer a reset; your system prompt can override them.
Partner keys don't reach anything tied to a person's own Reulay account, such as their mindset profile, sessions or the Cali coach. Those need the person's own Reulay sign-in through the Reulay connector. In-chat views (video player, cards, animated breathing) are off by default because most products can't render MCP Apps views. If yours can, ask for a key with views on.
Email product@reulay.com with your company name and what you're building. You'll get a key that starts with rp_.
Send your own id for the person: a database id or a hash, never an email or a name. We hash it on arrival and only use it to count distinct users for you. Where your client can set headers, use X-Reulay-End-User; where it can only set a token (the Anthropic MCP connector), append it to the key after a dot: rp_<key>.<your id>. Never put it in the URL: URLs end up in request logs, so requests with ?end_user= are refused. Up to 256 printable characters. Every result also ends with a short Reulay safety note (wellness, not medical care; crisis line). Keep it in what your model sees.
The MCP connector is a beta: send the mcp-client-2025-11-20 beta header (the current version when this was written; check Anthropic's MCP connector docs if it has moved on). Anthropic sends authorization_token as a Bearer token.
TypeScript
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic();
const response = await anthropic.beta.messages.create({
model: "claude-opus-5-5",
max_tokens: 16000,
betas: ["mcp-client-2025-11-20"],
mcp_servers: [
{
type: "url",
name: "reulay",
url: "https://mcp.reulay.com/partner/mcp",
// Your key, then a dot and your opaque id for the learner (optional).
authorization_token: `${process.env.REULAY_PARTNER_KEY}.${learnerId}`,
},
],
tools: [{ type: "mcp_toolset", mcp_server_name: "reulay" }],
messages: [{ role: "user", content: "I have my final exam in 20 minutes and I can't calm down." }],
});curl
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-client-2025-11-20" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 16000,
"mcp_servers": [{
"type": "url",
"name": "reulay",
"url": "https://mcp.reulay.com/partner/mcp",
"authorization_token": "'"$REULAY_PARTNER_KEY.learner-8f3a"'"
}],
"tools": [{ "type": "mcp_toolset", "mcp_server_name": "reulay" }],
"messages": [{ "role": "user", "content": "Give me a 2 minute reset before my presentation." }]
}'To offer only some tools, add "default_config": { "enabled": false } and turn tools on one by one under configs in the mcp_toolset entry.
TypeScript
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "gpt-5",
tools: [
{
type: "mcp",
server_label: "reulay",
server_url: "https://mcp.reulay.com/partner/mcp",
headers: {
Authorization: `Bearer ${process.env.REULAY_PARTNER_KEY}`,
"X-Reulay-End-User": learnerId,
},
require_approval: "never",
},
],
input: "I keep putting off my essay and I feel stuck.",
});Use any model you like. allowed_tools: ["recommend_experience", "start_experience"] limits what the model sees.
TypeScript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const client = new Client({ name: "my-tutor", version: "1.0.0" });
await client.connect(
new StreamableHTTPClientTransport(new URL("https://mcp.reulay.com/partner/mcp"), {
requestInit: {
headers: {
Authorization: `Bearer ${process.env.REULAY_PARTNER_KEY}`,
"X-Reulay-End-User": learnerId,
},
},
}),
);
const { tools } = await client.listTools();
const result = await client.callTool({
name: "recommend_experience",
arguments: { feeling: "anxious before my exam", maxMinutes: 5 },
});
console.log(result.structuredContent);Then hand tools to your model the way your framework expects, and pass its tool calls to client.callTool.
curl
curl https://mcp.reulay.com/partner/mcp \
-H "Authorization: Bearer $REULAY_PARTNER_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Reulay is wellness and mindset training. It is not medical care, diagnosis, treatment or therapy, and it shouldn't be presented as such. If someone may be in crisis, your product should point them to a crisis line or emergency services. The server's instructions tell the model the same.
Email product@reulay.com with your company name and what you're building. Same address for higher limits, views, or questions.