Skip to content
Conduit

mcp server

cueport

CueAPI agent-work scheduling: cues, executions, claiming, heartbeats, and outcomes.

CloudCorpRecords/cueportcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "cueport": {
      "command": "npx",
      "args": [
        "-y",
        "@reneturcios/cueport"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Nov 2, 2026

cueport

cueport gives an MCP host or a terminal access to CueAPI, the coordination layer for agent work: schedule cues (recurring cron or one-time), fire them on demand, watch their executions, claim worker executions, keep a claim alive with heartbeats, and close the loop by reporting an outcome backed by evidence. One binary serves a command-line interface and a stdio MCP server.

An API key is required. Set CUEAPI_API_KEY to a key from your CueAPI account; every call sends it as Authorization: Bearer <key>, and a missing key fails before any request is attempted. Self-hosting or testing against another host? Set CUEAPI_BASE_URL alongside the key; when it is unset, calls go to https://api.cueapi.ai.

Install

npx @reneturcios/cueport list-cues

Or run the container image:

docker run -i ghcr.io/cloudcorprecords/cueport

The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.

CLI

cueport create-cue --name digest --schedule "0 9 * * *" --callback-url https://example.test/hook
cueport list-cues --status active --limit 5
cueport get-cue cue_abc123
cueport fire-cue cue_abc123 --payload-override '{"topic":"release notes"}'
cueport update-cue cue_abc123 --name "morning digest"
cueport pause-cue cue_abc123
cueport resume-cue cue_abc123
cueport delete-cue cue_abc123
cueport list-executions --cue-id cue_abc123 --status failed
cueport get-execution exec_123
cueport list-claimable --task digest --agent worker-a
cueport claim-execution exec_123 --worker-id worker-7
cueport claim-next --task-name digest --worker-id worker-7
cueport heartbeat exec_123 --worker-id worker-7
cueport report-outcome exec_123 --outcome succeeded --external-id ext_42 --result-url https://example.test/result

cueport --version

Commands print the upstream JSON payload. Exit codes: 0 on success, 1 when a call fails (including a missing API key or an upstream API error), 2 for usage errors.

Two behaviours are worth knowing. Pausing and resuming are not separate endpoints: both are a PATCH /v1/cues/{id} carrying only a status field (paused or active). And claim-next is a fan-out, not a single call: the claim endpoint has no task filter, so the tool first fetches the server-side filtered claimable list, picks the oldest entry, and then claims that execution by id.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

npx -y @reneturcios/cueport mcp

MCP client configuration:

{
  "mcpServers": {
    "cueport": {
      "command": "npx",
      "args": ["-y", "@reneturcios/cueport", "mcp"],
      "env": {
        "CUEAPI_API_KEY": "cue_sk_..."
      }
    }
  }
}

Add CUEAPI_BASE_URL to the env block to point the server at a different CueAPI-compatible host.

Tools

ToolInputWhat it does
cueapi_create_cuename, schedule (required); optional description, callback, method, timezone, payload, task and platform fieldsCreate a recurring or one-time cue.
cueapi_list_cuesstatus, limit (optional)List cues, filtered by status.
cueapi_get_cuecue_idFetch one cue.
cueapi_fire_cuecue_id; optional payload_override, merge_strategy (merge default, or replace)Fire a cue immediately.
cueapi_update_cuecue_id plus any mutable cue fieldsSparse update; only provided fields are sent.
cueapi_pause_cuecue_idPause a cue (PATCH with status paused).
cueapi_resume_cuecue_idResume a cue (PATCH with status active).
cueapi_delete_cuecue_idDelete a cue permanently.
cueapi_list_executionscue_id, status, limit (optional)List executions, filtered by cue and status.
cueapi_get_executionexecution_idFetch one execution, with state and outcome.
cueapi_list_claimable_executionstask, agent, limit (optional)List unclaimed worker executions, filtered server-side.
cueapi_claim_executionexecution_id; optional worker_idAtomically claim one execution.
cueapi_claim_next_executiontask_name, worker_id (optional)Claim the oldest claimable execution.
cueapi_execution_heartbeatexecution_id, worker_id (both required)Extend a claim lease; worker_id travels in the X-Worker-Id header.
cueapi_report_outcomeexecution_id, outcome (required); optional evidence fieldsReport a write-once outcome with evidence.

Development

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

↑↓ navigate openesc close