# Give your agents a phone number.

> Phone numbers that hand the sign-in code straight to your agent. Real SIM lines, not just VoIP.

## The Phonekit inbox

The Phonekit inbox: each number's messages with the code pulled out, and a record of which person or agent read it.

## Set up in one command.

- **Claude Code**: `npx skills add https://www.phonekit.io --skill phonekit --agent claude-code --copy`
- **Codex**: `npx skills add https://www.phonekit.io --skill phonekit --agent codex --copy`
- **Cursor**: `npx skills add https://www.phonekit.io --skill phonekit --agent cursor --copy`
- **OpenCode**: `npx skills add https://www.phonekit.io --skill phonekit --agent opencode --copy`
- **Playwright**: `npm install @phonekit/sdk`
- **GitHub Actions**: `- run: npx phonekit@latest message mark --number ci-signin`

## Your agent gets past “Enter the code.”

Your agent stops asking you for the code.

1. **Mark the line**: Only a text that arrives after this counts.
2. **Send the code**: Your app sends the code to your Phonekit line.
3. **Read it and sign in**: The agent types it in. You're signed in.

## Three lines in your test.

Give each parallel run its own line and they never read each other's codes. [Read the SDK guide](https://www.phonekit.io/docs/sdk)

**SDK** (e2e/sign-in.spec.ts)

```ts
const number = phonekit.number("sign-in-tests")
const after = await number.mark()

await page
  .getByRole("button", { name: "Send code" })
  .click()
const code = await number.waitForOtp({ after })

await page
  .getByLabel("Verification code")
  .fill(code)
```

**Links & replies** (e2e/invite.spec.ts)

```ts
// An invite link instead of a code
const after = await number.mark()
await page.getByRole("button", { name: "Invite" }).click()
const { link } = await number.waitForLink({
  after,
  match: { linkHostname: "acme.dev" },
})
await page.goto(link)

// Or any text your product sends back
const { message } = await number.waitForMessage({
  after,
  match: { contentIncludes: "Booked" },
})
expect(message.body).toContain("BK-")
```

**CLI** (terminal)

```console
# mark, trigger the text, read the code
$ phonekit message mark --number sign-in-tests
$ phonekit code wait --number sign-in-tests --timeout 120
418204

# or text your own product and wait for its reply
$ phonekit message send --number agent-1 --to product \
    --body "Table for 4 on Friday at 8?"
$ phonekit message wait --number agent-1 --timeout 30
```

**MCP** (agent tool calls)

```js
phonekit_mark_number({ number: "sign-in-tests" })
// → marked at 10:24:05.214

phonekit_read_messages_after({ number: "sign-in-tests" })
// → "Your Acme verification code is 418204"

phonekit_send_message({ from: "agent-1", to: "product" })
// → sent, inside your closed loop
```

## Proven on every push.

A broken text path fails the build, not your users.

## Real SIM lines where VoIP won't do.

- **Standard**: US local VoIP. Most of your own tests.
- **Mobile**: Real SIM line on a mobile network. Services that only text mobiles.

Most numbers sold for testing are VoIP. Mobile numbers are real SIMs, for the services that only text mobiles. Both share the same inbox, access and API.

- **Sending**: 10 a minute, 100 a day, per number
- **Who you can text**: Your lines, your team's phones, anyone who texted you in 30 days, and 5 more
- **Messages**: Encrypted, kept 30 days

For your own product, not other people's accounts.

## Test products that text.

Invites, links, confirmations, replies. Give a test agent its own number, text your product and check whatever comes back.

- [SMS testing](https://www.phonekit.io/testing)
- [Agents](https://www.phonekit.io/agents)

## Decide who reads each number.

Share each number with exactly the people, test keys and agents that need it. It stays with the company when people leave. [Shared company access](https://www.phonekit.io/teams)

> Our own agents kept stopping at the sign‑in code, so we built Phonekit. Now they don't.
>
> — The Phonekit team, on our own products

## Get a number.

Tell us what you're testing. We'll set up your workspace. [Get a number](https://www.phonekit.io/#interest)

---

Source: https://www.phonekit.io/
