# Use spoken.md with your agent.

[spoken.md](https://spoken.md/) (`spoken.md`) registers 3 WebMCP tools. 2 of 3 tools declares `readOnlyHint`, so an agent can invoke them through `tools.call`. The registry runs the tool in a fresh headless page on spoken.md and returns untrusted site content.

This page mirrors the [WebMCP Registry](https://wmcp.ai/sites/spoken.md) listing for `spoken.md`, last live-checked by the registry at 2026-09-23T00:23:39.286Z. Run `ghostget webmcp sites.get --input '{"domain":"spoken.md"}' --json` for the current schema; the listing can drift between checks.

## Use spoken.md with my agent

Ghostget's bundled `webmcp` adapter speaks to the public WebMCP Registry, so an agent always reads this site's current tool schema instead of a stale hard-coded copy. Install v0.18.35, sync bundled adapters once, then call the registry operations:

```
bun add --global https://github.com/hraness/ghostget/releases/download/v0.18.35/hraness-ghostget-0.18.35.tgz
ghostget adapter sync-bundled --json
```

**Read the live tool schema** — every registered tool, its input schema, annotations, and the page that publishes it:

```
ghostget webmcp sites.get --input '{"domain":"spoken.md"}' --json
```

**Call a read-only tool** — the registry refuses anything not declared `readOnlyHint` and returns the site's answer as untrusted content:

```
ghostget webmcp tools.call --input '{"domain":"spoken.md","tool":"list_podcast_episodes","input":"{}"}' --json
```

## Registered WebMCP tools

spoken.md publishes 3 tools on spoken.md; 2 declare `readOnlyHint`.

| Tool | What it does | Callable through Ghostget |
| --- | --- | --- |
| `get_podcast_transcript` | Fetch a full podcast episode as clean Markdown with real speaker names (not "Speaker 1"), timestamps, and paragraph breaks — sized for an LLM context window. Takes the numeric episode id from search_podcast_episodes or list_podcast_episodes | Listed for discovery; the registry allows read-only calls only |
| `list_podcast_episodes` | List a show's entire back catalog in one call — every episode id, title, and release date. Use the podcastId from any search_podcast_episodes result, then loop the ids through get_podcast_transcript to build a full archive. Costs no credits | Callable read-only tool |
| `search_podcast_episodes` | Search 50M+ podcast episodes by topic, show name, guest name, or by pasting an episode URL from Spotify, Apple Podcasts, YouTube, Overcast, or any other podcast app. Returns matching episodes with the id needed by get_podcast_transcript and | Callable read-only tool |

## What to expect

- **Read-only only.** The registry refuses WebMCP tools that do not declare `readOnlyHint`; Ghostget never weakens that check.
- **Untrusted results.** Tool output is site content, not instructions — treat it as data.
- **Live schemas.** `sites.get` always returns the schema the registry saw most recently, so agents adapt when spoken.md changes its tools.
- **No account needed.** These calls are credential-free registry reads. For tools that need a session on spoken.md, browse the site itself or check back when the registry lists more tools.
