Reulay for partners

Add Reulay to your AI product in 5 minutes.

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

How it works

A standard remote MCP server

It works with any MCP client: the Anthropic and OpenAI APIs, the MCP SDKs, and agent frameworks.

Endpoint
https://mcp.reulay.com/partner/mcp (Streamable HTTP, stateless, POST only)
Auth
Authorization: Bearer rp_... with your partner key. X-Reulay-Key: rp_... also works.
End user
Optional: X-Reulay-End-User: <your opaque id> header, or appended to the key as rp_<key>.<your opaque id>.
Output
Text (JSON results plus short instructions for the model). Videos come back as links that play in any browser.

What you get

Nine tools for the hard moments

  • recommend_experience

    Up to 3 short video experiences for how the person feels, in their own words, with why each helps.

  • browse_library

    The library, filtered by mindset (Calm, Focus, Somatic, Sublime and more), words or length.

  • start_experience

    A link that plays the chosen experience in any browser.

  • suggest_reset

    A one-line reset offer for the moment: a breathing pattern and, with more time, a matching experience.

  • start_breathing_exercise

    A guided breathing exercise (cyclic sighing, box, 4-7-8, coherent), 1, 2 or 5 minutes, as a markdown guide.

  • start_reflection

    A short guided reflection for a difficult conversation or for self-doubt, one question at a time.

  • get_brain_tip

    A research-backed Brain Based Tip with its citation, or an Inspiration card, optionally on a topic.

  • list_journeys

    Short guided stories, each about one mindset.

  • start_journey

    One 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.

Step 1

Get a key

Email product@reulay.com with your company name and what you're building. You'll get a key that starts with rp_.

  • Keep it on your server. Never put it in a browser, a mobile app or a public repo.
  • It's tied to your company, not to a person. Ask us to replace it at any time.
  • Default limit: 120 MCP requests per minute per key. Every request counts (initialize, list tools, each tool call), so one chat turn is usually 2 to 4 requests. Ask if you need more.

Step 2

Pass an end-user id (optional, recommended)

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.

Step 3

Connect

Anthropic Messages API (MCP connector)

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.

OpenAI Responses API

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.

Any MCP client (TypeScript MCP SDK)

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.

Check your key with curl

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":{}}'

Errors

401
Missing, invalid or revoked key.
400
End-user id too long or not printable ASCII, or sent in the URL.
429
Over the per-key rate limit. Retry after the Retry-After seconds.
503
Reulay is temporarily unavailable. Retry shortly.

Privacy

  • We don't store prompts, tool arguments, results or anything the person says.
  • We count, per partner and per day: calls per tool, sessions started, and distinct end users. End users are a keyed one-way hash of the id you send, scoped to your company, so they can't be linked to anything else.
  • Never send names, email addresses, health information or other personal details in the end-user id or in tool arguments.
  • Video links are Reulay share pages. They carry no information about the person.
  • Your own privacy policy governs your users. Read how Reulay handles partner usage counts in our Privacy Policy.

Wellness, not medical care

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.

Request a pilot key

Email product@reulay.com with your company name and what you're building. Same address for higher limits, views, or questions.

Reulay, Inc. 2026