From cisco-axl
Manages Cisco CUCM via cisco-axl CLI — phones, lines, route patterns, partitions, CSS, SIP profiles, SQL queries, CRUD, and bulk provisioning from CSV.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cisco-axl:cisco-axl-cliThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A CLI for Cisco Unified Communications Manager (CUCM) Administrative XML (AXL) operations.
A CLI for Cisco Unified Communications Manager (CUCM) Administrative XML (AXL) operations.
The CLI must be available. Either:
# Option 1: Use npx (no install needed, works immediately)
npx cisco-axl --help
# Option 2: Install globally for faster repeated use
npm install -g cisco-axl
If using npx, prefix all commands with npx: npx cisco-axl list Phone ...
If installed globally, use directly: cisco-axl list Phone ...
Configure a CUCM cluster (interactive prompt for password — never pass credentials on the command line):
cisco-axl config add <name> --host <hostname> --username <user> --cucm-version <ver> --insecure
# You will be prompted securely for the password
Valid versions: 11.0, 11.5, 12.0, 12.5, 14.0, 15.0. Use --insecure for self-signed certificates (common in CUCM).
Or use environment variables (set via your shell profile, a .env file, or a secrets manager — never hardcode credentials):
# These should be set securely, e.g. via dotenv, vault, or shell profile
# CUCM_HOST, CUCM_USERNAME, CUCM_PASSWORD, CUCM_VERSION
Test the connection:
cisco-axl config test
cisco-axl get Phone SEP001122334455
cisco-axl get Line 1001
cisco-axl get RoutePartition PT_INTERNAL
cisco-axl get Phone SEP001122334455 --returned-tags "name,model,description"
cisco-axl list Phone --search "name=SEP%"
cisco-axl list Line --search "pattern=1%"
cisco-axl list Css --search "name=CSS_%"
cisco-axl list Phone --search "name=SEP%" --returned-tags "name,description" --format toon
cisco-axl list Phone --search "name=SEP%" --auto-page --max-results 5000
cisco-axl add RoutePartition --data '{"name":"PT_INTERNAL","description":"Internal partition"}'
cisco-axl update Phone SEP001122334455 --data '{"description":"Updated description"}'
cisco-axl remove RoutePartition PT_INTERNAL
cisco-axl sql query "SELECT name, description FROM device WHERE name LIKE 'SEP%'"
cisco-axl sql update "UPDATE device SET description='test' WHERE name='SEP001122334455'"
This is the CLI's most powerful feature. Discover and use ANY AXL operation dynamically — no static command definitions.
cisco-axl operations --filter phone
cisco-axl operations --filter ldap
cisco-axl operations --type action --filter phone # apply, reset, restart, etc.
cisco-axl operations --type crud # add, get, list, update, remove
cisco-axl describe getPhone
cisco-axl describe addLine --detailed # shows required/optional/types
cisco-axl execute doLdapSync --tags '{"name":"LDAP_Main"}'
cisco-axl execute applyPhone --tags '{"name":"SEP001122334455"}'
For provisioning multiple items, use templates with CSV files. Requires optional packages: npm install json-variables csv-parse
{
"name": "SEP%%mac%%",
"devicePoolName": "%%devicePool%%",
"description": "%%description%%",
"class": "Phone",
"protocol": "SIP"
}
mac,devicePool,description
001122334455,DP_HQ,Lobby Phone
001122334466,DP_BRANCH,Conf Room A
cisco-axl add Phone --template phone-template.json --csv phones.csv
cisco-axl add Phone --template phone-template.json --csv phones.csv --dry-run # preview first
cisco-axl add Phone --template phone-template.json --csv phones.csv --concurrency 10
cisco-axl add Phone --template phone-template.json --vars '{"mac":"001122334455","devicePool":"DP_HQ","description":"Lobby"}'
cisco-axl update Phone --template update-template.json --csv updates.csv
cisco-axl execute addLine --template line-template.json --csv lines.csv
Use --format to control output:
--format table — human-readable tables (default)--format json — structured JSON for parsing--format toon — token-efficient format (recommended for AI agents, ~40% fewer tokens than JSON)--format csv — CSV for spreadsheet exportFor AI agents: Use --format toon for list queries to reduce token usage. Use --format json when you need to parse nested structures.
cisco-axl config add lab --host 10.0.0.1 --username admin --cucm-version 14.0 --insecure
cisco-axl config add prod --host 10.0.0.2 --username axladmin --cucm-version 15.0 --insecure
# You will be prompted securely for each password
cisco-axl config use prod
cisco-axl list Phone --search "name=SEP%" --cluster lab # override per-command
Shell && chains commands sequentially — each waits for the previous to complete, and the chain stops on the first failure:
# Create a partition, CSS, and line in order
cisco-axl add RoutePartition --data '{"name":"PT_INTERNAL","description":"Internal"}' && \
cisco-axl add Css --data '{"name":"CSS_INTERNAL","members":{"member":{"routePartitionName":"PT_INTERNAL","index":"1"}}}' && \
cisco-axl add Line --data '{"pattern":"1000","routePartitionName":"PT_INTERNAL"}'
Use --stdin to pipe JSON between commands or from other tools:
# Get a phone's config, modify it with jq, update it
cisco-axl get Phone SEP001122334455 --format json | jq '.description = "Updated via pipe"' | cisco-axl update Phone SEP001122334455 --stdin
# Pipe JSON from a file
cat phone-config.json | cisco-axl add Phone --stdin
# Chain get → transform → execute
cisco-axl describe applyPhone --format json | jq '.name = "SEP001122334455"' | cisco-axl execute applyPhone --stdin
The --stdin flag is available on add, update, and execute commands. It is mutually exclusive with --data/--tags and --template.
Phone, Line, RoutePartition, Css, DevicePool, SipTrunk, TransPattern, RouteGroup, RouteList, etc.cisco-axl operations to discover exact type names.cisco-axl describe <operation> --detailed --format json to learn required vs optional tags.--clean flag removes empty/null values from results.--no-attributes flag removes XML attribute metadata.--insecure flag is needed for most CUCM environments (self-signed certs).~/.cisco-axl/audit.jsonl. Use --no-audit to skip.--dry-run with templates to preview resolved JSON before executing.npx claudepluginhub sieteunoseis/cisco-axlAutomates Callerapi operations via Composio toolkit through Rube MCP. Always searches for current tool schemas before execution.
Guides Zoom Phone integrations: OAuth, REST APIs, webhooks, Smart Embed postMessage, URI schemes, and call-history migration. Use for CRM/CTI dialer workflows, real-time call tracking, and call handling automation.
Qualifies developer needs across the support ladder (self-service → AI agents → contact center), channel mix, and scale to recommend the right Twilio architecture.