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
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & 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 zip
latestvk97fbk45z8dapnynhcp63ar4s9803yza

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/json and x-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, description
  • emails (array of {email})
  • phones (array of {phone_number})
  • education, website, linkedin, facebook, twitter, instagram, telegram
  • birthday, image_url
  • last_seen_at, next_reminder_at
  • is_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_time field on notes is when the interaction happened, not when the note was created

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…