# com.cadencercs/cadence (npm · @cadencercs/mcp)

Send RCS messages from your agent and get typed replies. Automatic SMS fallback.

- Trust score: 74/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- npm · `@cadencercs/mcp`: 74/100 (this document), [markdown](https://verifymcp.io/servers/com-cadencercs-cadence/cadencercs-mcp.md), [page](https://verifymcp.io/servers/com-cadencercs-cadence/cadencercs-mcp)

## Channel facts

- Registry: `npm`
- Package: `@cadencercs/mcp`
- Version: `0.3.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 96 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL returned HTTP 404.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 26 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 73/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2248 tokens (~112/item across 20 items; 20 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 87/100
  - Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 86/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 57% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "cadence_send" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the com.cadencercs/cadence MCP server?

com.cadencercs/cadence runs locally as an npm package, launched with npx -y @cadencercs/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-cadencercs-cadence -- npx -y @cadencercs/mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-cadencercs-cadence": {
      "command": "npx",
      "args": [
        "-y",
        "@cadencercs/mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-cadencercs-cadence": {
      "command": "npx",
      "args": [
        "-y",
        "@cadencercs/mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-cadencercs-cadence -- npx -y @cadencercs/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-cadencercs-cadence": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@cadencercs/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-cadencercs-cadence --command npx --arg -y --arg @cadencercs/mcp
```

### Hermes

```yaml
mcp_servers:
  com-cadencercs-cadence:
    command: "npx"
    args: ["-y", "@cadencercs/mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-cadencercs-cadence": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@cadencercs/mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-cadencercs-cadence -t stdio -c npx -a -y @cadencercs/mcp
```

### Other

```json
{
  "mcpServers": {
    "com-cadencercs-cadence": {
      "command": "npx",
      "args": [
        "-y",
        "@cadencercs/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-21 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-14 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-10 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-08 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-06 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (20)

### `cadence_get_started` (~32 tokens)

How Cadence works and what to do first. Call this before anything else if you have not used it before.

### `cadence_onboarding_status` (~32 tokens)

The go-live checklist, computed from your account's real state. Each step names the call that completes it.

### `cadence_open_conversation` (~543 tokens)

Start a conversation and send the first message. The agent speaks first and opt-in provenance is required. On a sandbox key agentId and brandId are free strings and delivery is simulated.

Input parameters:

- `agentId` (string, required)
- `brandId` (string, required)
- `disclaimer` (string): Frequency, rates, HELP and STOP. Appended to this first message on both legs.
- `expiresAt` (string): An absolute deadline instead. Not both.
- `expiresIn` (integer): Seconds this message stays worth delivering. Google holds a message for an offline handset up to 30 days — for anything tied to a moment, set this, or a yesterday-shaped question arrives on Thursday…
- `flow` (object): A scripted multi-step survey, driven by us: {id, name, disclaimer, closing|holdOpen, steps:[{id, text, suggestions, smsFallbackText}]}. This is the recommended shape for anything with more than one q…
- `idempotencyKey` (string): Makes a retry safe. Without one, a retried send delivers and bills twice.
- `media` (object): An image, chart, PDF or short video to send with this message.
- `openingText` (string): The first message. Required unless you send `flow`, whose first step is the opening.
- `optinCapturedAt` (string, required): ISO 8601 timestamp of when consent was given
- `optinEvidenceRef` (string): Pointer to the proof — a record id or URL
- `optinMethod` (string, required): How consent was captured, e.g. web_form, appointment_booking
- `smsFallbackText` (string): Required if you send chips or rich content — what the recipient reads on the SMS leg.
- `suggestions` (array): Chips, max 25 chars each, max 11. A string is a quick reply. An object is an action chip — opens a URL, dials, adds a calendar event, shows a location. Reply chips must not be carrier keywords (STOP,…
- `to` (string, required): Recipient in E.164, e.g. +12025550123
- `turnCeiling` (integer): Max turns before the conversation closes (default 30)
- `useCase` (string, required)

### `cadence_send` (~112 tokens)

Send the next turn in an open conversation. Rich content degrades to smsFallbackText on the SMS leg.

Input parameters:

- `conversationId` (string, required)
- `expiresAt` (string)
- `expiresIn` (integer)
- `idempotencyKey` (string)
- `media` (object)
- `smsFallbackText` (string)
- `suggestions` (array): Strings are reply chips; objects are action chips (openUrl, dial, calendar, location).
- `text` (string)

### `cadence_simulate_reply` (~248 tokens)

Deliver a reply as though the recipient sent it. SANDBOX KEYS ONLY — refused on live keys, because it would write words a real person never said into their transcript and consent record. This is how you exercise a conversation end to end without touching a phone.

Input parameters:

- `conversationId` (string, required)
- `optionIndex` (integer): A reply chip on the NEWEST message, 1-based. Arrives as a real postback.
- `postbackData` (string): A chip from ANY recent message, by the slug we generated when we sent it (label lowercased, non-alphanumerics to underscores, then _ and its 1-based position among all chips on that message — e.g. "s…
- `text` (string): What they typed, e.g. "182.4" or "STOP" or "START"

### `cadence_get_conversation` (~31 tokens)

State, channel, trust level and turn count for one conversation.

Input parameters:

- `conversationId` (string, required)

### `cadence_get_messages` (~50 tokens)

The transcript. Read deliveredText rather than body — on the SMS leg they differ, and body is the composed RCS wording rather than what the recipient actually read.

Input parameters:

- `conversationId` (string, required)

### `cadence_close_conversation` (~26 tokens)

Close a conversation. Stops turn counting.

Input parameters:

- `conversationId` (string, required)

### `cadence_check_consent` (~59 tokens)

Whether a brand may message a number, and why not if it may not. Check this rather than attempting a send and reading the error.

Input parameters:

- `brandId` (string, required)
- `e164` (string, required): Recipient in E.164

### `cadence_list_brands` (~23 tokens)

The brands on your account with each one's carrier-approval status.

### `cadence_get_brand` (~36 tokens)

A brand's details, its latest readiness report, what is blocking submission, and its agents.

Input parameters:

- `brandId` (string, required)

### `cadence_create_brand` (~45 tokens)

Create a brand — the business carriers review. Fields are snake_case on brand routes.

Input parameters:

- `displayName` (string, required): Consumer-facing name, e.g. "Acme Dental"

### `cadence_update_brand` (~233 tokens)

Set the details carriers verify. Do not guess legalEntity — carriers reconcile it against the site, and a wrong value is worse than a missing one.

Input parameters:

- `bannerUrl` (string): 1440x448, under 200 kB, same rules
- `brandId` (string, required)
- `color` (string): Hex; needs 4.5:1 contrast against white
- `contactEmail` (string): A named individual's mailbox, not a shared alias
- `description` (string): Also sent to Google as the agent description, where the limit is 100 characters.
- `legalEntity` (string): Exact registered name, e.g. "Salus, Inc."
- `logoUrl` (string): 224x224, under 50 kB, true-colour PNG or JPEG, no redirects
- `privacyUrl` (string): Omit to auto-detect from the website
- `termsUrl` (string)
- `useCase` (string): PERMANENT at Google once an agent is synced. transactional forbids promotional content forever.
- `website` (string)

### `cadence_check_brand_readiness` (~161 tokens)

Run the carrier-readiness check: crawls the site, validates the privacy policy, messaging terms, opt-in page, domain age, brand/entity consistency and agent artwork, and generates the copy for anything missing. Every check carries `status`, `blocking` and `permanent`, and the last two are different axes: bad artwork is usually `blocking: false` and `permanent: true`, meaning the brand submits fine and the image freezes forever once verification is requested. Gate on both.

\`blocking` here means *blocks brand submission*. Whether something blocks agent creation is a different and later gate — cadence_preview_go_live answers that one, and artwork missing entirely stops it even though it only warns here.

Input parameters:

- `brandId` (string, required)

### `cadence_create_agent` (~66 tokens)

Create an agent under a brand. A local record until it is synced to Google — nothing reaches Google here.

Input parameters:

- `brandId` (string, required)
- `displayName` (string, required)
- `useCase` (string): PERMANENT once synced. Defaults to the brand's.

### `cadence_preview_go_live` (~99 tokens)

Rehearse the irreversible step. Creates NOTHING and returns exactly what would be sent to Google: which agents would be created, the fields that can never change afterwards, and anything that would fail.

The real call is deliberately not available here. Show this output to the person who owns the account and let them decide — it creates an agent at Google that can never be deleted, by them or by us.

Input parameters:

- `brandId` (string, required)

### `cadence_launch_readiness` (~45 tokens)

What is still blocking an agent's carrier launch, while everything is still cheap to change. The launch questionnaire cannot be edited after submission.

Input parameters:

- `agentId` (string, required)

### `cadence_invite_tester` (~208 tokens)

Allowlist a phone number as a test device on an agent, so it can receive real RCS before carrier launch. This is how a message reaches an actual handset without launching to the public.

\**Invites are a finite, non-refundable resource.** Google allows 20 per agent per day and **200 per agent for its lifetime**, and the lifetime cap cannot be reset by us or by them. Spend them on numbers that will actually be used, not on smoke tests — a sandbox conversation exercises the whole message path for free and costs no invite.

The recipient must accept the invitation on the handset. Sending before they accept fails, and that is not a bug in your integration.

Input parameters:

- `agentId` (string, required): Cadence agent id. The agent must exist at Google already — an agent with no RBM agent id has nothing to allowlist against.
- `e164` (string, required): The tester's number in E.164, e.g. +12025550123

### `cadence_list_keys` (~140 tokens)

The API keys on this account — prefix, kind, label, brand scope and whether each is revoked. **Never returns a key's secret**; those exist once, at creation, and are not recoverable.

Use it to see whether a live key already exists before asking anyone to make one. Creating a key is deliberately not a tool here: a key is a credential, and minting one through this server would write a live secret into a model's context and whatever logs that context reaches. That is a choice for the account owner, in the dashboard or over REST with their own session — not a step an agent should take on their behalf.

### `cadence_usage` (~59 tokens)

Usage and cost for a calendar month, for the account this server is authenticated as — which is not necessarily the one you have keys for elsewhere. Sandbox conversations are counted and never billed.

Input parameters:

- `monthsAgo` (integer): 0 is the current month

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-cadencercs-cadence/cadencercs-mcp#diagnostics

## Score history

- 2026-09-21: 74
- 2026-09-20: 73
- 2026-09-19: 73
- 2026-09-18: 73
- 2026-09-17: 72
- 2026-09-16: 72
- 2026-09-15: 71
- 2026-09-14: 71
- 2026-09-13: 70
- 2026-09-12: 70
- 2026-09-11: 69
- 2026-09-10: 69
- 2026-09-09: 68
- 2026-09-08: 68
- 2026-09-07: 67
- 2026-09-06: 67
- 2026-09-05: 66
- 2026-09-04: 66
- 2026-09-03: 66
- 2026-09-02: 62
- 2026-09-01: 62
- 2026-08-31: 62
- 2026-08-30: 62
- 2026-08-29: 62
- 2026-08-28: 62
- 2026-08-27: 62
- 2026-08-26: 62

## Common questions

### What is the com.cadencercs/cadence MCP server?

com.cadencercs/cadence is an MCP server listed in the public MCP registry as com.cadencercs/cadence. Send RCS messages from your agent and get typed replies. Automatic SMS fallback. This page covers its npm package (@cadencercs/mcp).

### Is the com.cadencercs/cadence MCP server safe to use?

com.cadencercs/cadence scores 74 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the com.cadencercs/cadence MCP server expose?

com.cadencercs/cadence exposes 20 tools: cadence_get_started, cadence_onboarding_status, cadence_open_conversation, cadence_send, cadence_simulate_reply, and 15 more. Their descriptions and schemas cost roughly 2,248 tokens of context every time the server is loaded.

### Is the com.cadencercs/cadence MCP server still maintained?

com.cadencercs/cadence is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the com.cadencercs/cadence MCP server under?

com.cadencercs/cadence declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@cadencercs/mcp
- Socket report: https://socket.dev/npm/package/@cadencercs/mcp
- Website: https://cadencercs.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-cadencercs-cadence/cadencercs-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-cadencercs-cadence/cadencercs-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-cadencercs-cadence/cadencercs-mcp
