Skip to content

docs(sms): document E.164 recipient requirement for SMS sends - #96

Merged
tuyakhov merged 2 commits into
mainfrom
claude/wizardly-brown-7pj3eq
Aug 6, 2026
Merged

docs(sms): document E.164 recipient requirement for SMS sends#96
tuyakhov merged 2 commits into
mainfrom
claude/wizardly-brown-7pj3eq

Conversation

@tuyakhov

@tuyakhov tuyakhov commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Summary

The hosted API now enforces that an SMS recipient (to) must be an E.164 phone number. A non-E.164 SMS to is rejected up front with 400 invalid_recipient — for both template sends and raw sends — instead of being accepted and failing later at dispatch.

This aligns the SDK/CLI/MCP surface with that contract. No behavior change in the client itself (recipient validation stays server-side); these are description/doc corrections so callers format numbers correctly and understand the failure mode.

MCP manifest (@senderkit/sdk)

  • senderkit_send_raw's to field description now spells out the per-channel recipient formats — including the E.164 requirement for sms — matching senderkit_send, which already documented it. Previously send_raw's to only mentioned the web-push subscription shape, leaving the SMS format undocumented on the exact tool where the channel is stated explicitly.

CLI (@senderkit/cli)

  • The senderkit send-raw help text derives from the manifest, so it now surfaces the same per-channel to guidance, including E.164 for SMS.

Docs

  • The SDK README's SMS example notes the E.164 requirement and the 400 invalid_recipient response.

A patch changeset is included for @senderkit/sdk and @senderkit/cli.

Checklist

  • pnpm --filter @senderkit/sdk test passes (86 tests)
  • pnpm --filter @senderkit/cli test passes (87 tests)
  • pnpm build succeeds
  • Changeset added

🤖 Generated with Claude Code


Generated by Claude Code

claude added 2 commits August 4, 2026 21:08
The hosted API now rejects a non-E.164 SMS `to` with 400 invalid_recipient
(template and raw sends alike) instead of accepting it and failing at
dispatch. Reflect that contract in the SDK surface:

- senderkit_send_raw `to` now spells out the per-channel recipient formats,
  including the E.164 requirement for sms, matching senderkit_send. This
  also improves the `senderkit send-raw` CLI help derived from the manifest.
- README SMS example notes the E.164 requirement and the 400 response.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MyKX5gt1HHZoV2YW4729qs
The `pnpm audit --audit-level=moderate` CI gate started failing on two
freshly-published advisories affecting transitive deps pulled in via
@modelcontextprotocol/sdk (used by @senderkit/cli):

- high  — fast-uri < 3.1.5 (host confusion via backslash authority):
  our override floor was pinned at >=3.1.4, one patch below the fix.
- moderate — hono < 4.12.34 (ReDoS in CORS middleware): floor was
  >=4.12.27.

Both existing overrides simply sat below the patched versions, so the
audit gate broke on main and every open PR regardless of content. Bump
the floors to the patched versions; lockfile now resolves fast-uri
3.1.5 and hono 4.13.0. `pnpm audit --audit-level=moderate` is clean,
frozen install / build / tests / typecheck all pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E5ZYJUHAmibPyaKyKmQLSQ
@tuyakhov
tuyakhov merged commit 9df7b26 into main Aug 6, 2026
1 check passed
@tuyakhov
tuyakhov deleted the claude/wizardly-brown-7pj3eq branch August 6, 2026 08:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants