Sipflow is an MCP server with 22 tools an agent can call, among them compare_sdp_offer_answer, detect_sip_stack, detect_sip_vendor_from_config. It answers at https://mcp.sipflow.dev/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
SIP/VoIP/telecom grounding for AI agents: vendor docs, RFCs, STIR/SHAKEN, traces, configs.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
compare_sdp_offer_answer | [cost: free (pure CPU, no network) | read-only] Diff a SIP/SDP offer and answer and surface the issues that actually break calls in practice: codec intersection per m-line, direction compatibility (sendrecv ↔ recvonly), DTLS setup-role conf Inputs: offer, answer |
detect_sip_stack | [cost: free (pure CPU, no network) | read-only] Identify the SIP product behind a piece of input. Works on both: - a SIP trace (User-Agent / Server headers from PCAP/sngrep/syslog), and - a vendor config blob (kamailio.cfg, sip.conf, pjsip. Inputs: text, kind, filenameHint |
detect_sip_vendor_from_config | [cost: free (pure CPU, no network) | read-only] Heuristic-only sibling of `detect_sip_stack`, scoped to vendor configs. Returns the matched vendor slug, a confidence level, and the structural signals that fired (loadmodule syntax, route blo Inputs: text, filenameHint |
diff_sip_messages | [cost: free (pure CPU, no network) | read-only, no persistence] Take two SIP messages (typically the same request observed at two adjacent hops - e.g. the INVITE leaving FreeSWITCH and the INVITE arriving at Kamailio) and surface a structur Inputs: before, after, labelBefore, labelAfter |
dns_diagnose_sip_target | [cost: external_io (DNS via Cloudflare + Google; TLS handshake + a SIP OPTIONS keepalive to public targets when applicable) | read-only | rate-limited per IP: 10/min, 200/day] Walk DNS the same way a SIP UA does (RFC 3263 §4.1): NAPTR → SRV Inputs: target, transport |
fetch_sipflow_share | [cost: external_io (Mongo + S3 fetch on the Sipflow backend) | read-only, no persistence | rate limit: shared with the public share endpoint] Given a Sipflow share URL (https://sipflow.dev/share/<token>, or any sipflow.dev subdomain that se Inputs: url |
lint_sip_request | [cost: free (pure CPU, no network) | read-only, no persistence] Run RFC 3261 / RFC 3325 / RFC 8224 / RFC 8225 / CTIA BCID compliance checks on a single raw SIP request (typically an INVITE) and return a list of findings. Catches the failure Inputs: text |
lookup_response_code | [cost: free (pure CPU, no network) | read-only] Instant static lookup of a SIP response code (100-699). Returns name, RFC anchor, category, description, common operator-flavored causes, and known vendor-specific reason-phrase variants (e.g. Inputs: code |
lookup_sip_header | [cost: free (pure CPU, no network) | read-only] Instant lookup of a SIP header by canonical or compact form (e.g. "Via" / "v", "Diversion", "P-Asserted-Identity", "Identity", "Session-Expires"). Returns canonical form, compact alias, RFC an Inputs: name |
minimize_sip_trace | [cost: free (pure CPU, no network) | read-only, no persistence] Reduce a raw SIP trace to a compact form suitable for sending to an LLM. Preserves SDP bodies and routing/auth/dialog headers; prunes well-known noise (User-Agent, Server, Allo Inputs: text, maxBytes |
parse_sdp | [cost: free (pure CPU, no network) | read-only] Parse a Session Description Protocol body and return a structured view: origin, session, timing, per-media codecs (rtpmap + fmtp), direction, DTLS setup + fingerprint, ICE credentials + candid Inputs: sdp |
parse_sip_message | [cost: free (pure CPU, no network) | read-only, no persistence] Parse a single raw SIP message (request OR response) and return a structured view: start line (method/status), every header in order with line numbers, body, duplicate-header c Inputs: text |
render_sip_ladder | [cost: free (pure CPU, no network) | read-only] Parse a raw SIP trace (PCAP-decoded text, sngrep export, syslog, or pasted INVITE/200 dialog) and emit a Mermaid `sequenceDiagram` block visualizing the call flow. Most chat hosts (Claude, Cha Inputs: text, callId, compact, includeTiming, maxMessages, aliases |
review_sip_config | [cost: free (pure CPU, no network) | read-only] Use this when the user asks 'review my config' or attaches a kamailio.cfg, sip.conf, pjsip.conf, FreeSWITCH XML profile, opensips.cfg, `res_fax.conf` / `udptl.conf` / `spandsp.conf` (fax-relay Inputs: text, filenameHint, vendorHint |
search_sip_docs | [cost: rag (one embed + one vector search) | read-only, network: outbound to embed model only] Vector search over Sipflow's curated VoIP knowledge base: vendor docs (Asterisk, FreeSWITCH, Kamailio, OpenSIPS, Twilio, Cisco, etc.), SIP/SDP/We Inputs: query, vendor, sourceType, limit |
sip_ladder_example | [cost: free (pure CPU, no network) | read-only] Return a hand-curated SIP scenario as a Mermaid `sequenceDiagram` plus a bullet list of step-by-step explanations with RFC references. Use this when the user asks 'show me what X looks like' a Inputs: scenario, actorNames, includeExplanation, verbose |
stir_attestation_explainer | [cost: free (pure CPU, no network) | read-only] Static explainer for STIR/SHAKEN: maps attestation levels (A / B / C per RFC 8588) to plain-English requirements + common scenarios, and SIP codes commonly emitted by signing/verification (428 Inputs: attestation, code |
submit_sipflow_feedback | [cost: write (single MongoDB row) | rate-limited per IP: 3/min, 20/day] Send the Sipflow team feedback when something doesn't work, a vendor or RFC isn't covered, or a tool produced a wrong/incomplete answer. Categories: - docs_gap: search_ Inputs: category, summary, details, relatedTool, relatedQuery, vendorOrTopic |
troubleshoot_response_code | [cost: rag (one embed + one vector search) | read-only, network: outbound to embed model only | rate-limited per IP] Like `lookup_response_code` but augmented: returns the static RFC entry PLUS the top vendor-specific RAG hits for the exact Inputs: code, vendorHint, context |
validate_e164_number | [cost: free (pure CPU, no network) | read-only] Parse a phone number, normalize to E.164, and classify it. International coverage is via libphonenumber-js (every country, line type when known). NANP numbers (CC=1) are additionally split int Inputs: number |
validate_stir_shaken_identity | [cost: external_io (HTTPS fetch of the x5u cert) | read-only] Verify a SIP `Identity:` JWS (RFC 8224 / SHAKEN). Fetches the x5u certificate, parses it, verifies the ES256 signature against the cert's public key, and optionally validates the Inputs: infoUrl, headerB64, payloadB64, signatureB64, iconUrl, expectedIconHash |
webrtc_sip_checklist | [cost: free (pure CPU, no network) | read-only] Return a curated checklist of WebRTC ↔ SIP requirements (WSS transport, ICE gathering, DTLS-SRTP fingerprint, rtcp-mux + BUNDLE, media relay / rtpengine, STUN/TURN, secure-context Origin allow Inputs: vendor, configText, filenameHint |
Every block below points at https://mcp.sipflow.dev/mcp. Pick your client and copy.
claude mcp add --transport http sipflow https://mcp.sipflow.dev/mcp
{
"mcpServers": {
"sipflow": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.sipflow.dev/mcp"]
}
}
}{
"mcpServers": {
"sipflow": {
"url": "https://mcp.sipflow.dev/mcp"
}
}
}{
"servers": {
"sipflow": {
"type": "http",
"url": "https://mcp.sipflow.dev/mcp"
}
}
}{
"context_servers": {
"sipflow": {
"url": "https://mcp.sipflow.dev/mcp"
}
}
}{
"mcpServers": {
"sipflow": {
"serverUrl": "https://mcp.sipflow.dev/mcp"
}
}
}{
"mcpServers": {
"sipflow": {
"url": "https://mcp.sipflow.dev/mcp"
}
}
}name: Sipflow
version: 0.0.1
schema: v1
mcpServers:
- name: Sipflow
type: streamable-http
url: https://mcp.sipflow.dev/mcp{
"mcpServers": {
"sipflow": {
"httpUrl": "https://mcp.sipflow.dev/mcp"
}
}
}{
"mcpServers": {
"sipflow": {
"type": "http",
"url": "https://mcp.sipflow.dev/mcp"
}
}
}{
"mcpServers": {
"sipflow": {
"url": "https://mcp.sipflow.dev/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fmcp.sipflow.dev%2Fmcp&type=streamable_http&id=sipflow&name=Sipflow
It answered our last check on 19 October 2026 in 496 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by sipflow.dev and served from mcp.sipflow.dev, the vendor's own domain: https://mcp.sipflow.dev/mcp.
22, as returned by the server's own tools/list on 11 September 2026: compare_sdp_offer_answer, detect_sip_stack, detect_sip_vendor_from_config, diff_sip_messages, dns_diagnose_sip_target, fetch_sipflow_share, lint_sip_request, lookup_response_code, and 14 more.
It answered our last check on 19 October 2026 in 496 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcp.sipflow.dev/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: dev.sipflow. Endpoint host: mcp.sipflow.dev. ARD identifier: urn:air:dev.sipflow:mcp:sipflow.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.