Skip to main content
Glama
README.md
# crazytel (Agent Plugin)

Portable [Agent Plugin](https://agent-plugins.org/) wrapping Crazytel Core telephony + SMS Center via a zero-dependency Node MCP server.

## Layout

```text
crazytel-plugin/
├── plugin.json          # manifest + CRAZYTEL_API_KEY variable
├── mcp.json             # stdio MCP server
├── package.json         # no runtime deps (Node 18+)
├── README.md
├── server/index.js      # hand-rolled JSON-RPC MCP over stdio
├── skills/crazytel/SKILL.md
└── scripts/prove.mjs    # initialize + tools/list + missing-key tool call
```

## Setup

1. Set plugin variable / env `CRAZYTEL_API_KEY` (sent as `x-crazytel-api-key`).
2. Load this directory as an Agent Plugin (not `.cursor-plugin/`).
3. Clients expand `${PLUGIN_ROOT}` and map `CRAZYTEL_API_KEY` into the MCP process env per `mcp.json`.

## Run the server locally

```bash
export CRAZYTEL_API_KEY=your-key   # optional for tools/list
node server/index.js
```

Newline-delimited JSON-RPC on stdin/stdout.

## Prove without a key

```bash
node scripts/prove.mjs
```

Expects `tools/list` to succeed and a sample `tools/call` to fail with a clear missing-key error.

## Scope (v0.1)

Included: balance, DIDs, purchase helpers, SIP trunks, verified CLI, SMS v2 send/bulk/schedule, SMS Center conversations/contacts/lists/opt-out/stats.

Skipped: Premium Fax, Hybrid SIPREC, CrazyPBX call recordings, deprecated v1 SMS send and v1 CDRs.


## Install

1. Set env / plugin variable `CRAZYTEL_API_KEY` (header `x-crazytel-api-key`).
2. From [cursor.directory](https://cursor.directory) (community listing) or clone this repo into Cursor as a plugin.
3. Grok Bot loads plugins from the Cursor dashboard/marketplace only — local `~/.cursor/plugins/local` is IDE-only.

## Publish

Listed on [cursor.directory](https://cursor.directory) (community). Not submitted to Cursor Marketplace.

TDQS

B3.2/5.0

Scored across 42 tools

Disambiguation4/5

Core CRUD areas are separated by resource (contacts, contact lists, DIDs, SIP trunks, opt-outs, SMS), and descriptions clarify boundaries. However, list_dids / list_sms_dids and list_messages / list_conversations / get_conversation overlap enough that an agent could initially confuse them.

Naming Consistency4/5

The majority follow a clean list/get/create/update/delete_<resource> pattern with consistent resource nouns. Minor exceptions like add_contacts_to_list, check_opt_out, and bulk_send_sms break the pattern but remain readable.

Tool Count2/5

42 tools is well beyond the range where an agent can easily keep the full surface in context, and many are close list/get variants (e.g., three SMS stats tools, two DID list tools). It would be more coherent split into SMS/DID/contacts sub-servers.

Completeness3/5

The core CRUD for contacts, contact lists, DIDs, and SIP trunks is covered, plus SMS send/bulk/schedule and stats. But opt-out lists/entries have create/list/check without delete/update, scheduled messages cannot be canceled, and contact lists have add but no remove member operation.

Maintenance

ActivityMaintained
ResponsivenessNo issues