Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage WhatsApp instances and send messages via the Evolution API. Use when you need to list/create/connect instances, send messages (text, media, location, contact, buttons, lists, polls), query chats/contacts, manage groups, or configure webhooks. Calls the Evolution API REST endpoints directly.
.claude/skills/evolution-foundation-int-evolution-api/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 115% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 51% | 0% |
Interact with your Evolution API instance to manage WhatsApp connections, send messages, query chats, manage groups, and configure webhooks.
EVOLUTION_API_URL=https://api.evolution-api.com EVOLUTION_API_KEY=your-global-api-key
bashpython3 scripts/evolution_api_client.py instances
bashpython3 scripts/evolution_api_client.py create_instance my-instance python3 scripts/evolution_api_client.py create_instance my-instance --qrcode
bashpython3 scripts/evolution_api_client.py connect my-instance
bashpython3 scripts/evolution_api_client.py connection_state my-instance
bashpython3 scripts/evolution_api_client.py restart my-instance
bashpython3 scripts/evolution_api_client.py logout my-instance
bashpython3 scripts/evolution_api_client.py delete_instance my-instance
bashpython3 scripts/evolution_api_client.py set_presence my-instance --presence available
bashpython3 scripts/evolution_api_client.py summary
bashpython3 scripts/evolution_api_client.py send_text my-instance 5511999999999 "Hello, world!"
bashpython3 scripts/evolution_api_client.py send_media my-instance 5511999999999 --type image --url https://example.com/photo.jpg --caption "Check this out"
bashpython3 scripts/evolution_api_client.py send_location my-instance 5511999999999 --lat -23.5505 --lng -46.6333 --name "Sao Paulo"
bashpython3 scripts/evolution_api_client.py send_contact my-instance 5511999999999 --name "John Doe" --phone 5511888888888
bashpython3 scripts/evolution_api_client.py send_buttons my-instance 5511999999999 --text "Choose an option" --buttons '[{"buttonId":"1","buttonText":{"displayText":"Option 1"}}]'
bashpython3 scripts/evolution_api_client.py send_list my-instance 5511999999999 --title "Menu" --sections '[{"title":"Section 1","rows":[{"title":"Item 1","rowId":"1"}]}]'
bashpython3 scripts/evolution_api_client.py send_poll my-instance 5511999999999 --name "Favorite color?" --values "Red,Blue,Green"
bashpython3 scripts/evolution_api_client.py send_reaction my-instance --key '{"remoteJid":"5511999999999@s.whatsapp.net","fromMe":false,"id":"MSG_ID"}' --reaction "👍"
bashpython3 scripts/evolution_api_client.py send_template my-instance 5511999999999 "Template text here"
bashpython3 scripts/evolution_api_client.py find_chats my-instance python3 scripts/evolution_api_client.py find_chats my-instance --where '{"id":"5511999999999@s.whatsapp.net"}' --take 10
bashpython3 scripts/evolution_api_client.py find_messages my-instance --where '{"key":{"remoteJid":"5511999999999@s.whatsapp.net"}}' --take 20
bashpython3 scripts/evolution_api_client.py mark_read my-instance --messages '[{"remoteJid":"5511999999999@s.whatsapp.net","fromMe":false,"id":"MSG_ID"}]'
bashpython3 scripts/evolution_api_client.py archive_chat my-instance 5511999999999 --archive true
bashpython3 scripts/evolution_api_client.py update_profile_name my-instance "New Name"
bashpython3 scripts/evolution_api_client.py update_profile_status my-instance "Available for business"
bashpython3 scripts/evolution_api_client.py find_contacts my-instance --where '{"id":"5511999999999@s.whatsapp.net"}'
bashpython3 scripts/evolution_api_client.py check_numbers my-instance --numbers 5511999999999,5511888888888
bashpython3 scripts/evolution_api_client.py create_group my-instance --subject "My Group" --participants 5511999999999,5511888888888
bashpython3 scripts/evolution_api_client.py group_info my-instance --jid 120363xxxxx@g.us
bashpython3 scripts/evolution_api_client.py group_participants my-instance --jid 120363xxxxx@g.us
bashpython3 scripts/evolution_api_client.py update_participant my-instance --jid 120363xxxxx@g.us --action add --participants 5511999999999
bashpython3 scripts/evolution_api_client.py webhooks my-instance
bashpython3 scripts/evolution_api_client.py set_webhook my-instance --url https://example.com/hook --events messages.upsert,connection.update
bashpython3 scripts/evolution_api_client.py delete_webhook my-instance
All output is JSON to stdout. Use --json flag for raw JSON on any command (default behavior).
+ (e.g. 5511999999999).120363...@g.us.connect endpoint returns a QR code as base64 PNG in the response.summary command is composite: it calls fetchInstances then connectionState for each instance.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,518 | 5,612 | -41% | 1 | 1 | 0% | 1,627 | 2,118 | +30% | 0 | 0 | — |
case-02 | fail→fail | 8,703 | 5,810 | -33% | 1 | 1 | 0% | 1,639 | 2,254 | +38% | 0 | 0 | — |
case-03 | fail→pass | 6,546 | 5,989 | -9% | 1 | 1 | 0% | 1,370 | 2,199 | +61% | 0 | 0 | — |
case-04 | fail→fail | 9,069 | 1,869 | -79% | 1 | 1 | 0% | 1,651 | 2,138 | +29% | 0 | 0 | — |
case-05 | fail→pass | 7,894 | 1,738 | -78% | 1 | 1 | 0% | 1,509 | 2,101 | +39% | 0 | 0 | — |
case-10 | fail→pass | 7,915 | 2,741 | -65% | 1 | 1 | 0% | 1,468 | 2,312 | +57% | 0 | 0 | — |
case-06 | fail→pass | 5,381 | 2,297 | -57% | 1 | 1 | 0% | 1,044 | 2,247 | +115% | 0 | 0 | — |
case-07 | fail→pass | 7,202 | 5,228 | -27% | 1 | 1 | 0% | 1,449 | 2,189 | +51% | 0 | 0 | — |
case-08 | fail→pass | 8,708 | 2,618 | -70% | 1 | 1 | 0% | 1,814 | 2,297 | +27% | 0 | 0 | — |
case-09 | fail→pass | 8,384 | 2,073 | -75% | 1 | 1 | 0% | 853 | 2,153 | +152% | 0 | 0 | — |
case-11 | fail→pass | 12,548 | 2,447 | -80% | 1 | 1 | 0% | 2,365 | 2,259 | -4% | 0 | 0 | — |
case-12 | fail→fail | 12,449 | 5,618 | -55% | 1 | 1 | 0% | 2,300 | 2,134 | -7% | 0 | 0 | — |
case-13 | fail→pass | 10,123 | 3,374 | -67% | 1 | 1 | 0% | 1,941 | 1,968 | +1% | 0 | 0 | — |
case-14 | fail→pass | 4,486 | 14,788 | +230% | 1 | 1 | 0% | 679 | 1,971 | +190% | 0 | 0 | — |
case-15 | fail→pass | 4,103 | 1,146 | -72% | 1 | 1 | 0% | 547 | 1,997 | +265% | 0 | 0 | — |
case-16 | fail→pass | 6,252 | 2,762 | -56% | 1 | 1 | 0% | 366 | 2,127 | +481% | 0 | 0 | — |
case-17 | fail→fail | 3,745 | 5,447 | +45% | 1 | 1 | 0% | 536 | 2,123 | +296% | 0 | 0 | — |
case-18 | fail→pass | 7,161 | 2,589 | -64% | 1 | 1 | 0% | 1,432 | 2,121 | +48% | 0 | 0 | — |
case-19 | fail→pass | 4,054 | 4,574 | +13% | 1 | 1 | 0% | 567 | 2,041 | +260% | 0 | 0 | — |
case-20 | fail→fail | 10,123 | 5,387 | -47% | 1 | 1 | 0% | 1,102 | 2,160 | +96% | 0 | 0 | — |
case-21 | fail→pass | 6,268 | 1,156 | -82% | 1 | 1 | 0% | 1,268 | 1,968 | +55% | 0 | 0 | — |
case-22 | pass→pass | 11,033 | 7,893 | -28% | 1 | 1 | 0% | 1,994 | 3,188 | +60% | 0 | 0 | — |
case-23 | pass→pass | 12,218 | 8,434 | -31% | 1 | 1 | 0% | 2,165 | 3,303 | +53% | 0 | 0 | — |
case-24 | pass→pass | 8,917 | 6,674 | -25% | 1 | 1 | 0% | 1,952 | 3,146 | +61% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 18 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +63 percentage points is the difference between those two pass rates over the 18 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.