Authenticate with the Chanl API.
Flag Description -k, --api-key <key>Use an API key directly (skips browser) --browserForce browser-based login --base-url <url>Override the API base URL
chanl login
chanl login --api-key ak_xxx Remove stored credentials.
Check API health status.
Manage CLI configuration.
Subcommand Description config listList all configuration values config get <key>Get a configuration value config set <key> <value>Set a configuration value config delete <key>Delete a configuration value config pathShow path to configuration file config use <environment>Reset to production API
chanl config list
chanl config set workspace-id ws_abc123
chanl config get workspace-id
chanl config delete workspace-id
chanl config path
chanl config use production Manage workspaces.
Subcommand Description workspaces listList your workspaces workspaces get <id>Get workspace details workspaces use <id>Set active workspace (saves to config)
chanl workspaces list
chanl workspaces get ws_abc123
chanl workspaces use ws_abc123 Manage AI agents (VAPI, ElevenLabs, custom).
Subcommand Description agents listList all agents agents get <id>Get agent details agents createCreate a new agent agents update <id>Update an existing agent agents delete <id>Delete an agent agents sync <platform>Sync agents from a platform agents sync-allSync from all configured platforms agents importImport a specific agent from a third-party platform agents publish <agent-id>Publish an agent to a third-party platform agents push-mcp <agent-id>Push MCP URL to a third-party agent agents statsView agent statistics
chanl agents list [options] Flag Description Default -p, --platform <platform>Filter by platform (vapi, elevenlabs, custom) -s, --status <status>Filter by status (active, inactive) -l, --limit <number>Items per page 20--page <number>Page number 1
chanl agents list --platform vapi --status active chanl agents create [options] Flag Description -f, --file <path>Path to JSON file with agent data --template [platform]Output a template JSON (vapi, elevenlabs, custom)
chanl agents create --template vapi > agent.json
chanl agents create -f agent.json chanl agents update < i d > [options] Flag Description -f, --file <path>Path to JSON file with update data --sync-to-vapiSync changes back to VAPI platform
chanl agents update abc123 -f updates.json --sync-to-vapi chanl agents delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt --delete-from-integrationAlso delete from platform (VAPI, etc.)
chanl agents delete abc123 --delete-from-integration chanl agents sync < platfor m > [options] Supported platforms: vapi, bland, twilio.
Flag Description -f, --forceForce update existing agents --cleanDelete all existing agents for this platform before sync
chanl agents sync vapi --force chanl agents sync-all [options] Flag Description -f, --forceForce update existing agents
chanl agents sync-all --force chanl agents import [options] Flag Description --from <platform>Source platform (vapi, retell, bland) --agent-id <id>External agent ID on the source platform -n, --name <name>Override the agent name
chanl agents import --from vapi --agent-id asst_abc123 --name "My Agent" chanl agents publish < agent-i d > [options] Flag Description --to <platform>Target platform (vapi, retell, bland) --target <ext-id>External agent ID to update (omit to create new) --with-mcpInclude MCP URL for tool access
chanl agents publish agent_123 --to vapi --with-mcp chanl agents push-mcp < agent-i d > [options] Flag Description --to <platform>Target platform (vapi, retell, bland) --target <ext-id>External agent ID (omit to use default)
chanl agents push-mcp agent_123 --to vapi Manage MCP tools.
Subcommand Description tools listList all tools in the workspace tools get <id>Get tool details tools createCreate a new tool from JSON file tools update <id>Update a tool from JSON file tools delete <id>Delete a tool permanently tools execute <id>Execute a tool and get results tools test <id>Test a tool execution (dry run) tools executions <id>Get execution history for a tool tools enable <id>Enable a tool (makes it available in MCP) tools disable <id>Disable a tool (hides from MCP) tools categoriesShow tool categories (tags) with counts
chanl tools list [options] Flag Description Default -t, --type <type>Filter by type: http, javascript, code -e, --enabledShow only enabled tools -d, --disabledShow only disabled tools --tag <tag>Filter by tag --no-systemExclude system tools -l, --limit <number>Items per page 20-p, --page <number>Page number 1
chanl tools list --type http --enabled --no-system chanl tools get 507f1f77bcf86cd799439011 chanl tools create [options] Flag Description -f, --file <path>Path to JSON file with tool definition --template [type]Output a sample JSON template (http or javascript)
chanl tools create --template http > my-tool.json
chanl tools create -f my-tool.json chanl tools update < i d > [options] Flag Description -f, --file <path>Path to JSON file with updates
chanl tools update 507f1f77bcf86cd799439011 -f updates.json chanl tools delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl tools delete 507f1f77bcf86cd799439011 -y chanl tools execute < i d > [options] Flag Description -i, --input <json>Input arguments as JSON string
chanl tools execute 507f1f77bcf86cd799439011 -i '{"query": "hello"}' chanl tools test < i d > [options] Flag Description -i, --input <json>Input arguments as JSON string
chanl tools test 507f1f77bcf86cd799439011 -i '{"message": "test"}' chanl tools executions < i d > [options] Flag Description Default -l, --limit <number>Items per page 10-p, --page <number>Page number 1--status <status>Filter: pending, running, completed, failed
chanl tools executions 507f1f77bcf86cd799439011 --status failed --limit 5 chanl tools enable < i d >
chanl tools disable < i d > Shows all tags used across tools with total and enabled counts.
Manage MCP toolsets (collections of tools).
Subcommand Description toolsets listList all toolsets toolsets get <id>Get toolset details toolsets createCreate a new toolset from JSON file toolsets update <id>Update a toolset from JSON file toolsets delete <id>Delete a toolset permanently toolsets enable <id>Enable a toolset toolsets disable <id>Disable a toolset toolsets add-tools <id>Add tools to a toolset toolsets remove-tools <id>Remove tools from a toolset
chanl toolsets list [options] Flag Description Default -e, --enabledShow only enabled toolsets -d, --disabledShow only disabled toolsets --tag <tag>Filter by tag -s, --search <search>Search by name or description -l, --limit <number>Items per page 20-p, --page <number>Page number 1
chanl toolsets list --enabled --search "api" chanl toolsets create [options] Flag Description -f, --file <path>Path to JSON file with toolset definition --templateOutput a sample JSON template
chanl toolsets create --template > my-toolset.json
chanl toolsets create -f my-toolset.json chanl toolsets update < i d > [options] Flag Description -f, --file <path>Path to JSON file with updates
chanl toolsets update 507f1f77bcf86cd799439011 -f updates.json chanl toolsets delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl toolsets delete 507f1f77bcf86cd799439011 -y chanl toolsets enable < i d >
chanl toolsets disable < i d > chanl toolsets add-tools < i d > [options] Flag Description -t, --tools <ids>Comma-separated tool IDs
chanl toolsets add-tools 507f1f77bcf86cd799439011 -t tool1,tool2,tool3 chanl toolsets remove-tools < i d > [options] Flag Description -t, --tools <ids>Comma-separated tool IDs
chanl toolsets remove-tools 507f1f77bcf86cd799439011 -t tool1,tool2 Manage prompt templates.
Subcommand Description prompts listList all prompts prompts get <id>Get prompt details prompts createCreate a new prompt prompts update <id>Update an existing prompt prompts delete <id>Delete a prompt prompts versions list <id>List version history prompts revert <id>Revert to a prior version prompts resolve <id>Resolve Liquid variables prompts apply <id>Apply prompt to an agent
chanl prompts list [options] Flag Description Default -c, --category <category>Filter: support, sales, onboarding, general -s, --status <status>Filter: active, draft, archived --search <query>Search by name or content -l, --limit <number>Items per page 20--page <number>Page number 1
chanl prompts list --category support --status active chanl prompts create [options] Flag Description -f, --file <path>Path to JSON file with prompt data
chanl prompts create -f prompt.json chanl prompts update < i d > [options] Flag Description -f, --file <path>Path to JSON file with update data
chanl prompts update abc123 -f updates.json chanl prompts delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl prompts delete abc123 --yes chanl prompts versions list < i d > chanl prompts revert < i d > --to-version < numbe r > chanl prompts resolve < i d > [options] Flag Description -f, --file <path>JSON with variables object
chanl prompts apply < i d > [options] Flag Description -a, --agent <agentId>Agent to link (required) --syncSync agent to external platform after apply
Manage knowledge base entries (RAG). Aliased as kb.
Subcommand Description kb listList knowledge base entries kb get <id>Get knowledge entry details kb addAdd content (text, URL, or file) kb update <id>Update a knowledge entry kb delete <id>Delete a knowledge entry kb search <query>Search the knowledge base kb status <taskId>Check processing status of async upload
Flag Description Default -s, --search <query>Filter by title/content --source <source>Filter: text, url, file, manual --status <status>Filter by processing status --folder <folderId>Filter by folder ID -l, --limit <number>Items per page 20--page <number>Page number 1
chanl kb list --source url --status completed chanl kb get < i d > [options] Flag Description --chunksInclude chunk details
chanl kb get abc123 --chunks At least one of --text, --url, or --file is required.
Flag Description Default -t, --title <title>Title for the entry --text <content>Direct text content --url <url>URL to fetch content from -f, --file <path>File to upload (PDF, TXT, HTML, MD) --folder <folderId>Folder ID to organize entry --tags <tags>Comma-separated tags --category <category>Category for organization --crawl-depth <depth>URL crawl depth (0-2) 0--max-pages <pages>Max pages to crawl (1-50) 10
chanl kb add --text "FAQ content" --title "FAQ" --tags "faq,support"
chanl kb add --url https://docs.example.com --crawl-depth 1 --max-pages 20
chanl kb add --file ./guide.pdf --title "User Guide" chanl kb update < i d > [options] Flag Description -t, --title <title>New title --content <content>New content (text entries only) --tags <tags>Comma-separated tags --category <category>Category --enabled <boolean>Enable/disable for search
chanl kb update abc123 --title "New Title" --enabled false chanl kb delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl kb delete abc123 --yes chanl kb search < quer y > [options] Flag Description Default -m, --mode <mode>Search mode: hybrid, vector, text hybrid-l, --limit <number>Max results 10--min-score <score>Minimum similarity score (0-1)
chanl kb search "how to reset password" --mode vector --limit 5 Manage agent memory.
Subcommand Description memory listList memories with optional filters memory get <id>Get detailed info about a memory memory createCreate a new memory memory update <id>Update an existing memory memory delete <id>Delete a memory permanently memory searchSearch memories using semantic similarity
chanl memory list [options] Flag Description Default --entity-type <type>Filter: customer, session, agent, conversation --entity-id <id>Filter by entity ID --agent-id <id>Filter by agent ID --source <source>Filter: conversation, manual, extraction -l, --limit <number>Items per page 20-p, --page <number>Page number 1
chanl memory list --entity-type customer --agent-id agent_abc chanl memory create [options] Flag Description --entity-type <type>Entity type: customer, session, agent, conversation --entity-id <id>Entity ID --content <text>Memory content text --agent-id <id>Optional agent scope --source <source>Source: conversation, manual, extraction --ttl <seconds>Time-to-live in seconds -f, --file <path>JSON file (overrides all other options)
Required (unless using -f): --entity-type, --entity-id, --content.
chanl memory create --entity-type customer --entity-id cust_123 --content "Prefers email"
chanl memory create -f memory.json chanl memory update < i d > [options] Flag Description --content <text>Updated content text --deactivateDeactivate the memory --activateReactivate the memory
chanl memory update 680a1b2c3d4e5f6789012345 --content "Updated preference"
chanl memory update 680a1b2c3d4e5f6789012345 --deactivate chanl memory delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl memory delete 680a1b2c3d4e5f6789012345 -y chanl memory search [options] All three of --entity-type, --entity-id, and --query are required.
Flag Description --entity-type <type>Entity type (required) --entity-id <id>Entity ID (required) --query <text>Search query text (required) --agent-id <id>Optional agent scope filter -l, --limit <number>Maximum results --min-score <number>Minimum relevance score (0-1)
chanl memory search --entity-type customer --entity-id cust_123 --query "email preferences" Start an interactive chat session with an agent.
chanl chat < agent-i d > [options] Flag Description -m, --message <text>Send a single message and exit -s, --streamEnable streaming responses (real-time text) -w, --workspace <id>Workspace ID override
Interactive mode (default): opens a prompt loop. Type exit, quit, or press Ctrl+C to end.
Single message mode : send one message with --message, print response, exit.
chanl chat abc123
chanl chat abc123 --stream
chanl chat abc123 --message "Hello" --json Make an outbound phone call with an AI agent.
chanl call < phon e > [options] The <phone> argument must be in E.164 format (e.g., +15551234567).
Flag Description -a, --agent <agentId>Agent ID to handle the call -p, --phone-number <id>Source phone number ID (from your workspace) -n, --customer-name <name>Customer name -s, --scorecard <id>Scorecard ID to evaluate the call --no-watchStart the call and exit immediately -w, --workspace <id>Workspace ID override
Interactive mode (default): live transcript + scorecard summary when the call ends. Press Ctrl+C to stop monitoring (call continues).
No-watch mode : start the call and exit. Use chanl calls get <id> to check status later.
chanl call +15551234567 --agent ag_abc123
chanl call +15551234567 --agent ag_abc --scorecard sc_123 --no-watch Manage and run test scenarios.
Subcommand Description scenarios listList all scenarios scenarios get <id>Get a scenario by ID scenarios run <id>Execute a scenario scenarios run-allRun all scenarios for an agent scenarios executionsList scenario executions scenarios execution <id>Get execution details scenarios history <id>Get simulation history for a scenario
chanl scenarios list [options] Flag Description Default -s, --status <status>Filter: draft, active, paused, completed, archived -c, --category <category>Filter by category -l, --limit <number>Items per page 20-p, --page <number>Page number 1
chanl scenarios list --status active --category sales chanl scenarios run < i d > [options] Flag Description Default -a, --agent <agentId>Agent to run against -m, --mode <mode>Simulation mode: text, websocket, phone websocket-p, --phone <number>Phone number for phone mode (E.164) -w, --watchWatch execution progress until completion --dry-runValidate without executing
chanl scenarios run abc123 --watch
chanl scenarios run abc123 --agent agent_xyz --mode text
chanl scenarios run abc123 --mode phone --phone +14155551234 chanl scenarios run-all [options] Flag Description Default -a, --agent <agentId>Agent ID to run scenarios against --min-score <score>Minimum passing score (0-100) 0--parallel <count>Max concurrent executions 3-m, --mode <mode>Simulation mode: text, phone text
Exit code 0 if all pass, 1 if any fail.
chanl scenarios run-all --agent agent_abc --min-score 80 --parallel 5 chanl scenarios executions [options] Flag Description Default -s, --scenario <id>Filter by scenario ID --status <status>Filter: queued, running, completed, failed, timeout, cancelled -l, --limit <number>Items per page 10-p, --page <number>Page number 1
chanl scenarios executions --scenario abc123 --status completed chanl scenarios execution < executionI d > chanl scenarios history < scenarioI d > [options] Flag Description Default -l, --limit <number>Number of simulations to show 10
chanl scenarios history abc123 --limit 5 Manage test personas for scenario simulations.
Subcommand Description personas listList all personas personas get <id>Get persona details personas createCreate a new persona personas update <id>Update an existing persona personas delete <id>Delete a persona
chanl personas list [options] Flag Description Default -l, --language <lang>Filter: english, spanish, portuguese --activeShow only active personas --limit <number>Items per page 20-p, --page <number>Page number 1
chanl personas list --language english --active chanl personas create [options] Flag Description -f, --file <path>Path to JSON file with persona data --templateOutput a template JSON to stdout
chanl personas create --template > persona.json
chanl personas create -f persona.json chanl personas update < i d > [options] Flag Description -f, --file <path>Path to JSON file with update data
chanl personas update abc123 -f updates.json chanl personas delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl personas delete abc123 --yes Manage scorecards for call evaluation.
Subcommand Description scorecards listList scorecards scorecards get <id>Get scorecard details scorecards createCreate a new scorecard scorecards update <id>Update a scorecard scorecards delete <id>Delete a scorecard scorecards evaluate <callId>Evaluate a call with a scorecard scorecards results <callId>View evaluation results for a call scorecards categories <scorecardId>List categories in a scorecard scorecards criteria <categoryId>List criteria in a category
chanl scorecards list [options] Flag Description Default -s, --status <status>Filter: active, inactive, draft -l, --limit <number>Items per page 20-p, --page <number>Page number 1
chanl scorecards list --status active chanl scorecards get < i d > [options] Flag Description -c, --categoriesInclude categories and criteria
chanl scorecards get abc123 --categories chanl scorecards create [options] Flag Description Default -f, --file <path>JSON file with scorecard definition -n, --name <name>Scorecard name -d, --description <desc>Scorecard description -s, --status <status>Status: active, inactive, draft draft
chanl scorecards create -f scorecard.json
chanl scorecards create -n "Quality Check" -d "Basic quality scorecard" chanl scorecards update < i d > [options] Flag Description -f, --file <path>JSON file with updates -n, --name <name>New name -d, --description <desc>New description -s, --status <status>New status
chanl scorecards update abc123 -s active chanl scorecards delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl scorecards delete abc123 --yes chanl scorecards evaluate < callI d > [options] Flag Description -s, --scorecard <id>Scorecard ID to use (required) --asyncQueue evaluation asynchronously
chanl scorecards evaluate call123 -s scorecard456
chanl scorecards evaluate call123 -s scorecard456 --async chanl scorecards results < callI d > [options] Flag Description -s, --scorecard <id>Filter by scorecard ID
chanl scorecards results call123 -s scorecard456 chanl scorecards categories < scorecardI d > chanl scorecards criteria < categoryI d > Import, view, and analyze call recordings.
Subcommand Description calls listList calls calls get <id>Get call details calls importImport a call from transcript, audio, or S3 calls analyze <id>Trigger scorecard analysis calls analysis <id>View analysis results calls transcript <id>View call transcript calls metrics <id>View call metrics calls delete <id>Delete a call calls bulk-deleteDelete multiple calls
chanl calls list [options] Flag Description Default -s, --status <status>Filter: pending, in_progress, completed, failed -a, --agent <agentId>Filter by agent ID -d, --direction <dir>Filter: inbound, outbound --customer <name>Filter by customer name -e, --external-ref <key=value>Filter by external reference (repeatable) -l, --limit <number>Items per page 20-p, --page <number>Page number 1
chanl calls list --status completed --agent abc123
chanl calls list -e orderId=ORD-123 -e customerId= 456 chanl calls import [options] At least one source is required: --transcript, --audio-url, --audio-id, --bucket/--key, or --file.
Flag Description -t, --transcript <text>Transcript text (plain text or JSON segments) -f, --file <path>JSON file with import options --audio-url <url>Audio file URL to transcribe --audio-id <id>Pre-uploaded audio ID --bucket <name>S3 bucket name --key <key>S3 object key --region <region>AWS region --customer-name <name>Customer name --agent-name <name>Agent name --direction <dir>Call direction: inbound, outbound -e, --external-ref <key=value>External reference (repeatable) --analysis-fields <fields>Comma-separated analysis fields --scorecard <id>Scorecard ID to evaluate against --webhook-url <url>Webhook URL for completion notification
Available analysis fields: sentiment, topics, keywords, quality, coaching, predictions, speakers, upsell, metrics, extraction, followups.
chanl calls import --transcript "Agent: Hello! Customer: Hi..." --customer-name "John"
chanl calls import --audio-url "https://example.com/call.mp3"
chanl calls import -f import-data.json
chanl calls import -t "..." --scorecard abc123 --analysis-fields sentiment,quality chanl calls analyze < i d > [options] Flag Description -s, --scorecard <scorecardId>Specific scorecard to use -f, --forceForce re-analysis
chanl calls analyze abc123 --scorecard xyz --force chanl calls analysis < i d > chanl calls transcript < i d > [options] Flag Description --fullShow full transcript text instead of segments
chanl calls transcript abc123 --full chanl calls delete < i d > [options] Flag Description -y, --yesSkip confirmation prompt
chanl calls delete abc123 --yes chanl calls bulk-delete [options] Flag Description --ids <ids>Comma-separated call IDs -f, --file <path>File with call IDs (one per line) -y, --yesSkip confirmation prompt --keep-filesDo not delete associated storage files
chanl calls bulk-delete --ids id1,id2,id3 --yes
chanl calls bulk-delete -f call-ids.txt MCP server configuration and status.
Subcommand Description mcp infoShow MCP server URL, status, and resource counts mcp statusHealth check the MCP server mcp testRun MCP protocol test with real client mcp configOutput MCP configuration for AI clients mcp installGenerate MCP config snippet for editors mcp tools <agent-id>List MCP tools available for an agent mcp call <agent-id> <tool-name> [args]Call an MCP tool by name mcp inspect <agent-id> <tool-name>Show schema and details for a tool
Runs a full MCP protocol handshake: connect, list tools, list resources, list prompts.
chanl mcp config [options] Flag Description Default -f, --format <format>Format: claude, cursor, generic generic
chanl mcp config --format claude
chanl mcp config --format cursor > mcp-config.json chanl mcp install [options] Flag Description Default -f, --format <format>Format: claude, cursor, vscode, generic generic
Generates a ready-to-use MCP configuration using your stored API key and workspace. Works offline.
chanl mcp install --format claude
chanl mcp install --format vscode chanl mcp tools < agent-i d > chanl mcp tools agent_123 chanl mcp call < agent-i d > < tool-nam e > [args] The optional [args] is a JSON string of input arguments.
chanl mcp call agent_123 get_weather '{"city":"London"}'
chanl mcp call agent_123 ping chanl mcp inspect < agent-i d > < tool-nam e > chanl mcp inspect agent_123 get_weather