New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Verify phone numbers using SMS one-time codes

Phone verification

by gooseworks-ai · MIT license · ★ 1,220 on GitHub · updated Sep 21

Phone verification cover

Verify phone numbers using SMS one-time codes via the Didit API. Use when you need to confirm a user owns a phone number, implement SMS-based 2FA, or validate phone during signup/onboarding flows.

---
name: phone-verification
description: Verify phone numbers using SMS one-time codes via the Didit API. Use when you need to confirm a user owns a phone number, implement SMS-based 2FA, or validate phone during signup/onboarding flows.
source: orthogonal
---


# Phone Verification

## Setup

Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```

If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`

Overview

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

Manual install (npx, ZIP)
Claude Codenpx skills add gooseworks-ai/goose-skills --skill phone-verification -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \ | tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/research-tools/capabilities/phone-verification
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/cf75f9d335de5b6d340f/phone-verification.zip" -OutFile "$env:TEMP\phone-verification.zip"; Expand-Archive "$env:TEMP\phone-verification.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md3.3 KB
  • skill.meta.json291 B
Read the files here
gooseworks-ai/615c6852 files
SKILL.md
Show the full text129 lines

Phone Verification

Setup

Read your credentials from ~/.gooseworks/credentials.json:

export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"

Verify phone numbers by sending SMS one-time verification codes via Didit.

Quick Start

# Send verification code via SMS
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+14155551234"}}'

# Verify the code user provides
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+14155551234","code":"123456"}}'

Workflow

1. Send Verification Code
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/phone/send"}'
  -d '{"phone_number": "+14155551234"}'

Request format:

  • Phone must be in E.164 format (e.g., +14155551234)
  • Include country code with + prefix

Response:

{
  "success": true,
  "message": "Verification code sent"
}
2. Verify Code

When the user provides the code they received:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"didit","path":"/v3/phone/check"}'
  -d '{"phone_number": "+14155551234", "code": "123456"}'

Response (success):

{
  "success": true,
  "verified": true
}

Phone Number Format

Always use E.164 format:

  • US: +14155551234
  • UK: +447911123456
  • Germany: +4915123456789

Use Cases

  • User signup: Verify phone before creating account
  • SMS 2FA: Add phone-based second factor authentication
  • Account recovery: Verify ownership via SMS
  • Delivery confirmation: Confirm contact number for orders

Integration Example (TypeScript)

import Orthogonal from "@orth/sdk";

const orthogonal = new Orthogonal({

});

// Send verification code via SMS
const sendResult = await orthogonal.run({
  api: "didit",
  path: "/v3/phone/send",
  body: { phone_number: "+14155551234" }
});

// Verify the code
const verifyResult = await orthogonal.run({
  api: "didit",
  path: "/v3/phone/check",
  body: { 
    phone_number: "+14155551234",
    code: "123456"
  }
});

if (verifyResult.data.verified) {
  console.log("Phone verified!");
}
1---
2name: phone-verification
3description: Verify phone numbers using SMS one-time codes via the Didit API. Use when you need to confirm a user owns a phone number, implement SMS-based 2FA, or validate phone during signup/onboarding flows.
4source: orthogonal
5---
6 
7 
8# Phone Verification
9 
10## Setup
11 
12Read your credentials from ~/.gooseworks/credentials.json:
13```bash
14export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
15export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
16```
17 
18If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
19 
20All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
21 
22 
23Verify phone numbers by sending SMS one-time verification codes via Didit.
24 
25## Quick Start
26 
27```bash
28# Send verification code via SMS
29curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
30 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
31 -H "Content-Type: application/json" \
32 -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+14155551234"}}'
33 
34# Verify the code user provides
35curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
36 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
37 -H "Content-Type: application/json" \
38 -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+14155551234","code":"123456"}}'
39```
40 
41## Workflow
42 
43### 1. Send Verification Code
44 
45```bash
46curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
47 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
48 -H "Content-Type: application/json" \
49 -d '{"api":"didit","path":"/v3/phone/send"}'
50 -d '{"phone_number": "+14155551234"}'
51```
52 
53**Request format:**
54- Phone must be in E.164 format (e.g., `+14155551234`)
55- Include country code with `+` prefix
56 
57**Response:**
58```json
59{
60 "success": true,
61 "message": "Verification code sent"
62}
63```
64 
65### 2. Verify Code
66 
67When the user provides the code they received:
68 
69```bash
70curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
71 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
72 -H "Content-Type: application/json" \
73 -d '{"api":"didit","path":"/v3/phone/check"}'
74 -d '{"phone_number": "+14155551234", "code": "123456"}'
75```
76 
77**Response (success):**
78```json
79{
80 "success": true,
81 "verified": true
82}
83```
84 
85## Phone Number Format
86 
87Always use E.164 format:
88- US: `+14155551234`
89- UK: `+447911123456`
90- Germany: `+4915123456789`
91 
92## Use Cases
93 
94- **User signup:** Verify phone before creating account
95- **SMS 2FA:** Add phone-based second factor authentication
96- **Account recovery:** Verify ownership via SMS
97- **Delivery confirmation:** Confirm contact number for orders
98 
99## Integration Example (TypeScript)
100 
101```typescript
102import Orthogonal from "@orth/sdk";
103 
104const orthogonal = new Orthogonal({
105 
106});
107 
108// Send verification code via SMS
109const sendResult = await orthogonal.run({
110 api: "didit",
111 path: "/v3/phone/send",
112 body: { phone_number: "+14155551234" }
113});
114 
115// Verify the code
116const verifyResult = await orthogonal.run({
117 api: "didit",
118 path: "/v3/phone/check",
119 body: {
120 phone_number: "+14155551234",
121 code: "123456"
122 }
123});
124 
125if (verifyResult.data.verified) {
126 console.log("Phone verified!");
127}
128```
129 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 1,220
Checked
Source
gooseworks-ai/goose-skills ↗
Creator
gooseworks-ai · 206 listings
View creator

