Skip to content
Agentmart
Submit a tool

whatsapp

Complete --json argument shapes for every WhatsApp Business Cloud API send (text, template, media, interactive), the 24-hour window rules, and WhatsApp Web…

Skill by vibetasking

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/vibetasking-whatsapp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Complete --json argument shapes for every WhatsApp Business Cloud API send (text, template, media, interactive), the 24-hour window rules, and WhatsApp Web browser tactics

Use cases: backend

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/whatsapp

What's inside

Skill name
whatsapp
Description
Complete --json argument shapes for every WhatsApp Business Cloud API send (text, template, media, interactive), the 24-hour window rules, and WhatsApp Web browser tactics
License
MIT
Instructions
107 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# WhatsApp (WhatsappToolkit)

The CLI name is `whatsapp` (no trailing dash, see `system/toolkits.json`).
The commands below carry each action's complete argument shape: call them
as written, no `--help` round trip needed. Reserve `--help` for the
management actions documented by name only.

## Commands

### Send a free-form text message

```bash
whatsapp send_message --json '{"text": "Your order has shipped!"}'
```

Only delivers inside the 24-hour customer service window (since the
contact's last inbound message). Omit `to` — sends default to the run's
bound contact (see Notes for when an explicit recipient is allowed).

### Send an approved template message (works outside the 24h window)

```bash
whatsapp list_templates
whatsapp send_template_message --json '{"name": "order_confirmed", "language": "en_US", "body_variables": ["Alice", "#1234"]}'
```

`list_templates` returns each approved template's `variables.body` /
`header` / `buttons` counts — pass exactly that many strings, in order, as
`body_variables` / `header_variables` / `button_url_variables`.

### Send media

```bash
whatsapp send_media --json '{"media_type": "image", "file_path": "chart.png", "caption": "Q3 results"}'
```

Provide exactly one source: `link` (public URL, Meta fetches it),
`media_id` (from a prior `upload_media`), or `file_path` (sandbox-relative,
uploaded for you). `media_type` is one of `image`, `video`, `audio`,
`document`, `sticker`. Only delivers inside the 24-hour window.

```bash
whatsapp upload_media --json '{"file_path": "brochure.pdf"}'
```

The returned `media_id` is valid 30 days — reuse it across sends instead
of re-uploading the same asset.

### Location, contact cards, interactive messages

```bash
whatsapp send_location --json '{"latitude": 41.3874, "longitude": 2.1686, "name": "Office"}'
whatsapp send_contacts --json '{"contacts": [{"name": {"formatted_name": "Alice Smith"}, "phones": [{"phone": "+34600123456"}]}]}'
whatsapp send_interactive_buttons --json '{"body_text": "Confirm your appointment?", "buttons": [{"id": "yes", "title": "Yes"}, {"id": "no", "title": "No"}]}'
whatsapp send_interactive_list --json '{"body_text": "Pick a slot", "button_label": "Choose", "rows": [{"id": "am", "title": "Morning"}, {"id": "pm", "title": "Afternoon"}]}'
```

`send_interactive_buttons` takes up to 3 buttons; `send_interactive_list`
takes up to 10 rows. Both are free-form sends, so the 24-hour window rule
applies. The tapped button/row `id` comes back as the contact's next
inbound message.

### Management

```bash
whatsapp get_business_profile
whatsapp get_phone_number
whatsapp list_phone_numbers
whatsapp get_template_status --json '{"name": "order_confirmed"}'
```

`create_template` / `delete_template` submit or remove templates for Meta
approval — see `whatsapp create_template --help` for the component shape.

## Notes

- Omit `to`: every send defaults to the run's bound contact (the person
  this conversation is with). On contact-bound runs, an explicit `to`
  addressing anyone else is rejected unless external recipients are
  enabled in the channel's settings — don't assume it's allowed. Runs
  with no bound contact must pass `to` explicitly, in E.164 format
  (e.g. `+34600123456`).
- Meta's 24-hour customer service window gates free-form sends
  (`send_message`, `send_media`, `send_location`, `send_contacts`,
  interactive buttons/lists). Outside it, use `send_template_message`
  to re-open the conversation.

## WhatsApp Web through the browser

For tasks that operate `web.whatsapp.com` with the browser toolkit rather
than this CLI:

- Open a chat with the deep link `https://web.whatsapp.com/send?phone=<number>`
  (E.164 digits without the `+`). The deep link checks the number against
  WhatsApp's global directory. The in-page search box only searches chats
  and contacts the account already knows, so an empty search result is not
  evidence the number lacks WhatsApp. Mark a number as not on WhatsApp only
  when the deep link makes WhatsApp show its own invalid-number notice.
- The chat re-renders after text entry, detaching elements snapshotted
  earlier, and a click on a stale element index fails with "Element ... is
  gone or detached". Re-snapshot right before clicking Send, or click by
  coordinates.
- A chat can hold an unsent draft from an earlier attempt. Clear the
  compose box before typing so the leftover text does not ride along or
  duplicate the send.

From vibetasking/vibetasking-plugin, MIT.

More from vibetasking/vibetasking-plugin

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Sep 28, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from vibetasking

Cite this page

whatsapp skill. Agent Mart. https://agentmart.dev/skills/vibetasking-whatsapp (last updated 2026-10-24)