Node.js/TypeScript MCP server for Atlassian Confluence. Provides tools enabling AI systems (LLMs) to list/get spaces & pages (content
Sipflow is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
SIP/VoIP/telecom grounding for AI agents: vendor docs, RFCs, STIR/SHAKEN, traces, configs.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http sipflow-mcp https://mcp.sipflow.dev/mcp
# 2 — ask your agent for something these tools do
# search_sip_docs, lookup_response_code, lookup_sip_header and 19 more
Sipflow costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http sipflow-mcp https://mcp.sipflow.dev/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
22 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
[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/WebRTC RFCs, STIR/SHAKEN material (RFC 8224/8225/8226/8588/9027/9795), branded-calling guidance (ATIS-1000074/094/084, CTIA Branded Calling ID), and fax-over-IP
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural-language question or keywords. Be specific - include vendor name, header, error code, module, or RFC if known. Multi-sentence queries are fine. |
| vendor | string | no | Restrict results to a single vendor/stack (e.g. "asterisk", "kamailio"). Omit to search all vendors. |
| sourceType | no | Restrict by document type. Available: rfc | pbx (Asterisk/FreeSWITCH/Kamailio/OpenSIPS) | sbc (SBCs) | cpaas (Twilio/Telnyx/...) | uc-cloud (Teams/Zoom/...) | endpoint (phones/softphones) | stir-shake | |
| limit | integer | no | Maximum number of snippets to return (1-15). |
[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. OpenSIPS emits 484 'Invalid FROM' on From-header parse failure). USE FIRST when the user pastes or asks about any 3-digit SIP code - sub-millisecond, no API
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | integer | yes | SIP response code (e.g. 488 for Not Acceptable Here). |
[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 anchor, where it appears (request / response / both), cardinality (exactly-one / at-most-one / one-or-more / any), allowed/forbidden URI parameters with RFC cita
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Header name (canonical, e.g. "Via", or compact, e.g. "v"). Case-insensitive. |
[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.conf, FreeSWITCH XML, opensips.cfg) detected via structural signatures (loadmodule, route blocks, [transport-*] sections, <profile name=>, etc.). Returns
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Raw SIP trace text OR a vendor config blob. |
| kind | string | no | What the input is. "trace" looks at SIP headers only, "config" runs vendor-config heuristics, "auto" tries trace first then falls back to config detection. |
| filenameHint | string | no | Optional filename (e.g. "kamailio.cfg", "pjsip.conf"). Strongly improves config-mode detection when supplied. |
[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 blocks, profile elements, etc.). Use this when the user asks 'what is this config?' or attaches a SIP config file. Detect-only - does not extract directives or f
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Config blob (UTF-8 plaintext). |
| filenameHint | string | no | Optional filename ("kamailio.cfg", "pjsip.conf", "sofia/external.xml") to bias detection. |
[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, Allow, Accept-*, Date, P-* informational, etc.). Expected input format: raw SIP messages separated by blank lines, each starting with a request line (`INVITE sip:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Raw SIP trace text. Multiple messages may be concatenated. |
| maxBytes | integer | no | Truncate the minimized output if it exceeds this many bytes (default 200000, matches Sipflow's analyze pipeline). |
[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, ChatGPT, Cursor, GitHub) render Mermaid inline. Lane keying: by default participants are keyed by IP, not ip:port, so an endpoint that sends from an ephemeral
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Raw SIP trace text. Multiple messages may be concatenated. |
| callId | string | no | Render only this Call-ID. Required when the trace contains multiple calls; otherwise the only call is used. |
| compact | boolean | no | Drop OPTIONS keepalives and retransmissions. Hidden counts are summarized in a Note over line. |
| includeTiming | boolean | no | Append +Nms (delta from previous arrow) to each arrow label. |
| maxMessages | integer | no | Hard cap on rendered arrows. Extra messages produce a truncation note. Hard ceiling is 200. |
| aliases | object | no | Friendly lane labels. Match order: exact "ip:port" → bare "ip" → top-Via host (with or without port) → Contact host (with or without port). Most-specific match wins; otherwise the lane is labeled with |
| groupRetransmits | boolean | no | Collapse adjacent identical retransmissions on the same direction into a single arrow + Note over: xN over Tms. Independent of compact (which drops them entirely). |
| highlightFailures | boolean | no | Bold the first non-1xx final response per request leg (CSeq) so the failure jumps out in the ladder. |
| splitOnNewBranch | boolean | no | Emit a --- failover to <ip[:port]> --- separator before any request sent to a previously-unseen destination. Useful when the trace fails over between gateway IPs. |
| groupByIp | boolean | no | Collapse multiple ports on the same IP into one participant lane (default). Set to false to fall back to the legacy one-column-per-ip:port layout when you specifically need port-level granularity |
| correlationHeaders | array | no | Header names to use for cross-leg call correlation (value-equality). When provided, calls sharing the same value for any listed header are merged into one ladder. Example: `["X-ACME-Session-ID","X-ACM |
[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' and you don't have a real trace handy. Available scenarios: basic-call, auth-challenge, cancel-before-answer, early-media, hold-resume, refer-blind, proxy-with
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scenario | string | yes | Which scenario to render. Valid ids: basic-call, auth-challenge, cancel-before-answer, early-media, hold-resume, refer-blind, proxy-with-record-route, shaken-attested-invite, bye-glare, redirect-302. |
| actorNames | object | no | Override the default actor display names (Alice/Bob/Proxy). Maps to the first/second/third lane in left-to-right order. |
| includeExplanation | boolean | no | Append a bulleted Notes section with RFC references for each step. |
| verbose | boolean | no | Also include the scenario's long Markdown explanation. Useful when the LLM is going to teach the user; off by default to keep responses small. |
[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 modes that silently break carrier interop: - Two From: headers in one request (RFC 3261 §7.3 / §20.20). - Missing CRLF between consecutive header lines
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Raw SIP request text. Should start with the request line (e.g. INVITE sip:...@... SIP/2.0). Headers must be CRLF or LF separated. |
[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 counts, and a list of structural flags the parser noticed (missing-crlf, tag-on-pai, tag-on-ppi, invalid-folding, duplicate-single-instance, `content-
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Raw SIP message text. Should start with a request line (INVITE sip:...@... SIP/2.0) or status line (SIP/2.0 200 OK). Headers must be CRLF or LF separated. |
[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 structured per-header diff: added, removed, mutated (with old/new value), duplicated (single header → many), de-duplicated, whitespace-only-change, `parame
| Parameter | Type | Required | Notes |
|---|---|---|---|
| before | string | yes | SIP message as observed at the *upstream* hop (e.g. what FreeSWITCH believes it sent). |
| after | string | yes | SIP message as observed at the *downstream* hop (e.g. what Kamailio believes it received). |
| labelBefore | string | no | Display label for the upstream side. Default "before". |
| labelAfter | string | no | Display label for the downstream side. Default "after". |
[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 tuning), or a SIP-shaped source file from a repo. This tool: 1. Detects the vendor from filename + structural signatures (loadmodule, route blocks, [transpo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | The full config blob (or a representative excerpt). UTF-8 plaintext. |
| filenameHint | string | no | Optional filename or path (e.g. "kamailio.cfg", "etc/asterisk/pjsip.conf", "sofia/external.xml"). Strongly improves vendor detection. |
| vendorHint | string | no | Skip auto-detection and force a specific vendor. Use when the heuristics return low confidence or the wrong vendor. |
[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 allowlist, Opus codec, session-timer behavior across the bridge, STIR/SHAKEN signing). When configText is supplied, each item is marked as 'looks present' or 'che
| Parameter | Type | Required | Notes |
|---|---|---|---|
| vendor | string | no | Vendor slug. Omit and supply configText to auto-detect. |
| configText | string | no | Optional config blob. When supplied, items with matching signals are marked as present; vendor is auto-detected if not supplied. |
| filenameHint | string | no | Optional filename ("kamailio.cfg", etc.) to bias auto-detection. |
[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 + candidates, rtcp-mux, BUNDLE groups, fax-relay (m=image udptl t38 plus the a=T38Fax* attribute family), and crypto attributes. Useful for debugging WebRTC ↔ SIP
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sdp | string | yes | SDP body - the section after the empty line in an INVITE/200/UPDATE. |
[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 conflicts (active+active / passive+passive), rtcp-mux / BUNDLE asymmetry, missing DTLS fingerprints when DTLS-SRTP is negotiated, ICE asymmetry, and fax reinvite m
| Parameter | Type | Required | Notes |
|---|---|---|---|
| offer | string | yes | SDP offer body. |
| answer | string | yes | SDP answer body. |
[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 RCD icon hash (RFC 9795). The icon-hash check accepts both payload.rcdi["/icn"] (RFC 9795 §6.1 spec form) and the legacy payload.rcdi["icn"] form deployed
| Parameter | Type | Required | Notes |
|---|---|---|---|
| infoUrl | string | no | Cert URL from the SIP Identity header info= param (or the JWT x5u). If omitted, signature verification is skipped. |
| headerB64 | string | yes | Base64url-encoded JWS protected header (the first dot-separated segment). |
| payloadB64 | string | yes | Base64url-encoded JWS payload (the second segment). |
| signatureB64 | string | yes | Base64url-encoded ES256 signature (the third segment, raw R||S, 64 bytes). |
| iconUrl | string | no | RCD icon URL - payload.rcd.icn. Omit if no Rich Call Data icon. |
| expectedIconHash | string | no | Pre-extracted icon hash, e.g. sha256-XYZ (RFC 9795 §6.1 form <algorithm>-<base64>). Pass this OR rcdi. |
| rcdi | object | no | Full payload.rcdi claim. The validator looks up /icn first (RFC 9795 §6.1 spec form), then falls back to the legacy icn key (still seen in the wild). A legacy hit produces a rcdi-pointer-form |
| strictRfc9795 | boolean | no | When true, reject the legacy rcdi['icn'] key as a hard failure rather than warning. Default false. |
[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 / 436 / 437 / 438 / 608) to their RFC anchors and operator causes. Provide either attestation (A/B/C) or code (e.g. 438). Pair with: `validate_stir_shak
| Parameter | Type | Required | Notes |
|---|---|---|---|
| attestation | string | no | Attestation level: "A" Full / "B" Partial / "C" Gateway. |
| code | integer | no | SIP response code commonly seen in STIR/SHAKEN flows (428, 436, 437, 438, 608). |
[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 into NPA (area code) / NXX (central office) / station, and tagged as toll-free / premium / personal / machine-to-machine / easily-recognizable / reserved / geogra
| Parameter | Type | Required | Notes |
|---|---|---|---|
| number | string | yes | Phone number in any common form. E.164 (+CCNNN…) is preferred; 10-digit US numbers are accepted as a convenience. |
[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 code (and any free-text context the user pasted). When the static entry carries known vendor-specific reason-phrase variants (e.g. 484 + opensips → 'Invalid F
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | integer | yes | SIP response code (e.g. 488, 503, 438). |
| vendorHint | string | no | Vendor slug to filter the RAG search (e.g. "kamailio", "freeswitch", "twilio"). Strongly recommended. |
| context | string | no | Optional free-text context: a snippet of the trace, the Reason header, the Warning header, or a one-line description of what the user was trying to do. |
[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 → A/AAAA. Given a SIP URI ("sip:example.com"), bare hostname ("example.com"), or "host:port" string, return the records that exist and the resolution ladder a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target | string | yes | SIP URI ("sip:example.com"), "example.com:5060", or bare hostname ("example.com"). Userinfo is stripped before lookup. |
| transport | string | no | Transport hint. "any" surfaces all NAPTR services; specific transports filter the SRV walk to that service. |
[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 serves /share/<token>), load the shared SIP trace AND any prior AI analysis attached to it in a single round trip. Use this whenever a user pastes a `/share/<tok
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | Full Sipflow share URL. Example: "https://sipflow.dev/share/eyJqb2JJZCI6Ii4uLiJ9.abc123". The path must be /share/<token>; /api/share/... endpoints are not accepted. |
[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_sip_docs returned nothing useful, vendor missing, coverage incomplete - tool_bug: a tool errored, returned garbage, or behaved unexpectedly on a real input
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | string | yes | Bucket. Use docs_gap for missing RAG coverage, tool_bug for broken behavior, wrong_answer for incorrect output, feature_request for new asks, general for anything else. |
| summary | string | yes | Short one-line description of the feedback. Will be shown to humans triaging. PII-free. |
| details | string | no | Longer description: what the user was trying to do, what happened, what they expected. PII-free. |
| relatedTool | string | no | Name of the Sipflow MCP tool the feedback relates to, if any (e.g. search_sip_docs, troubleshoot_response_code). |
| relatedQuery | string | no | The search query / question that failed or returned poor results. PII-free. |
| vendorOrTopic | string | no | Vendor slug, RFC number, or topic the feedback relates to (e.g. 'freeswitch', 'RFC 3261', 'fax-over-IP'). |
| contact | string | no | Optional email the user can be reached at. Only include when the user explicitly provides one and asks you to attach it. |
| traceExcerpt | string | no | Optional sanitized SIP message text the user explicitly approved attaching. Use the output of minimize_sip_trace (or a hand-scrubbed Via/From/To/Call-ID/CSeq block, optionally with minimal SDP). NEV |
| userConsent | boolean | yes | MUST be true. Set this only after you have shown the user the exact payload above (including any traceExcerpt) and they have confirmed they want it sent. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Sipflow or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither: the repository linked on this page is where this record was collected from, not a copy of what the address serves, so it is not graded in its place. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.2.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Sipflow can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.