# `io.github.Latimer-Woods-Tech/wordis-bond` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/io.github.Latimer-Woods-Tech/wordis-bond
- JSON: https://anlyon.dev/api/v1/servers/io.github.Latimer-Woods-Tech/wordis-bond
- Version: 0.1.0 (active)
- Publisher: io.github.Latimer-Woods-Tech (GitHub account)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/Latimer-Woods-Tech/wordis-bond
- Metadata from the official MCP Registry, synced 2026-10-21T18:17:33.632Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Word Is Bond
Test the voice agents you run: scored transcripts, pass/fail verdicts, latency and WER metrics.
```

Scanned 2026-10-21T19:03:45.982Z over streamable-http.

**16 tools: 1 do something that can't be undone, 9 change things and 6 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 1 | ask |
| Changes things | write | 9 | ask |
| Only reads | read | 6 | allow |

## Findings

- **info** The word "credentials" in `register_recording_target` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The description mentions "credentials".

description: "...(so wordis-bond never holds your cloud credentials). Pro/enterprise capability, bundled fr..."
```


## Can't be undone (1)

Sends, pays, publishes or merges: once done, it cannot be taken back. Claude Code: ask.

### `ingest_call`

- The name "ingest_call" says "call": a word for a change.
- The description's first verb is "send": a word for sending, and what is sent cannot be taken back.

Description, as the server wrote it:

```untrusted-server-text
Send one completed PRODUCTION call to a monitor to be scored. Returns 202 immediately; scoring runs in the background and the monitor health updates. The transcript is scored in flight and never stored — only the scorecard and safe metadata are kept. Pass "externalId" (your own call id) so a re-delivered call scores exactly once.
```

## Changes things (9)

Creates or changes something that can be changed back. Claude Code: ask.

### `create_monitor`

- The name "create_monitor" says "create": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Create a production monitor. "scenarioGoal" is what GOOD looks like for this agent — the judge scores every ingested call against it, exactly as a test scenario goal works. Optional "assertions" are plain-English checks the agent must satisfy. Read the ingest secret afterwards from GET /api/monitor/{id}/secret. Requires a pro or enterprise plan.
```

### `create_suite`

- The name "create_suite" says "create": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Create a reusable test suite: a named set of scenarios/personas pinned to a target voice agent you run. Optionally give it a schedule ("weekly" | "daily" | "hourly", plan-gated) so it runs automatically and flags drift.
```

### `import_flow`

- The name "import_flow" says "import": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Import a phone-system flow or voice-agent config from a platform (e.g. Vapi) into the canonical, diffable Flow IR — the first step of putting your phone system under version control. Reports the fields the IR abstracts away. Pass save:true to persist it as a versioned flow. The same IR exports back out, so it doubles as a migration surface between platforms.
```

### `register_recording_target`

- Nothing in its name or description says what it does, so it is counted as a write.
- Findings: info credentials-mention

Description, as the server wrote it:

```untrusted-server-text
Register where BYOS call recordings go, so you can pass "record": true to run_test and have that call’s audio teed to YOUR OWN storage. wordis-bond keeps only a pointer (the run’s recording_url), never the audio. "callbackUrl" is a public https endpoint that returns a presigned PUT URL per recording (so wordis-bond never holds your cloud credentials). Pro/enterprise capability, bundled free — you pay your own storage; starter → 402.
```

### `run_demo`

- The name "run_demo" says "run": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Run the hosted demo voice agent (a dental front desk) end-to-end and get a real, fully-scored result in about a minute — no target of your own needed. Returns the score (0–100), pass/fail verdict, per-turn metrics, the transcript, and a shareable public report URL. Zero carrier cost. Optional inputs override the scenario.
```

### `run_test`

