Dex CRM
Manage Dex personal CRM (getdex.com) contacts, notes, and reminders. Use when you need to: (1) Search or browse contacts, (2) Add notes about people, (3) Create or check reminders, (4) Look up contact details (phone, email, birthday). Requires DEX_API_KEY environment variable.
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 2 · 1.5k · 3 current installs · 3 all-time installs
by@jaybna
MIT-0
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
The skill's name/description match the observed behavior: SKILL.md documents Dex REST endpoints and README describes the same features. The included script (scripts/dex-cleanup.py) also operates on Dex contacts (archives junk contacts), which is consistent with a CRM management skill. However, the registry metadata lists no required environment variables while SKILL.md, README, and the script all require DEX_API_KEY — this mismatch is an incoherence that should be resolved.
Instruction Scope
SKILL.md’s runtime instructions are limited to calling the Dex REST API (curl examples) using the DEX_API_KEY header. There are no instructions to read unrelated local files or other credentials. The cleanup script performs bulk archive operations via the same API; it is potentially destructive (archives contacts) but its behavior is visible in the script and README (dry-run supported) and SKILL.md advises confirming before mutating data.
Install Mechanism
No install spec is provided (instruction-only), so nothing is downloaded or executed automatically. A local Python script is included in the package; that script will be written to disk when the skill is installed, but it is a simple, readable script using urllib to call the documented API. No external or obscure download URLs are used.
Credentials
The only secret the skill requires in practice is DEX_API_KEY, which is appropriate for a Dex integration. The problem is that the registry metadata did not declare any required env vars or a primary credential while the SKILL.md/README and scripts clearly require DEX_API_KEY. This inconsistency could lead to misconfiguration or surprise if users don't realize they must provide the API key.
Persistence & Privilege
The skill is not marked always:true and does not request system-wide config changes or other skills’ credentials. It can modify Dex data via the API (expected for a CRM skill). Autonomous invocation is allowed by default on the platform; combined with the included archival script this means an operator should be careful about allowing unattended runs, but that is a platform-level concern rather than an unexpected privilege requested by the skill itself.
What to consider before installing
Before installing: 1) Note the package includes a Python script that will archive contacts — run the script with --dry-run first and inspect its output. 2) Provide DEX_API_KEY only if you trust the skill and intend it to modify your Dex data; the registry metadata fails to declare this env var, so don’t assume it’s optional. 3) Verify the skill source/owner (README lists a GitHub handle) and prefer installing only from a verified source. 4) If you allow autonomous agent invocation, ensure policies or human-in-the-loop confirmation are in place to prevent accidental bulk-archiving. 5) Back up/export your contacts before running the cleanup for the first time.Like a lobster shell, security has layers — review code before you run it.
Current versionv1.0.0
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
Dex Personal CRM
Manage your Dex CRM directly from Clawdbot. Search contacts, add notes, manage reminders.
Authentication
Set DEX_API_KEY in gateway config env vars.
API Base
- Base URL:
https://api.getdex.com/api/rest - Headers:
Content-Type: application/jsonandx-hasura-dex-api-key: $DEX_API_KEY
Quick Reference
Contacts
# List contacts (paginated)
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/contacts?limit=10&offset=0"
# Get contact by ID
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/contacts/{contactId}"
# Search contact by email
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/search/contacts?email=someone@example.com"
# Create contact
curl -s -X POST -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"first_name":"John","last_name":"Doe","emails":["john@example.com"]}' \
"https://api.getdex.com/api/rest/contacts"
# Update contact
curl -s -X PUT -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"job_title":"CEO"}' \
"https://api.getdex.com/api/rest/contacts/{contactId}"
# Delete contact
curl -s -X DELETE -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/contacts/{contactId}"
Notes (Timeline Items)
# List notes
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/timeline_items?limit=10&offset=0"
# Notes for a contact
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/timeline_items/contacts/{contactId}"
# Create note
curl -s -X POST -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"note":"Met for coffee, discussed project","contact_ids":["contact-uuid"],"event_time":"2026-01-27T12:00:00Z"}' \
"https://api.getdex.com/api/rest/timeline_items"
# Update note
curl -s -X PUT -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"note":"Updated note text"}' \
"https://api.getdex.com/api/rest/timeline_items/{noteId}"
# Delete note
curl -s -X DELETE -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/timeline_items/{noteId}"
Reminders
# List reminders
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/reminders?limit=10&offset=0"
# Create reminder
curl -s -X POST -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"body":"Follow up on proposal","due_at_date":"2026-02-01","contact_ids":["contact-uuid"]}' \
"https://api.getdex.com/api/rest/reminders"
# Update reminder
curl -s -X PUT -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"is_complete":true}' \
"https://api.getdex.com/api/rest/reminders/{reminderId}"
# Delete reminder
curl -s -X DELETE -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/reminders/{reminderId}"
Contact Fields
first_name,last_name,job_title,descriptionemails(array of{email})phones(array of{phone_number})education,website,linkedin,facebook,twitter,instagram,telegrambirthday,image_urllast_seen_at,next_reminder_atis_archived,created_at,updated_at
Searching Contacts
The API only supports search by email. For name-based search, fetch contacts in batches and filter locally. Use a reasonable limit (50-100) for browsing.
Notes
- Always confirm before creating, updating, or deleting contacts/notes/reminders
- Contact search by name requires local filtering (API only supports email search)
- Use pagination (limit/offset) for large result sets
- The
event_timefield on notes is when the interaction happened, not when the note was created
Files
3 totalSelect a file
Select a file to preview.
Comments
Loading comments…
