Skip to content

Commit 15bd77d

Browse files
volinskeyclaude
andcommitted
docs: add magic link auth + sender domain tools to SKILL.md and README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6f19994 commit 15bd77d

2 files changed

Lines changed: 113 additions & 0 deletions

File tree

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,27 @@ npx run402-mcp
6969
| `allowance_export` | Export the local agent allowance address. |
7070
| `request_faucet` | Request free testnet USDC from the Run402 faucet. |
7171
| `generate_image` | Generate a PNG image from a text prompt. $0.03 via x402. |
72+
| `create_mailbox` | Create an email mailbox for a project (`slug@mail.run402.com`). |
73+
| `send_email` | Send email — template or raw HTML mode. Single recipient. |
74+
| `list_emails` | List sent emails from the project's mailbox. |
75+
| `get_email` | Get a specific email message with replies. |
76+
| `get_mailbox` | Get the project's mailbox info. |
77+
| `promote_user` | Promote a project user to admin role. |
78+
| `demote_user` | Demote a project user from admin role. |
79+
| `ai_translate` | Translate text via AI (OpenRouter). Metered per project. |
80+
| `ai_moderate` | Moderate text via AI (OpenAI). Free. |
81+
| `ai_usage` | Check AI translation usage and quota. |
82+
| `add_custom_domain` | Add a custom domain to a subdomain (Cloudflare SSL). |
83+
| `list_custom_domains` | List custom domains for a project. |
84+
| `check_domain_status` | Check custom domain verification status. |
85+
| `remove_custom_domain` | Remove a custom domain. |
86+
| `request_magic_link` | Send a passwordless login email (magic link). |
87+
| `verify_magic_link` | Exchange a magic link token for access + refresh tokens. |
88+
| `set_user_password` | Change, reset, or set a user's password. |
89+
| `auth_settings` | Update project auth settings (e.g., allow_password_set). |
90+
| `register_sender_domain` | Register a custom email sending domain (DKIM verification). |
91+
| `sender_domain_status` | Check sender domain verification status. |
92+
| `remove_sender_domain` | Remove a custom sender domain. |
7293

7394
## Client Configuration
7495

SKILL.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,98 @@ Get the project's mailbox info (ID, address, slug). Use to check if a mailbox ex
351351
get_mailbox(project_id: "prj_...")
352352
```
353353

354+
### request_magic_link
355+
356+
Send a passwordless login email (magic link) to a project user. Auto-creates the user on first verification. Rate limited per email (5/hr) and per project (by tier).
357+
358+
**Parameters:**
359+
- `project_id` (required) — Project ID
360+
- `email` (required) — Email address to send the magic link to
361+
- `redirect_url` (required) — URL to redirect to with `?token=<token>`. Must be an allowed origin for this project.
362+
363+
**Example:**
364+
```
365+
request_magic_link(project_id: "prj_...", email: "user@example.com", redirect_url: "https://myapp.run402.com/auth/callback")
366+
```
367+
368+
### verify_magic_link
369+
370+
Exchange a magic link token for access_token + refresh_token. Creates the user if they don't exist. Token is single-use and expires in 15 minutes.
371+
372+
**Parameters:**
373+
- `project_id` (required) — Project ID
374+
- `token` (required) — The magic link token from the email link URL (`?token=...`)
375+
376+
**Example:**
377+
```
378+
verify_magic_link(project_id: "prj_...", token: "abc123def456...")
379+
```
380+
381+
### set_user_password
382+
383+
Change, reset, or set a user's password. Change: provide current_password + new_password. Reset (via magic link login): just new_password. Set (passwordless user): requires `allow_password_set=true` on project.
384+
385+
**Parameters:**
386+
- `project_id` (required) — Project ID
387+
- `access_token` (required) — The user's access_token (Bearer token from login)
388+
- `new_password` (required) — The new password to set
389+
- `current_password` (optional) — Current password (required for password change, omit for reset/set)
390+
391+
**Example:**
392+
```
393+
set_user_password(project_id: "prj_...", access_token: "eyJ...", new_password: "new-pass-123")
394+
```
395+
396+
### auth_settings
397+
398+
Update project auth settings. Currently supports `allow_password_set` to control whether passwordless users can add a password. Requires service_key.
399+
400+
**Parameters:**
401+
- `project_id` (required) — Project ID
402+
- `allow_password_set` (required) — Boolean. Allow passwordless users to set a password.
403+
404+
**Example:**
405+
```
406+
auth_settings(project_id: "prj_...", allow_password_set: true)
407+
```
408+
409+
### register_sender_domain
410+
411+
Register a custom email sending domain for a project. Returns DNS records (DKIM CNAMEs + SPF/DMARC) to add. Once verified, email sends from your domain instead of `mail.run402.com`.
412+
413+
**Parameters:**
414+
- `project_id` (required) — Project ID
415+
- `domain` (required) — The domain to register (e.g., `kysigned.com`)
416+
417+
**Example:**
418+
```
419+
register_sender_domain(project_id: "prj_...", domain: "kysigned.com")
420+
```
421+
422+
### sender_domain_status
423+
424+
Check the verification status of a project's custom sender domain. Polls SES for pending domains.
425+
426+
**Parameters:**
427+
- `project_id` (required) — Project ID
428+
429+
**Example:**
430+
```
431+
sender_domain_status(project_id: "prj_...")
432+
```
433+
434+
### remove_sender_domain
435+
436+
Remove a project's custom sender domain. Email reverts to sending from `mail.run402.com`.
437+
438+
**Parameters:**
439+
- `project_id` (required) — Project ID
440+
441+
**Example:**
442+
```
443+
remove_sender_domain(project_id: "prj_...")
444+
```
445+
354446
## Standard Workflow
355447

356448
Follow this sequence to go from zero to a working database:

0 commit comments

Comments
 (0)