Get started
The command line
Every API operation from a terminal, an agent's fields as types, test events on your own machine, and MCP over standard input.
One file, and it needs only Node.js 22 or later:
curl -O https://developers.aigently.ai/aigently.mjs
export AIGENTLY_API_KEY=ag_test_...
node aigently.mjs conversations list --limit 5
Any API operation
Every operation in the reference is a command: its resource, its method, its ids in order, and its fields as flags — the field's name with dashes.
node aigently.mjs agents retrieve 8a1f3c2e-…
node aigently.mjs conversations retrieve 5f0c9a52-… --include transcript
node aigently.mjs calls create --agent-id 8a1f3c2e-… --to-number +966501234567 \
--variables '{"first_name": "Sara"}'
node aigently.mjs conversations list --agent-id 8a1f3c2e-… --all > conversations.jsonl
- Lists take commas (
--include transcript,cost), or a JSON array when an item has a comma in it (--turns '["Hi, are you open on Sunday?"]'). Objects take JSON, and a file takes its path (--file ./faq.pdf).nullsends null, which is how a number is detached from its agent. --json '{…}', or--json @body.json, sends a whole body; flags add to it.--allwalks every page of a list, printing one JSON object a line.- A request that takes an
Idempotency-Keygets one, unless you pass your own with--idempotency-key. - The answer is printed as JSON. A refusal prints its
code,detailand request id, and exits 1.
node aigently.mjs operations lists every command.
An agent's fields as types
node aigently.mjs types --agent 8a1f3c2e-… > agent.ts
node aigently.mjs types --agent 8a1f3c2e-… --lang python > agent_fields.py
It writes the agent's three lists of fields — what a conversation can start
with, what it collects, and what its analysis writes — as TypeScript interfaces or Python
TypedDicts, required fields marked. Write them again when the agent's fields change: the
agent.updated event says when. A field named like a Python keyword, such as from, is written
in the TypedDict("…", {…}) form, which takes any name.
Evaluations in a build step: evaluate
node aigently.mjs evaluate 8a1f3c2e-…
It rehearses the agent's saved conversations, waits for the verdict, prints every conversation's
outcome, and exits 0 when all passed, 1 when one failed, and 3 when none failed but some could
not be checked. --json prints the whole run instead, and --timeout says how many seconds to wait
(25 minutes unless you say). See Evaluations in your pipeline.
A call, followed live: follow
node aigently.mjs follow 5f0c9a52-…
It prints what is said on a call as it is said — Caller: and Agent: lines — and stops when the
call ends. --json prints each line as the API sends it. See Live calls.
Test events on your machine: listen
The platform cannot reach localhost. listen keeps a connection open to the API with a test
key and passes on everything a test webhook receiver would be sent — and, if you ask, the context
lookups of test calls — to a server on your machine.
node aigently.mjs listen --forward-to localhost:3000/hooks
- Events. Each test event is POSTed to
--forward-towith the headers a webhook carries, signed with the session's own secret, which it prints when the connection is ready. Check them exactly as you would a receiver's (how). What your server answers is only printed. - Lookups. With
--forward-lookups-to, a test call's context lookup is POSTed there, and your server's status and body go back to the call as its answer — so a test inbound call reaches your own code. An open session is asked before the agent's test address or its sample answer. - Only what the key reaches. A key limited to some projects or agents hears only about those, and is asked only their test calls' lookups.
- Only what the key may read. Listening needs
conversations:read, and aconversation.transcriptevent also needstranscripts:read. Every key preset has both. - Test keys only. A live key is refused when it connects: real conversations go to receivers whose addresses have been checked, never to a laptop.
- A few at a time. A key may keep 3 sessions open, and an organization 10.
- It stops when the key does. Revoke the key, let it expire, or rotate it without an overlap, and the session ends within half a minute.
- Stop it and its session is gone, with everything it was holding: the next test call's events go only to your test receivers.
An AI assistant: mcp
node aigently.mjs mcp carries an assistant's MCP messages from standard input to
the API's MCP server, and the answers back — for an assistant that runs its tools as a local
program.
Options
| Option | What it does |
|---|---|
--api-key <key> |
Your key. Or set AIGENTLY_API_KEY. |
--api <url> |
The API's address, for a company running its own copy. Or set AIGENTLY_BASE_URL. Default https://api.aigently.ai. |
--all |
For a list: every page, one JSON object a line. |
--idempotency-key <key> |
Your own id for a request that takes one. |
--forward-to <url> |
listen: where to POST each test event, like localhost:3000/hooks. |
--forward-lookups-to <url> |
listen: where to POST each test call's lookup. |
--help |
The options. |
Your key travels in a header, never in an address, where a proxy would log it.