Chanl

CLI Overview

Build tools, test agents, and monitor calls from your terminal

The Chanl CLI manages your entire agent lifecycle from the command line -- create tools, import calls, run evaluations, and connect AI assistants via MCP.

Install

npm install -g @chanl/cli

Verify:

chanl --version
chanl/1.0.0 darwin-arm64 node-v20.11.0

Authenticate

chanl login
Opening browser for authentication...
✓ Authenticated as dean@acme.com
  Workspace: acme (ws_abc123)

Or use an API key directly:

chanl login --api-key ak_abc123

Verify:

chanl auth whoami
User:      dean@acme.com
Workspace: acme (ws_abc123)
Role:      owner

Command Map

chanl Build Test Monitor Core tools toolsets kb mcp chat scenarios personas calls scorecards auth config health

All Commands

Build

CommandDescription
chanl tools listList all tools in the workspace
chanl tools createCreate a new tool (HTTP, JS, or system)
chanl tools get <id>Get tool details
chanl tools execute <id>Execute a tool with arguments
chanl tools delete <id>Delete a tool
chanl toolsets listList toolsets
chanl toolsets createCreate a toolset
chanl toolsets get <id>Get toolset details and tools
chanl toolsets add-toolAdd a tool to a toolset
chanl toolsets remove-toolRemove a tool from a toolset
chanl kb addAdd a knowledge base entry
chanl kb uploadUpload a file or URL
chanl kb searchSearch the knowledge base
chanl kb listList all entries
chanl mcp configGenerate MCP config for Claude/Cursor
chanl mcp testTest the MCP connection

Test

CommandDescription
chanl chat <agent-id>Interactive text chat with an agent
chanl chat <agent-id> -m "..."Send a single message
chanl scenarios listList test scenarios
chanl scenarios run <id>Run a scenario
chanl personas listList test personas

Monitor

CommandDescription
chanl calls importImport a call (transcript, audio, or file)
chanl calls listList calls with filters
chanl calls get <id>Get call details and analysis
chanl calls delete <id>Delete a call
chanl scorecards listList scorecards
chanl scorecards createCreate a scorecard
chanl scorecards evaluate <call-id>Evaluate a call against a scorecard
chanl scorecards results <call-id>View evaluation results

Core

CommandDescription
chanl loginAuthenticate via browser OAuth
chanl auth whoamiShow current user and workspace
chanl auth logoutClear stored credentials
chanl config set <key> <value>Set a config value
chanl config get <key>Get a config value
chanl config listShow all config
chanl healthCheck API status

Configuration

chanl config set workspace-id ws_abc123
chanl config set output json
chanl config list
Configuration
────────────────────────────────────
workspace-id:  ws_abc123
output:        table
api-url:       https://api.chanl.ai

Environment Variables

Override any config with environment variables:

export CHANL_API_KEY=chanl_key_abc123
export CHANL_WORKSPACE_ID=ws_abc123
export CHANL_OUTPUT=json

Global Options

Every command accepts these flags:

OptionShortDescription
--json-jOutput as JSON
--workspace <id>-wOverride default workspace
--quiet-qSuppress non-essential output
--verbose-vShow detailed output
--help-hShow command help

Output Formats

Table output (default) for humans:

chanl calls list
Calls
──────────────────────────────────────────────────────────────
ID                        Customer     Duration  Status  Sentiment
695d6957e21c0ceb325c394d  John Doe     3m 0s     ended   positive
695d6957e21c0ceb325c394e  Jane Smith   4m 5s     ended   neutral

JSON output for scripts:

chanl calls list --json | jq -r '.calls[].id'
695d6957e21c0ceb325c394d
695d6957e21c0ceb325c394e

Scripting

Pipe JSON Output

chanl calls list --json | jq -r '.calls[].id'

chanl calls list --json | \
  jq '.calls | group_by(.status) | map({status: .[0].status, count: length})'

Batch Operations

chanl calls list --status ended --json | \
  jq -r '.calls[].id' | \
  xargs -I {} chanl scorecards evaluate {} --scorecard scorecard_abc123

CI/CD

- name: Evaluate call quality
  run: |
    chanl scorecards evaluate $CALL_ID \
      --scorecard $SCORECARD_ID \
      --json > result.json

    score=$(jq '.score' result.json)
    if [ "$score" -lt "70" ]; then
      echo "Quality score $score below threshold"
      exit 1
    fi
  env:
    CHANL_API_KEY: ${{ secrets.CHANL_API_KEY }}
    CHANL_WORKSPACE_ID: ${{ vars.CHANL_WORKSPACE_ID }}

Troubleshooting

What's Next

Tools & Toolsets

Create tools and organize them into toolsets

MCP Integration

Connect Claude, Cursor, and other AI assistants

Analyze Calls

Import recordings and extract insights

Evaluate Quality

Score calls with custom scorecards

On this page