ray.run: Publish MCP servers to your customers
{
  "mcpServers": {
    "acme-issues": {
      "url": "https://ray.run/p/acme-issues/mcp"
    }
  }
}
  1. Create

    Choose the hosted services to offer and the address they are reached at. A draft serves nobody.

  2. Connect and test sign-in

    Connect your OpenID Connect provider, then test a real sign-in before publishing. The test verifies your credentials and Rayrun redirect URI.

  3. Publish

    Publish and share the address. Unpublishing stops it at once, and publishing again restores every customer’s access.

import { verifyIdentityAssertion } from '@rayrun/sdk';

const identity = await verifyIdentityAssertion({
  assertion: request.headers.get('rayrun-identity'),
  environment: process.env,
});

if (identity !== null) {
  // externalId is the subject your provider signed in.
  console.log(identity.externalId, identity.email);
}
{
  "id": "whd_…",
  "type": "publication.approval.requested",
  "occurredAt": "2026-09-14T09:30:00Z",
  "data": {
    "approvalUid": "…",
    "approvalUrl": "https://ray.run/p/acme-issues/approve/…",
    "connectionId": "01993fe8-78d7-7c7d-a681-11aa03e6f7a2",
    "endUserUid": "…",
    "expiresAt": "2026-09-14T09:40:00.000Z",
    "publicationUid": "…",
    "toolName": "create_issue"
  }
}
rayrun publications create acme-issues --name 'Acme issues' \
  --services <connection-id>

printf %s "$OIDC_CLIENT_SECRET" | \
  rayrun publications sign-in set <publication-uid> \
  --issuer https://login.example.com --client-id rayrun-acme-issues \
  --client-secret-stdin

rayrun publications publish <publication-uid> --reason 'Launch'
rayrun publications domain set <publication-uid> mcp.example.com