# Relay

**Category:** 💬 Communication  
**Repository:** https://github.com/yesrelay/relay-mcp  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/relay-3

## Description
Business phone and SMS for teams: calls, texts, transcripts, contacts and call flows.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "relay": {
    "command": "npx",
    "args": ["-y","relay-3"]
  }
}
```

## Documentation & README

# Relay MCP server

Remote [Model Context Protocol](https://modelcontextprotocol.io) server for
[Relay](https://yesrelay.com/en), a business phone and SMS app for teams, built in Montreal.

It lets Claude, or any MCP client, work with your team's phone: list calls and texts, read
call transcripts, search and update contacts, send an SMS from the team number, and draft
call-routing flows.

| | |
|---|---|
| Endpoint | `https://api.yesrelay.com/api/mcp` |
| Transport | Streamable HTTP (spec 2025-06-18), stateless |
| Authentication | `Authorization: Bearer <Relay API key>` |
| Tools | 16 |
| Plans | Every plan, free included |
| Documentation | https://yesrelay.com/en/api-docs |

This repository holds no server code: the server is hosted by Relay. Nothing to install on
the server side.

## Get an API key

1. Create a free account at https://app.yesrelay.com.
2. In the app, open **Administration**, then **Integrations & API**, and create a key.
3. The key starts with `rk_live_` and is shown once. Keep it in a secrets manager.

Revoking the key in the app cuts MCP and REST access at the same instant.

## Connect a client

### Claude Code

```bash
claude mcp add --transport http relay https://api.yesrelay.com/api/mcp \
  --header "Authorization: Bearer rk_live_..."
```

### Claude Desktop

`claude_desktop_config.json`, through [`mcp-remote`](https://www.npmjs.com/package/mcp-remote):

```json
{
  "mcpServers": {
    "relay": {
      "command": "npx",
      "args": ["mcp-remote", "https://api.yesrelay.com/api/mcp",
               "--header", "Authorization:${AUTH}"],
      "env": { "AUTH": "Bearer rk_live_..." }
    }
  }
}
```

### Any other client

Point it at `https://api.yesrelay.com/api/mcp` with the `Authorization` header above.

## Tools

### Calls and messages

| Tool | What it does |
|---|---|
| `relay_list_numbers` | Lists the organization's teams and their phone numbers |
| `relay_list_calls` | Recent calls of a team, newest first |
| `relay_get_transcript` | Transcript of a call, with the AI summary and action items |
| `relay_list_messages` | Recent texts of a team, newest first, filterable by contact |
| `relay_send_sms` | Sends a text from the team number. Real, billed and irreversible |

### Contacts and team

| Tool | What it does |
|---|---|
| `relay_search_contacts` | Searches a team's address book by first name, last name or company |
| `relay_create_contact` | Adds a contact to the team's address book |
| `relay_update_contact` | Replaces the fields of an existing contact |
| `relay_list_members` | People in the organization and their identifiers |

### Flow (call routing, Business and Scale plans)

| Tool | What it does |
|---|---|
| `relay_list_flows` | Lists the organization's call flows |
| `relay_get_flow` | Reads the live graph and the draft of a flow |
| `relay_flow_schema` | Block types, expected fields and routing-engine rules |
| `relay_create_flow` | Creates a number's flow from a template |
| `relay_save_flow_draft` | Replaces the draft. Changes nothing callers hear |
| `relay_check_flow` | Tests a graph without writing anything |
| `relay_discard_flow_draft` | Throws away the draft and returns to what is live |

No tool publishes a flow. An agent can draft and check a call path; a person puts it live
from the app.

## Safeguards

A text sent through MCP goes through the same checks as a text sent from the app:

| Refusal code | When |
|---|---|
| `recipient_opted_out` | The recipient replied STOP (or ARRET, UNSUBSCRIBE) to this team |
| `daily_limit_reached` | The team's daily cap is reached (the customer's own limit, or the automatic one) |
| `workspace_budget_reached` | The team's spending cap is reached |
| `sending_suspended` | Outbound sending is paused by the circuit breaker; receiving continues |

What you can do also follows your plan: sending texts needs a paid plan, and the Flow tools
need Business or Scale.

## Limits

| Plan | Requests per minute per key | Keys |
|---|---|---|
| Free | 30 | 2 |
| Paid | 120 | 5 |

Each message in a JSON-RPC batch counts as one request.

## Troubleshooting

**The client shows a read error, or curl fails with error 56 ("chunk hex-length").** Some
antivirus software that inspects HTTPS traffic corrupts MCP responses; we have seen it with
Avast. The server answered correctly. Exclude `api.yesrelay.com` from your antivirus HTTPS
scanning, then try again.

**401 Invalid API key.** The key is missing, revoked or expired. Create a new one in the app.

## Also available

- REST API: `https://api.yesrelay.com/api/v1`, reference at https://api.yesrelay.com/docs
- Signed webhooks (HMAC SHA-256) for call and SMS events

## Support

hello@yesrelay.com

