---
title: "Build with Claude Code, Codex or Cursor"
description: "Install ThunderPhone Agent Skills, connect the ThunderPhone MCP server, and give a coding agent current product documentation."
---

ThunderPhone provides three layers for coding agents:

| Layer | What it gives the agent |
| --- | --- |
| [Agent Skills](https://github.com/thunderphone/skills) | Focused procedures for agents, prompts, numbers, calls, tools, webhooks, knowledge, testing, campaigns, widgets, realtime frameworks and migrations. |
| MCP | Authenticated tools cover agents, numbers, calls, testing, knowledge, tools/webhooks, campaigns, voices, imports and docs as they roll out; call `tools/list` for the live catalog. |
| [Raw documentation](https://thunderphone.com/docs/llms.txt) | Current Markdown sources for product behavior and API details. |

Skills explain how to do the work. MCP lets the coding agent inspect and act on
your organization. Raw docs provide the source material for questions outside a
loaded skill.

## Install in a project

This block installs the skills, makes the key available to the current shell,
and adds the project-scoped MCP server to Claude Code. Replace the placeholder
by reading the real value from your secret manager; do not paste a key into a
repository or chat.

```bash
npx skills add thunderphone/skills
export THUNDERPHONE_API_KEY='replace-with-value-from-your-secret-manager'
claude mcp add --transport http --scope project \
  --header 'Authorization: Bearer ${THUNDERPHONE_API_KEY}' \
  thunderphone https://api.thunderphone.com/v1/mcp
```

For Codex, replace the final command with:

```bash
codex mcp add thunderphone \
  --url https://api.thunderphone.com/v1/mcp \
  --bearer-token-env-var THUNDERPHONE_API_KEY
```

Cursor reads a project configuration from `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "thunderphone": {
      "type": "http",
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
      }
    }
  }
}
```

VS Code uses the same server under a `servers` key in `.vscode/mcp.json`:

```json
{
  "servers": {
    "thunderphone": {
      "type": "http",
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
      }
    }
  }
}
```

<Warning>
  An organization API key can read organization data and perform enabled
  actions. Keep it in a secret manager, scope access to the intended project,
  and review mutating tool calls before approval.
</Warning>

## Example session: bilingual dental receptionist

1. Ask the coding agent to load `create-agent`,
   `thunderphone-prompt-builder`, `build-tool-integration`, `add-knowledge`, and
   `test-agent`. Tell it to plan first and not create resources yet.
2. Give it verified practice facts, supported tasks, escalation rules and the
   two required locales. Have it check the live voice catalog and supported
   languages instead of inventing a voice or locale.
3. Ask for one production prompt built from general principles and facts. The
   agent should switch to the caller's supported language, keep speech concise,
   ask one question at a time, and avoid caller-response scripts.
4. Have it define a narrow scheduling tool and attach only the knowledge the
   receptionist needs. Test tool success, no availability, invalid input,
   timeout and human handoff before deployment.
5. Generate scenarios for both languages, interruptions, corrections, missing
   information, knowledge questions, scheduling failures and escalation. Run
   them, inspect transcripts and tool evidence, fix the smallest general rule,
   and rerun the same set.
6. Review the exact draft and test evidence, then explicitly authorize deploy
   and number attachment. Place a controlled audio call in each language before
   moving real traffic.

Use REST instead of MCP when a build needs deterministic payloads, versioned
fixtures, bulk orchestration, or an operation not present in the current MCP
tool list. The API starts at `https://api.thunderphone.com/v1`; see the
[API introduction](/api-reference/introduction) and
[MCP guide](/guides/thunderphone-mcp-server).
