Skip to main content
Glama
753,621 tools. Updated 2026-11-06 21:50

"Building voice agents and controlling SIP phones" matching MCP tools:

  • [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 - wrong_answer: the answer it produced was incorrect for the SIP/VoIP question asked - feature_request: a new tool, dataset, or behavior the user wants - general: anything else PRIVACY CONTRACT (MUST FOLLOW): 1. Use this tool only when the user explicitly asks to send feedback, OR when you have completed the user's primary task and there is a clear, actionable gap worth reporting. 2. ALWAYS show the user the exact `summary` + `details` + other fields you plan to send and wait for an explicit yes before calling this tool. Set `userConsent: true` only after that confirmation. 3. NEVER include raw SIP traces, INVITE/REGISTER bodies, SDP, phone numbers, IP addresses, Call-IDs, or any other PII. Summarize in your own words instead. The server runs a sanitizer as a backstop, but you are the first line of defense. 4. The `contact` field is optional and may only be filled when the user explicitly provides an email and asks you to include it. 5. The `traceExcerpt` field is optional and accepts a sanitized SIP message text block (Via/From/To/Call-ID, optional minimal SDP) the user explicitly approved attaching. Pipe `minimize_sip_trace` output here, NEVER raw INVITE / REGISTER bodies or full pcap text. Phone numbers, IPs, and emails are scrubbed server-side as a backstop; the agent must still summarize / minimize first. The same `userConsent: true` covers both the text fields and the excerpt - if the user wants the excerpt included you must show it to them before sending. The tool returns a ticket id (fb_xxxxxxxx) and stores one anonymous row keyed by your daily-rotating IP hash (no raw IP, no account). Rate-limited at 3/min and 20/day per IP hash.
    ConnectorNo auth
  • The Quiet Menders helped counter: agents helped, clinic diagnoses, and tool uses served. Counts service calls, not unique agents; no tracking. Free, anonymous, no parameters — call with {}. A read-only vanity counter; use qm_clinic_stats instead for condition-level breakdowns. Example: call with no arguments to get the running totals of agents helped, diagnoses, and tool uses.
    ConnectorNo auth
  • The Quiet Menders helped counter: agents helped, clinic diagnoses, and tool uses served. Counts service calls, not unique agents; no tracking. Free, anonymous, no parameters — call with {}. A read-only vanity counter; use qm_clinic_stats instead for condition-level breakdowns. Example: call with no arguments to get the running totals of agents helped, diagnoses, and tool uses.
    ConnectorNo auth
  • Reads a text aloud in a natural Portuguese voice from Fish Audio — Rafael by default, or one of six others — and returns an MP3. WHEN TO USE: the user wants to hear a Portuguese text or needs an audio file of it — narration, audiobook, lesson, voice-over, a message read aloud. The voices speak Portuguese (Brazil, and Tomás from Portugal); a text in another language is read with their accent. HOW IT WORKS: - Up to 50,000 characters per call. A text over 1,000 characters is split by sentence into parts of up to 1,000; the parts are voiced three at a time and joined in order into ONE MP3. Progress is reported per part ("Gerando áudio... 3 de 18"), so keep waiting while it arrives. - It takes time: about 25 seconds per round of three parts. 1,000 characters ≈ 25 s; 5,000 ≈ 1 min; 16,000 ≈ 2.5 min; 50,000 ≈ 7 min. - Over 50,000 characters: split the text at paragraph boundaries into several calls with the same voice and speed, and give the user every link, in order. - Send the text as it should be HEARD: remove Markdown marks (**, #, list bullets), URLs, emojis and tables. Do not summarize, translate or reword unless the user asked — every word you send is read. - voice: rafael (default) or beatriz for clear, neutral narration; tomas for European Portuguese; narrador-propagandas for ads; rodolfo, sao-cipriano and capitao-nascimento are deep character voices. - speed: 1 is the voice's natural pace; 0.9 suits calm narration, 1.2 a quick read. RETURNS: - audioUrl: the complete MP3 to download, valid for 7 days. Always give this link to the user. If you can run commands, you can download it (e.g. curl -o audio.mp3 <audioUrl>). - audio: the MP3 itself, only when it is short (about a minute or less); otherwise null. - seconds (duration), parts, characters, voice, speed. - link: this tool's web page with the same voice and speed (the text is not in it). ERRORS say what happened and what to do next. If a part fails, no audio is produced and a new call starts again from part 1.
    ConnectorNo auth
  • Set the voiceover voice for every clip in a project, or only for the clips in `clip_ids`. Use this to apply a clueprint's voice (read `voiceover.voice.name` and `voiceover.voice.engine` from the clueprint source data), or to switch all clips to a specific voice in one call. When the user names specific clips, pass their ids in `clip_ids` so the other clips keep their voice. The voice is looked up by name (case-insensitive; a saved voice's code also works), preferring `voice_engine`. Never guess a name: a name that matches nothing applies the workspace default and returns `matched: false` with a note. Then pick a real voice with find(type='voices'), re-apply, and tell the user. `engine_substituted: true` means the named voice exists only on another engine and was applied there. Common engines: 'eleven' (ElevenLabs), 'cartesia', 'google'. ElevenLabs voices use the latest voice generation unless `voice_version` says otherwise; a voice the workspace saved keeps its saved version. Leave it unset; pass "legacy" ONLY when the user explicitly asks for the legacy/older voice generation.
    ConnectorNo auth
  • Disconnect this workspace's WhatsApp number. After this, broadcasts are NOT delivered to real phones until a number is reconnected. Use this when the user wants to stop sending from their connected number or to re-run the signup with a different number. Synced templates and contacts are kept and re-sync on reconnect. The workspace can reconnect anytime via connect_whatsapp (own credentials) or whatsapp_connect_link (hosted signup). Confirm with the user before calling. Returns { connected: false, disconnected }.
    Connector
    Destructive
    OAuth

Matching MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI coding agents to synthesize and play concise spoken summaries of their work through multiple TTS providers, including Azure, OpenRouter, OpenAI, Gemini, ElevenLabs, and local OpenAI-compatible endpoints. It also lets agents stop playback on demand and check which provider, voice, and audio bridge are currently active.
    4
    33 PyPI
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables users to turn live NIFTY 50 market data into SIP step-up, pause, or continue recommendations based on valuation and trend analysis.
    -

Matching MCP Connectors

  • Lets Claude, Cursor or any MCP client build voice agents and place real phone calls.

  • Search stored Aqua dictations, read transcripts, and manage your dictionary and settings.

  • Get physical building characteristics for a DVF transaction from the BDNB national building database. Returns: construction year, number of units, number of floors, wall material, roof material, primary usage, and median price/m² from BDNB's pre-2022 DVF aggregate stats. REQUIRED: transaction_id (DVF transaction ID — get this from the "id" field in search_property_transactions results) Match method: spatial proximity (nearest BDNB building within 200m). Returns null + refunds credits if no building found within 200m. Workflow: call search_property_transactions first → use an "id" from the results as transaction_id here. Example: transaction_id: "12345678" → { building: { annee_construction: 1967, nb_logements: 48, mat_mur: "beton", ... } } Cost: 2 credits
    ConnectorAPI key
  • AI cleanup of a recording: `speech` = noise + room removal (strength subtle/medium/strong), `music` = keep only the voice from a mixed track, `bg_music` = voice + a little of the original bed. Free. Produces a NEW audio_file_id — use it as the voice source in cast_build_project (cuts planned on the original still apply: same timeline). Enhance the ORIGINAL upload, not an already-enhanced file. On the free plan an API call returns a 60-second head preview (enough to A/B it) — the full-length render is one free click in the editor, or a paid-plan API call. The response says which you got.
    ConnectorOAuth
  • Create an instant voice clone from a speech recording (ElevenLabs). Only clone the user's own voice or a voice they have permission to use. Best results: 1–2 minutes of clean speech with no music or background noise. Costs 15 credits; max 10 clones per account. Returns clone.id — use it as voice_id in create_voiceover, create_avatar_video and change_voice. In app-capable hosts the result renders as an interactive panel the user can see and act on — do NOT repeat its contents as a list or table in your reply; add only what the panel doesn't say.
    ConnectorOAuth
  • Re-render some scenes of a FINISHED video and re-stitch it. Spends credits only for the re-rendered clip seconds of those scenes (~1 per second; key frames, voice and stitching are free; refunded in full if it fails; estimate_cost gives the maximum). Use the regenerate_mode that edit_scene returned: - 'narration': applies narration / visual_description edits -- re-writes those scenes' prompts, then new voice, key frames and clips. - 'images': new key frames, then new clips (after keyframe='variant'). - 'clips': new clips from the current prompts, start frames and durations (after a positive_prompt, keyframe='upload' or duration_seconds edit); also a plain re-roll. Refuses 'images'/'clips' for a scene whose narration/visual edit is not applied yet. After set_scene_audio use 'narration'. If the user still dislikes the voice after a narration fix, suggest their own recording (get_audio_upload_page, then set_scene_audio) rather than more re-rolls.
    Connector
    Destructive
    OAuth
  • Lusha prospecting: returns a window of the enriched contacts a background enrichment job has produced so far. Use when: reading the emails, phones and profile data an enrichment job has produced, for a job id from a prior enrich response. Do not use when: only progress counts are wanted (contacts_enrich_job_status returns them without contact data), or the enrich response carried no job block and already held the contacts. Prerequisite: a job id from the job.id field of a prospecting_contact_enrich or contacts_search response. Each response mirrors every contact in the job, so a window read before the job is terminal carries partial reveals; fields still running read ASYNC_PROCESSING in missingDataPoints and settle to NOT_FOUND once terminal. contactOffset and contactLimit window the mirror into the response budget; contactPage.nextContactOffset carries the next window while hasMore is true. creditsCharged is the running total for the whole enrich request, synchronous reveals included, rather than a background-only increment. Returns: jobId, requestId, status, isTerminal, pollAgainInSeconds, contacts[] (emails, phones, previousEmployment, profile, missingDataPoints), contactPage (offset, limit, returned, totalContacts, hasMore, nextContactOffset, truncatedByCharBudget) and creditsCharged. Credits: does not consume credits.
    ConnectorOAuth
  • Bigger and longer audio goes here. Calls the human and plays a recording to them as a phone call: a podcast, a long narration you rendered, a voice memo, music. `source` is a link (YouTube, SoundCloud, a podcast page, or a direct .mp3/.m4a/.wav/.ogg/.flac/... link) or the audio_id of a file uploaded with `curl --data-binary @file.m4a "https://callmemcp.com/audio?to=<number>&filename=file.m4a"` (up to 300 MB / 3 hours, kept for a day). The voice says your `intro`, the title and the length, then asks if they want to listen now; on a yes the file plays as plain sound (no voice model) until it ends or they hang up. Returns once they answer the offer: status "playing" (they said yes), "completed" with listened:false (no, or nothing), or missed/declined. poll_result later reports listened_s and finished. Use `call` for text under ~2000 characters. `language` ("tr", "de") is the language of your intro; the offer and the call's own lines follow it.
    Connector
    Destructive
    No auth
  • Bigger and longer audio goes here. Calls the human and plays a recording to them as a phone call: a podcast, a long narration you rendered, a voice memo, music. `source` is a link (YouTube, SoundCloud, a podcast page, or a direct .mp3/.m4a/.wav/.ogg/.flac/... link) or the audio_id of a file uploaded with `curl --data-binary @file.m4a "https://callmemcp.com/audio?to=<number>&filename=file.m4a"` (up to 300 MB / 3 hours, kept for a day). The voice says your `intro`, the title and the length, then asks if they want to listen now; on a yes the file plays as plain sound (no voice model) until it ends or they hang up. Returns once they answer the offer: status "playing" (they said yes), "completed" with listened:false (no, or nothing), or missed/declined. poll_result later reports listened_s and finished. Use `call` for text under ~2000 characters. `language` ("tr", "de") is the language of your intro; the offer and the call's own lines follow it.
    Connector
    Destructive
    No auth
  • Rewrite one passage of email copy, a paragraph (kind=body) or a subject line (kind=subject), in this account's brand voice. Facts, links, numbers and merge tags such as {first_name} are kept (checked in code; a rewrite that changes them is refused and the error says why). Up to 4000 characters, at least 3 words: rewrite one section at a time. Nothing is saved; show the result to the user and apply it with mcp_crm_campaign_drafts_update if they want it. Fails with a message if the account has no brand voice yet (see mcp_crm_brand_voice_get). Takes up to a minute. Tenant is bound to the session and cannot be changed via tool arguments.
    ConnectorOAuth
  • [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:...@... SIP/2.0`) or status line (`SIP/2.0 200 OK`). PCAP-decoded text from sngrep / ngrep / tcpdump / tshark, syslog with SIP body, sipflow's own export format, or a hand-pasted INVITE/200 dialog all work. Annotation lines like `# [timestamp] sender -> receiver` or ngrep-style `U <ip>:<port> -> <ip>:<port>` between blocks are tolerated. Safe to run on production traces - the input is processed in-memory and is not persisted or sent off-server. Pair with: `detect_sip_stack` to identify the vendor, then `search_sip_docs(vendor=...)` for vendor-grounded analysis; `render_sip_ladder` to visualize the trace as a Mermaid call-flow ladder; `lint_sip_request` / `parse_sip_message` to mechanically validate any single message in the trace.
    ConnectorNo auth
  • [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 UA would try. When the queried target uses TLS (`sips:` URI, `transport=tls/wss`, or any `_sips._tcp` SRV record), the tool also performs a TLS handshake against each resolved sips target and reports the negotiated TLS version + cipher, the leaf certificate's subject / issuer / SANs / validity, the chain length and whether it validates against Node's default trust store, plus two cert-domain checks: RFC 5922 §7.2 strict (cert must cover the original SIP domain) and a lenient SAN match against the SRV target hostname. SIP liveness: DNS resolving and a TLS handshake succeeding do NOT prove the endpoint actually speaks SIP - a load-balanced node can accept TCP/TLS yet black-hole SIP. So the tool ALSO sends a real SIP OPTIONS keepalive to each resolved public IP across the relevant transports (UDP/TCP on 5060, TLS on 5061 / SRV port) and reports per-IP answered / timeout / refused. Any SIP response (even 405/403/404) proves the stack is alive on that IP. When a name resolves to multiple IPs it is treated as a load-balancer fan-out and each IP is probed individually, with a warning about the known failure modes of fronting stateful SIP/RTP with a cloud L4 LB (AWS NLB/ALB etc.): cross-zone-off targets that black-hole, the ~120s UDP idle timeout, and per-5-tuple hashing splitting signaling from media. Egress safety: - Per-IP rate limited. - Hostnames that resolve only to RFC 1918 / loopback / link-local / documentation / multicast space are refused (SSRF guard). - Walk depth capped to prevent runaway NAPTR / CNAME chains. - TLS probes capped at 6 (host, port, ip) tuples per call, 5 s handshake timeout each, public-IP only (we connect to the resolved IP, not the hostname, so the system resolver cannot redirect us into private space). - SIP OPTIONS probes capped at 6 (ip, transport) tuples per call, 3 s timeout each, public-IP only; the request carries no SDP/body and an unroutable Via, and only the response status line is captured. Use to diagnose: - "carrier doesn't answer" / "wrong port" / "TLS instead of UDP" routing puzzles - "DNS looks healthy but calls fail" - per-IP SIP OPTIONS surfaces nodes that resolve and accept the transport but never answer SIP (the decisive step for load-balanced / multi-IP targets) - "carrier rejects our target because no SRV is published" - when A/AAAA resolves but SRV is missing the tool synthesises a copy-pasteable suggested zone-record block pointing at the resolved canonical hostname - "TLS handshake works but cert isn't valid for the SIP domain" - RFC 5922 §7.2 compliance is checked separately from generic chain validation, since the SAN must cover the *original* SIP domain (not the SRV-redirected target) ACL caveat: a SIP OPTIONS timeout can also mean the target authorizes inbound SIP by source IP whitelist on the trunk (Twilio, Telnyx, Bandwidth, …; see https://www.twilio.com/docs/sip-trunking/api/ipaccesscontrollist-resource) and is dropping our probe because our egress IP is not on the ACL. An `answered` result is conclusive (the node speaks SIP); a `timeout` is suggestive, not proof of a dead node - confirm reachability from the SBC itself. Pair with: `troubleshoot_response_code` when 503 / 408 / 480 are involved; `search_sip_docs(vendor=...)` for carrier-specific routing docs.
    ConnectorNo auth
  • [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/<token>` URL: the tool fetches the redacted trace text, the AI executive summary / root-cause / remediation steps (if present), and metadata (vendor, filename, source format, pseudonymized flag), so the agent can review the trace alongside the user's own configs without manual download + paste. In addition to the AI output, the response includes rule-based diagnostics: detected issues (severity-tagged SIP/SDP/media problems with RFC references), WebRTC signal checklist scores, multi-leg call correlation (Session-ID grouping), and detected SIP stacks (User-Agent/Server header values). These diagnostics are computed at share-creation time; for older shares without persisted diagnostics, the tool parses the trace on the fly. When the share includes media quality data (from PCAP-sourced captures), the response includes per-call MOS/jitter/loss summaries in the text output and full `mediaQuality` stats in `structuredContent`. If `hasRawCapture` is true, the sharer included their original PCAP for full RTP playback on the web UI - this raw binary is not returned to agents. Privacy: the share endpoint deliberately strips the original `problem` and `architecture` fields the sharer typed in (those may contain customer-internal context). This tool returns the same public projection - only the trace, the AI output, diagnostics, and basic metadata. Traces are pseudonymized by default (phone numbers / IPs / Call-IDs replaced with consistent fakes); the `pseudonymized` field tells you whether the sharer opted to keep raw values. Trace bytes are capped at 200kB (matching the budget the Sipflow AI worker uses). For very large captures the response sets `trace.truncated=true` - pair with `minimize_sip_trace` to compact further before passing to your own LLM, or with `render_sip_ladder` to visualize the call flow. Pair with: `review_sip_config` to compare the shared trace against the user's own kamailio.cfg / pjsip.conf / FreeSWITCH XML; `render_sip_ladder` to draw the shared call flow inline; `minimize_sip_trace` if `trace.truncated` is true; `troubleshoot_response_code` for any failing transactions surfaced in the AI analysis.
    ConnectorNo auth
  • Deep parcel and building analysis for Slovenia using GURS WFS data. Returns zoning, actual use, heritage protection, road access, buildings on parcel, and utilities. USE FOR: - "Analyze parcel 3086 in Ljubljana center" - "Find buildable parcels ~500m² in Ljubljana" - "What buildings are on this parcel?" - "Find parcels near these coordinates" - "Get full details on building 1234" NOT FOR: simple parcel lookup → use slovenia-cadastre instead (faster, lighter). NOT FOR: spatial/zoning map queries → use slovenia-wfs-expert instead. SEARCH MODES — pick ONE per call: 1. PARCEL BY NUMBER (requires --parcel AND --ko) → --parcel 3086 --ko 1725 2. LOCATION SEARCH (requires --lat AND --lon, or --location) → --lat 46.058 --lon 14.501 --radius 100 → --location "Tivoli Park Ljubljana" --radius 200 3. BUILDING BY NUMBER (requires --building, optionally --ko) → --building 1234 --ko 1728 4. COMMUNITY SEARCH (requires at least --community or --size) → --community LJUBLJANA --size 500 --buildable COMMON KO IDs: 1725 = Ljubljana center 1728 = Ljubljana Šiška 1740 = Ljubljana Bežigrad 2131 = Maribor NOTE: This tool makes multiple WFS calls per result and can be slow (10-30s). Use --limit to keep response times reasonable.
    ConnectorNo auth
  • Draft one or more posts into a ProductClank content space. FREE. Call get_content_workspace FIRST and write in that brand's voice, post types and topics — the drafts are scored against exactly that voice by the reviewer a moment after they land, and the scores show in get_content_queue. `platform` must be one of the space's platforms (omit it to use the first). Candidates land in the user's 'All Content' queue for approval; nothing is auto-published. Up to 25 per call. This drafts into the user's OWN content pipeline — it is NOT a community content campaign (use create_content_campaign for that).
    ConnectorNo auth
  • Generate natural speech audio from English text. Produces high-quality speech with 12 English voices. Returns base64-encoded WAV audio (16-bit PCM, 24kHz mono) along with metadata. Available voices: - af_heart (default), af_bella, af_nicole, af_sarah, af_sky (American female) - am_adam, am_michael (American male) - bf_emma, bf_isabella (British female) - bm_george, bm_lewis, bm_daniel (British male) Args: text: English text to synthesize (1-5000 characters). voice: Voice ID. See list above. Defaults to 'af_heart'. speed: Speed multiplier from 0.5 to 2.0 (default: 1.0). Returns: dict with keys: - audio_base64 (str): Base64-encoded WAV audio (16-bit PCM, 24kHz) - duration_ms (str): Audio duration in milliseconds - voice (str): Voice ID used - text_length (str): Input text character count - processing_ms (str): Synthesis time in milliseconds
    ConnectorNo auth
  • Submits an enquiry to Agricultural Building Cost — NOT a purchase, NOT a guaranteed quote. Step 1: call with the answers (keyed by field key from enquiry_fields) and consent=true; it validates and returns a summary, the consent line and a confirmation token — show the person the summary and the consent line. Step 2: only if the person agrees, call again with the same answers, consent=true and the confirmation token; the enquiry is then submitted, and the person receives an email with a link they must click before any provider sees it. Consent means the person has read and agreed to: "Send my contact details to up to three agricultural building and grain store firms, chosen by Agricultural Building Cost, who'll contact me directly. I'll be emailed each firm's name as my details go to it, and can stop any more firms getting them."
    ConnectorNo auth