~210 tools can be overwhelming. This guide maps goals → tools.
For a high-level pipeline (generate → validate → lint → explain), use the
/opensips-config-build skill. For an interactive triage tree for incidents,
use /opensips-troubleshoot.
| Step | Tool |
|---|
| List available scenarios | cfg_list_scenarios |
| Generate from scenario | cfg_generate |
| Generate from Kamailio-style flags | cfg_compose_flags + cfg_build_from_flags |
| Iterative refinement | cfg_generate_iterative |
| Validate syntax | cfg_validate |
| Lint semantics | cfg_lint |
| Explain a route | cfg_explain_route |
| Tune capacity | cfg_tune |
| Add a module | cfg_add_module |
| Step | Tool |
|---|
| Start an edit session | cfg_start_session |
| Apply natural-language edit | cfg_edit |
| Diff against baseline | cfg_diff |
| Save session | cfg_save_session |
| Step | Tool |
|---|
| Supported versions | cfg_list_versions |
| Scan for incompatibilities | cfg_check_compat |
| Produce migration plan | cfg_migrate_plan |
| Apply migration | cfg_migrate |
| Task | Tool |
|---|
| List subscribers | subscriber_list |
| Get one | subscriber_get |
| Create | subscriber_create |
| Update | subscriber_update |
| Delete | subscriber_delete |
| Bulk import from CSV | subscriber_bulk_import (dry-run first) |
| Bulk export to CSV | subscriber_bulk_export |
| List contacts (runtime) | ul_show_contacts / ul_dump |
| Add/remove contact | ul_add_contact / ul_remove_contact |
| Hash a password | security_generate_ha1 |
| Registrar stats | registrar_stats |
| UAC registrations (upstream) | uac_reg_list, uac_reg_enable, uac_reg_disable, uac_reg_force_register |
| Task | Tool |
|---|
| Dispatcher (round-robin / weighted) | dispatcher_list_db, dispatcher_add, dispatcher_update, dispatcher_remove |
| Dynamic routing (prefix-based) | drouting_* (list/add/update/delete for rules, gateways, carriers) |
| Load balancer | lb_list, lb_resize, lb_set_status, lb_reload |
| Dialplan (number translation) | dialplan_list_rules, dialplan_add_rule, dialplan_translate, etc. |
| Carrier routing | carrierroute_* (dump, reload, activate/deactivate hosts) |
| Least-cost routing | lcr_dump, lcr_reload |
| Domains | domain_list, domain_add, domain_delete |
| Task | Tool |
|---|
| IP ACLs | address_list, address_add, address_remove |
| Anti-flood | pike_list_blocked, pike_unblock_ip |
| Fraud rules | fraud_list_rules, fraud_add_rule, fraud_update_rule, fraud_delete_rule |
| TLS cert lifecycle | tls_list, tls_add, tls_update, tls_delete |
| TLS observability | tls_statistics, tls_connections, tls_check_expiry, tls_check_all_expiry, tls_handshake_errors |
| Fail2ban | fail2ban_* |
| Config audit | security_audit prompt, cfg_lint |
| Task | Tool |
|---|
| Health | health_check |
| Stats | get_statistics (group=core, sl, tm, shmem, usrloc, ...) |
| Stateless replies (auth load, scanner sig) | sl_stats |
| Processes | get_process_list, perf_process_breakdown (grouped) |
| Memory | get_memory_stats, perf_memory_report (shm + pk + stats) |
| TCP connections | get_tcp_connections |
| Dialogs | dlg_list, dlg_get_profiles |
| NAT keepalive | nathelper_stats |
| Topology hiding state | topology_hiding_list |
| Mid-registrar state | mid_registrar_dump |
| "Where is the pain?" snapshot | perf_hotspots |
| Short-window sampling | perf_sample_window |
| Symptom | Tool |
|---|
| One-way audio / NAT | diagnose_nat_flow(callid) |
| Missing CDRs / revenue gap | cdr_audit(date_from, date_to) |
| Duplicate CDRs | cdr_audit (reports duplicates) |
| SIP response-code spike | cdr_count_by_code(date_from, date_to) |
| Traffic volume shift | cdr_summary(group_by="hour") |
| Call you can't find in the UI | homer_search_calls_v7 (ms precision + source IP) |
| Call-ID rewritten (B2BUA) | homer_correlate_callid |
| Stranded media session | rtpengine_terminate_call(callid) |
| "Can this SBC even reach X?" | sip_options_ping(target) |
| Generate a SIPp test for later | sip_generate_sipp_scenario |
| Task | Tool |
|---|
| Reload all data tables in order | reload_data_tables |
| Reload one module + verify | reload_single |
| Preview what would reload | reload_dry_run |
| Drain a cluster node for maintenance | cluster_drain_node |
| Bring node back online | cluster_promote_node |
| Check cluster sync health | cluster_sync_check |
| Backup a config before editing | cfg_backup |
| List existing backups | cfg_list_backups |
| Roll a change back | cfg_rollback (auto pre-rollback snapshot) |
Pair any cfg / scenario with a deployment-ready monitoring stack. See
docs/learn/observability-stack.md for
the operator runbook.
| Task | Tool |
|---|
| Everything in one call (cfg + dashboards + Prometheus + Grafana + compose) | observability_generate_bundle |
| Same, starting from a hand-edited cfg | observability_generate_bundle_from_cfg |
| Just the Grafana dashboards for a scenario | observability_generate_dashboards |
| Just the Prometheus scrape stanza | observability_generate_prometheus_scrape |
| Just the Grafana provisioning files | observability_generate_grafana_provisioning |
| Just the side-car monitoring docker-compose | observability_generate_monitoring_compose |
Add prometheus.so + httpd.so to an existing cfg | observability_inject_prometheus |
| Preview which dashboard categories would fire for a module set | observability_categories_for_modules |
| List every available panel category | observability_list_panel_categories |
| Persist a generated bundle to disk | observability_save_bundle |
| Task | Tool |
|---|
| SIP capture (Homer, simple) | homer_search_calls, homer_get_call_flow, homer_stats |
| SIP capture (Homer 7 advanced) | homer_search_calls_v7, homer_get_call_transaction, homer_correlate_callid, homer_health |
| Media (RTPEngine, MI) | rtpengine_show, rtpengine_enable, rtpengine_reload, rtpengine_terminate_call, rtpengine_instance_health |
| Media (RTPEngine, HTTP) | rtpengine_stats, rtpengine_sessions |
| Load testing | sipp_run_scenario, sipp_load_test, sip_generate_sipp_scenario |
| Quick reachability probe | sip_options_ping (pure Python, no SIPp needed) |
| Docker | docker_list_scenarios, docker_deploy_scenario, docker_status, docker_logs, docker_restart |
| Task | Tool |
|---|
| List B2B sessions | b2b_list_sessions |
| List B2B entities | b2b_list_entities |
| Terminate a B2B call | b2b_terminate |
| Bridge a B2B call | b2b_bridge |
| Trigger a B2B scenario | b2b_trigger_scenario |
| SCA subscriptions | b2b_sca_list |
| Topology hiding | topology_hiding_list |
| Task | Tool |
|---|
| List subscriptions | presence_list_subscriptions |
| Force NOTIFY to watchers | presence_refresh_watchers |
| Cleanup expired | presence_cleanup |
| OpenSIPS-as-publisher (PUA) | pua_list_publications, pua_publish |
| Task | Tool |
|---|
| List event types | event_list |
| List subscribers | event_list_subscribers |
| Subscribe | event_subscribe |
| Step | Tool / Prompt |
|---|
| Plan the module | write_module prompt |
| Scaffold C skeleton | module_scaffold |
| Add MI commands | module_add_mi_command |
| Compile | module_compile |
| Test | module_test_* |
| Layer | Primary tool family |
|---|
| Config-as-code | cfg_* (31 tools) |
| Runtime MI | mi_execute, mi_list_commands, get_statistics, health_check |
| User data plane | dlg_*, ul_*, registrar_*, subscriber_* |
| Routing plane | dispatcher_*, drouting_*, lb_*, dialplan_*, carrierroute_*, lcr_* |
| Media | rtpengine_*, nathelper_* |
| B2BUA | b2b_* |
| Presence | presence_*, pua_* |
| Security | pike_*, fraud_*, fail2ban_*, tls_*, address_* |
| Observability (runtime) | get_*, homer_*, trace_*, sl_stats, tls_statistics, perf_* |
| Observability (stack generator) | observability_generate_bundle, observability_generate_dashboards*, observability_generate_prometheus_scrape, observability_inject_prometheus |
| Operational orchestration | reload_*, cluster_drain_*, cfg_backup / cfg_rollback |
| Incident triage | diagnose_nat_flow, cdr_audit, sip_options_ping |
| Synthetic traffic | sip_options_ping, sip_generate_sipp_scenario, sipp_* |
| Infra | docker_*, module_* |
| Events | event_* |
Call mi_list_commands first — shows every MI command the running
OpenSIPS actually exposes. Many tools are version-gated, and this is
the ground truth for your specific deployment.