Loading...
Loading...
Cisco Unified Communications engineer skill. Orchestrates cisco-axl, cisco-dime, cisco-perfmon, cisco-risport, cisco-support, cisco-ucce, cisco-yang, audiocodes-cli, genesys-cli CLIs, and the cisco-cdr MCP server for troubleshooting, provisioning, monitoring, CDR analysis, and lifecycle management of UC infrastructure including AudioCodes SBCs and Genesys Cloud CX. Use when working across multiple Cisco UC tools or diagnosing complex issues.
npx skill4agent add cmds-cc/skills cisco-uc-engineer# Check each tool — run all five, note which succeed
cisco-axl --version 2>/dev/null && echo "cisco-axl: available" || echo "cisco-axl: not installed"
cisco-dime --version 2>/dev/null && echo "cisco-dime: available" || echo "cisco-dime: not installed"
cisco-perfmon --version 2>/dev/null && echo "cisco-perfmon: available" || echo "cisco-perfmon: not installed"
cisco-risport --version 2>/dev/null && echo "cisco-risport: available" || echo "cisco-risport: not installed"
cisco-support --version 2>/dev/null && echo "cisco-support: available" || echo "cisco-support: not installed"
audiocodes-cli --version 2>/dev/null && echo "audiocodes-cli: available" || echo "audiocodes-cli: not installed"
genesys-cli --version 2>/dev/null && echo "genesys-cli: available" || echo "genesys-cli: not installed"
# Check cisco-cdr MCP server (requires MCP configuration, not a CLI tool)
# Verify by calling: cdr_health"This workflow needs cisco-dime which isn't installed. Install it with:"npm install -g cisco-dime
| Tool | Purpose | npm Package | Skill |
|---|---|---|---|
| CUCM configuration — phones, lines, route patterns, CSS, device pools, SIP trunks | | |
| CUCM log collection — SIP traces, SDL, audit logs, service logs | | |
| Real-time performance counters — CPU, memory, call stats | | |
| Device registration status — phone reg, CTI, trunk status | | |
| Cisco Support APIs — bugs, EoX, PSIRT, software, serial coverage | | |
| AudioCodes Mediant VE SBC — call stats, alarms, KPIs, health checks, config backup | | |
| Genesys Cloud CX — conversations, BYOC trunks, queues, agents, edges, audit | | |
| CDR/CMR analysis — call search, call trace, quality analysis, statistics, health | | |
Note: cisco-support uses separate Cisco API credentials (not CUCM credentials). It has its own config at. Note: audiocodes-cli uses separate device credentials (not CUCM credentials). It has its own config at~/.cisco-support/config.json. Note: genesys-cli uses Genesys Cloud OAuth client credentials (not CUCM credentials). It has its own config at~/.audiocodes-cli/config.json. Note: cisco-cdr is an MCP server (not a CLI tool). It requires the cisco-cdr-processor service running with PostgreSQL. Configure the MCP endpoint in your Claude Code MCP settings.~/.genesys-cli/config.json
~/.cisco-axl/config.json~/.cisco-dime/config.jsonactiveCluster# Check active cluster for each installed tool
cisco-axl config show 2>/dev/null
cisco-dime config show 2>/dev/null
cisco-perfmon config show 2>/dev/null
cisco-risport config show 2>/dev/null--cluster <name>cisco-dime config use stagingcisco-dime config add staging --host 10.0.0.1 --username admin --password "$CUCM_PASSWORD" --insecure--clusterNote: cisco-axl requireswhen adding a cluster. The other tools do not.--cucm-version
# 1. Check phone config in CUCM
cisco-axl get Phone --name SEP001122334455 --format json
# 2. Check current registration status
cisco-risport query --mac 001122334455
# 3. Pull recent SIP traces for this device
cisco-dime select sip-traces --last 30m --download# 1. Check the dialed pattern
cisco-axl sql query "SELECT dnorpattern, routePartitionName FROM numplan WHERE dnorpattern LIKE '%<pattern>%'"
# 2. Check the CSS chain
cisco-axl get CallingSearchSpace --name <css_name> --format json
# 3. Check route patterns and route lists
cisco-axl list RoutePattern --search "pattern=%<digits>%"
# 4. Pull SIP traces to see the actual call flow
cisco-dime select sip-traces --last 1h --download# 1. Search CDR for the reported call
cdr_search calling="5551234" called="5559999" last="2h"
# 2. Trace the specific call for all legs and CMR quality data
cdr_trace call_id="<globalcallid_callid from search>"
# 3. Run the returned cisco-dime SDL trace command for SIP analysis
# (cdr_trace returns a ready-to-run cisco-dime command)
# 4. Cross-reference device config if needed
cisco-axl get Phone --name <device_from_cdr> --format json# 1. Find poor-quality calls
cdr_quality mos_below=3.0 last="1d"
# 2. Check call volume and failure patterns
cdr_stats type="by_cause" last="1d"
cdr_stats type="by_device" last="1d"
# 3. Correlate with system health at the time
cisco-perfmon collect "Cisco CallManager" --counter "CallsActive,RegisteredHardwarePhones"# 1. Check system health
cisco-perfmon collect "Cisco CallManager" --counter "CallsActive,RegisteredHardwarePhones"
# 2. Check device registration (partially registered = codec issues)
cisco-risport query --mac <mac>
# 3. Pull traces for the specific call
cisco-dime select sip-traces --last 30m --download
# 4. If packet captures are available
cisco-dime select "Packet Capture Logs" --last 1h# 1. Quick snapshot of key counters
cisco-perfmon collect "Cisco CallManager" --counter "RegisteredHardwarePhones,CallsActive,CallsAttempted,CallsCompleted"
cisco-perfmon collect "Processor" --counter "% CPU Time"
cisco-perfmon collect "Memory" --counter "% Memory Used"
# 2. Live monitoring with sparklines (watch for trends)
cisco-perfmon watch "Cisco CallManager" --counter "CallsActive,RegisteredHardwarePhones" --interval 10
# 3. Cluster registration summary
cisco-risport summary
# 4. Check for errors in logs
cisco-dime select syslog --last 1h# Monitor during a test window with sparklines
cisco-perfmon watch "Cisco CallManager" --counter "CallsActive,CallsAttempted,CallsCompleted,CallsInProgress" --interval 5 --duration 300
# Monitor trunk utilization
cisco-perfmon watch "Cisco SIP" --counter "CallsActive,CallsAttempted,CallsCompleted" --interval 10# 1. Pull syslogs to find errors
cisco-dime select syslog --last 1h --download --decompress
# 2. Look for error patterns — grep for alarm names, error codes, CSC bug IDs
# Common patterns: %CCM_CALLMANAGER-CALLMANAGER-3-DeviceTransientConnection
# If you find a CSCxx bug ID in the logs:
cisco-support bug get CSCvx12345
# 3. Search for known bugs matching the error
cisco-support bug search --keyword "DeviceTransientConnection" --pid "Cisco Unified Communications Manager"
cisco-support bug search --keyword "TransientConnection" --severity 1,2,3 --status open
# 4. Check if there's a PSIRT advisory related to the issue
cisco-support psirt --severity critical# 1. Check current CUCM version
cisco-axl sql query "SELECT version FROM componentversion WHERE softwarecomponent='callmanager'"
# 2. Get software suggestions for your platform
cisco-support software suggest --pid CUCM-LIC-15
# 3. Compare bugs between current and target version
cisco-support software compare --pid CUCM-LIC-15 --from 14.0 --to 15.0
# 4. Check for security advisories affecting target version
cisco-support psirt --severity critical --year 2026
# 5. Check if any hardware is end-of-life
cisco-support eox --pid CP-8841-K9
cisco-support serial warranty FJC12345678# 1. Get all phone models in the cluster
cisco-axl sql query "SELECT DISTINCT tm.name AS model, COUNT(*) AS cnt FROM device d JOIN typemodel tm ON d.tkmodel=tm.enum WHERE d.tkclass=1 GROUP BY tm.name ORDER BY cnt DESC"
# 2. Check EoX status for each model
cisco-support eox --pid CP-8841-K9
cisco-support eox --pid CP-7841-K9
cisco-support eox --pid CP-8865-K9
# 3. Check warranty for specific serial numbers
cisco-support serial coverage FJC12345678# 1. Pull audit logs to see who changed what
cisco-dime select audit --last 1d --download
# 2. Look at a specific object's current config
cisco-axl get Phone --name <device> --format json
# 3. Compare with expected config
cisco-axl sql query "SELECT * FROM device WHERE name='<device>'"# 1. Add the line
cisco-axl add Line --data '{"pattern":"1001","routePartitionName":"PT_INTERNAL","description":"John Doe"}'
# 2. Add the phone
cisco-axl add Phone --data '{"name":"SEP001122334455","product":"Cisco 8841","class":"Phone","protocol":"SIP","devicePoolName":"DP_HQ","lines":{"line":{"index":"1","dirn":{"pattern":"1001","routePartitionName":"PT_INTERNAL"}}}}'
# 3. Verify registration
cisco-risport query --mac 001122334455# From CSV
cisco-axl add Phone --csv phones.csv
cisco-axl add Line --csv lines.csv
# Verify all registered
cisco-risport summary --model "Cisco 8841"# 1. Check SBC health
audiocodes-cli doctor --device <sbc>
# 2. Check active alarms (proxy sets down, IP groups blocked, cert expiry)
audiocodes-cli alarms list --device <sbc>
# 3. Check call statistics — are calls getting through?
audiocodes-cli calls list --device <sbc>
# 4. Check KPIs — license usage, DDoS stats, media quality
audiocodes-cli kpi show system/licenseStats/global --device <sbc>
audiocodes-cli kpi show network/ddosStats/global --device <sbc>
# 5. Backup SBC config for review
audiocodes-cli device backup --device <sbc>
# 6. Cross-reference with CUCM SDL logs to trace calls end-to-end
cisco-dime select "Cisco CallManager" --last 30m --all-nodes --include-active --download --decompress# 1. Check which SIP trunk CUCM uses for the route pattern
cisco-axl sql query "SELECT dnorpattern, routePartitionName FROM numplan WHERE dnorpattern LIKE '%<pattern>%'"
# 2. Pull CUCM call logs to see the INVITE flow
cisco-dime select "Cisco CallManager" --last 30m --download --decompress
# grep for the dialed number in calllogs
# 3. Check the SBC side — did it receive the call?
audiocodes-cli calls list --device <sbc>
# 4. Check SBC alarms — is the outbound IP group healthy?
audiocodes-cli alarms list --device <sbc># 1. Verify the CUCM line/device and call forward config
cisco-axl sql query "SELECT dnorpattern, description FROM numplan WHERE dnorpattern = '<extension>'"
cisco-axl sql query "SELECT cfadestination FROM callforwarddynamic cf JOIN numplan np ON cf.fknumplan = np.pkid WHERE np.dnorpattern = '<extension>'"
# 2. Check registration of the SIP trunk to the SBC
cisco-risport query --name "<trunk_name>"
# 3. Pull CUCM SDL traces and grep for the call
cisco-dime select "Cisco CallManager" --last 30m --all-nodes --include-active --download --decompress
# grep for the dialed number, Call-ID, and trunk name in SDL files
# 4. Check the AudioCodes SBC — did it receive and relay the call?
audiocodes-cli doctor --device <sbc>
audiocodes-cli calls list --device <sbc>
audiocodes-cli alarms list --device <sbc>
# 5. Check Genesys Cloud — did the call arrive?
genesys-cli doctor
genesys-cli conversations list --caller <calling_number> --last 1h
genesys-cli conversations list --callee <called_number> --last 1h
# 6. Check BYOC trunk health on Genesys side
genesys-cli trunks list
genesys-cli trunks metricscall_active200 OKconnectedinService=truedisconnectTypesipResponseCode# 1. Check Genesys Cloud connectivity and org health
genesys-cli doctor
# 2. Check BYOC trunk status — are trunks connected?
genesys-cli trunks list
genesys-cli trunks metrics
# 3. Check Edge server status
genesys-cli edges list
# 4. Search conversation history for a specific call
genesys-cli conversations list --caller <number> --last 1h
genesys-cli conversations list --callee <number> --last 1h
genesys-cli conversations list --queue <queue_name> --last 1h
# 5. Get full detail for a specific conversation
genesys-cli conversations detail <conversationId>
# 6. Check agent availability
genesys-cli agents list
# 7. Check queue status
genesys-cli queues list
# 8. Review recent config changes
genesys-cli audit listconnectedinService=falsedisconnectTypeerrorsystemsipResponseCodecisco-risport query --mac <mac>cisco-axl get Phone --name <name>cdr_search calling="<number>" last="2h"cisco-dime select sip-traces --last 30mcisco-perfmon collect "Cisco CallManager" --counter "CallsActive"cdr_quality mos_below=3.5 last="2h"cisco-support bug search --keyword "<error>" --pid "Cisco Unified Communications Manager"cisco-support eox --pid <model>genesys-cli conversations list --caller <number> --last 1hgenesys-cli trunks list--format json--cluster <name>--timezonecisco-perfmon watchcisco-dime analyze sip-ladderdoctorcisco-<tool> doctorgenesys-cli doctor--org <name>--region <region>