Made with phone-verification

Phone verification — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)
Phone verification — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)

by gooseworks-ai

Similar skills

See all →
SkillGuides stable API and interface designaddyosmani/agent-skills · by addyosmaniGuides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints, defining type contracts between modules, or establishing boundaries between frontend and backend.★ 98.7k GitHub starsMCPPulls up-to-date, version-specific library docsContext7upstash/context7 · by upstashPulls up-to-date, version-specific library docs and code examples into the prompt so the AI stops inventing old APIs.★ 62.3k GitHub starsSkillFetch up-to-date documentation and code examples for anyContext7 Documentation Lookupupstash/context7 · by upstashFetch up-to-date documentation and code examples for any library, framework, SDK, CLI tool, or cloud service. Use whenever the user asks about a specific library — even well-known ones like React, Next.js, Prisma, Express, Tailwind, Django, or Spring Boot — because training data may not reflect recent API changes or version updates. Always use for: API syntax questions, configuration options, version migration issues, "how do I" questions mentioning a library name, debugging that involves library-specific behavior, setup instructions, and CLI tool usage. Use even when you think you know the answer. Do not rely on training data for API details, signatures, or configuration options — they are frequently out of date. Prefer this over web search for library documentation.★ 62.3k GitHub starsSkillHow to use the Adaptyv Bio Foundry API and Python SDKK-Dense-AI/scientific-agent-skills · by K-Dense-AIHow to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.★ 46k GitHub starsSkillMaster C/.NET backend development patterns for buildingwshobson/agents · by wshobsonMaster C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.★ 39.9k GitHub starsSkillGuides the usage of Gemini Interactions API on GeminiGemini Interactions API Skillgoogle/skills · by googleGuides the usage of Gemini Interactions API on Gemini Enterprise Agent Platform. Use when the user wants to use the stateful, server-managed Interactions API for multi-turn conversations, background execution, streaming, structured output, and function calling on the Agent Platform.★ 20.9k GitHub stars

More from gooseworks-ai

SkillMine the highest-converting ad angles from customer reviewsAd angle minergooseworks-ai/goose-skills · by gooseworks-aiMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.★ 1.2k GitHub starsSkillAnalyze ad campaign performance data to identify what'sAd campaign analyzergooseworks-ai/goose-skills · by gooseworks-aiAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.★ 1.2k GitHub starsSkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzergooseworks-ai/goose-skills · by gooseworks-aiFor paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.★ 1.2k GitHub starsSkillAnalyze the message match between your ads and landing pagesAd to landing page auditorgooseworks-ai/goose-skills · by gooseworks-aiAnalyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.★ 1.2k GitHub starsSkillCheck and improve your brand's visibility across AI searchAeogooseworks-ai/goose-skills · by gooseworks-aiCheck and improve your brand's visibility across AI search engines (ChatGPT, Perplexity, Gemini, Grok, Claude, DeepSeek). Set up tracking, run visibility analyses, audit your website for AI readability, and get actionable recommendations. Uses the npx goose-aeo@latest CLI.★ 1.2k GitHub starsSkillSearch Amazon products - find items, compare pricesAmazon Product Searchgooseworks-ai/goose-skills · by gooseworks-aiSearch Amazon products - find items, compare prices, read reviews★ 1.2k GitHub stars