- The name "run_test" says "run": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Run a test against a voice agent you control. Two modes: (1) score a captured transcript offline — pass "transcript" (or "turns") plus "scenarioGoal"; the judge returns a scored run synchronously. (2) run a live synthetic call — pass "targetAgent" and "goal". A live "direct" (SIP/WebRTC) target returns a tokenized media WebSocket URL for your agent-side harness to dial; a "pstn" target places a real carrier call (pro+ plans) to a number you have verified — an unverified destination returns 403 NUMBER_NOT_VERIFIED and no call is placed. Poll get_run / GET /api/tests/{id} for the terminal scored state of a live run.
```

### `test_flow`

- The description's first verb is "run": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Run the regression gate on a flow now: compile the current version into a synthetic-caller test, run it against the flow's target, and compare the result to the previous version's baseline. A behavior change that regressed (a pass turning into a fail, or a score drop past the threshold) is caught and blocks the change — continuous integration for your phone-system logic.
```

### `verify_number_confirm`

- The input takes a statement or command to run (input.code), which can change anything it can reach.

Description, as the server wrote it:

```untrusted-server-text
Finish verifying a phone number by supplying the 6-digit code spoken on the verification call. On success the number becomes a permitted PSTN test destination for your account. The code is single-use, expires after ten minutes, and locks after five incorrect attempts.
```

### `verify_number_start`

- The name "verify_number_start" says "start": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Prove your account controls a phone number, which it must do before any PSTN test call to it. Word Is Bond places one short call to the number, speaks a 6-digit code twice, and hangs up. Confirm the code within ten minutes with verify_number_confirm. Calling an already-verified number places no call. This is the only action that dials an unverified number and it is tightly capped (3 calls per number and 5 distinct numbers per account, per day).
```

## Only reads (6)

Looks things up and changes nothing. Claude Code: allow.

### `diff_flow`

- The name "diff_flow" says "diff": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Show the structural diff between two versions of a version-controlled flow: which nodes and edges were added, removed, or changed. This is the code review for your phone system — see exactly what a change did before you ship it.
```

### `get_monitor_health`

- The name "get_monitor_health" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Read a monitor's live rolling health and drift. Health is unknown | healthy | degraded | critical. Drift is isolated by judge version: when our judge changes, the boundary is reported as judgeVersionChanged and NEVER as an agent regression — a score delta across that boundary says nothing about your agent.
```

### `get_trends`

- The name "get_trends" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Read account-wide testing trends over a window: pass-rate, average score, and run-to-run regressions per suite, plus overall totals. Use this to spot behaviour drift in the voice agents you test.
```

### `list_monitors`

- The name "list_monitors" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List your production monitors and their current health (unknown | healthy | degraded | critical). A monitor watches ONE live production line: you stream it completed calls, and it scores each with the same versioned judge that scores your tests, tracks a rolling baseline, and alerts when quality drifts. Requires a pro or enterprise plan.
```

### `list_suites`

- The name "list_suites" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List your reusable test suites (each is a set of scenarios/personas pinned to a target voice agent). Returns their ids, names, targets, and schedules — use a suite id with run_test or get_trends.
```

### `list_verified_numbers`

- The name "list_verified_numbers" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List the phone numbers your account has proven it controls. Only these numbers (and Word Is Bond DIDs) may be used as a "pstn" targetAgent.toNumber. Revoke one with DELETE /api/numbers/{id}.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `wordis-bond`:

```json
{
  "permissions": {
    "allow": [
      "mcp__wordis-bond__get_trends",
      "mcp__wordis-bond__list_suites",
      "mcp__wordis-bond__list_verified_numbers",
      "mcp__wordis-bond__diff_flow",
      "mcp__wordis-bond__list_monitors",
      "mcp__wordis-bond__get_monitor_health"
    ],
    "ask": [
      "mcp__wordis-bond__run_demo",
      "mcp__wordis-bond__run_test",
      "mcp__wordis-bond__create_suite",
      "mcp__wordis-bond__verify_number_start",
      "mcp__wordis-bond__verify_number_confirm",
      "mcp__wordis-bond__register_recording_target",
      "mcp__wordis-bond__import_flow",
      "mcp__wordis-bond__test_flow",
      "mcp__wordis-bond__create_monitor",
      "mcp__wordis-bond__ingest_call"
    ],
    "deny": []
  }
}
```
