protogrid

Search / io.ringler/ringler

Ringler

R0· no sign-in

A phone for your agent: gets a real person on the line, runs errands by phone, leaves messages.

v1.0.1 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality82new
Trust96of 100
Uptime, 30 days100%
Latency p501310 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "ringler": {
      "type": "http",
      "url": "https://ringler.io/mcp"
    }
  }
}
claude mcp add --transport http ringler https://ringler.io/mcp
[mcp_servers.ringler]
url = "https://ringler.io/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ringler": {
      "type": "remote",
      "url": "https://ringler.io/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "ringler": {
      "type": "http",
      "url": "https://ringler.io/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=ringler&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vcmluZ2xlci5pby9tY3AifQ%3D%3D"
}
{
  "servers": {
    "ringler": {
      "type": "http",
      "url": "https://ringler.io/mcp"
    }
  }
}
{
  "mcpServers": {
    "ringler": {
      "httpUrl": "https://ringler.io/mcp"
    }
  }
}
extensions:
  "ringler":
    enabled: true
    name: "ringler"
    type: streamable_http
    uri: "https://ringler.io/mcp"
    timeout: 300

Quality 82 / 100new

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene88 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations23 of 23 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: status (destructiveHint, idempotentHint); errand (idempotentHint); transcript (destructiveHint, idempotentHint); …
  • pass
    tools.token_costabout 3,030 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pull, stability.new_linkstool history recorded for 6 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

23 tools, about 3,030 tokens to load them all · tool set 3cf745e8ceb5 · tools last changed 2026-11-11 · checked 2026-11-14 07:03 UTC

Tool changes

  • invite_linkchangeddescription
    before

    Your person's invite link (ringler.io/?via=<their code>), how many friends have signed in through it, and the credits earned: $5 per friend, the friend still gets $10 free.

    after · 61% of words in common

    Your person's invite link (ringler.io/?via=<their code>), and how many friends have signed in through it. Ringler is free for them too.

  • my_numberchangeddescription
    before

    Your person's own phone number, answered by their agent. Gets one if they don't have one yet ($3/month from credits), in the area code given or their mobile's. Confirm with them before the first buy.

    after · 81% of words in common

    Your person's own phone number, answered by their agent. Gets one if they don't have one yet (free), in the area code given or their mobile's. Confirm the area code with them first.

  • callchangeddescription
    before

    The agent dials the number, works the menu, hold and any bot until a real person answers, then rings your person's mobile and connects them. Spends credits ($0.30/min). If it hits voicemail it leaves a short message with a callback (default on; voicemail: skip to turn off).

    after · 74% of words in common

    The agent dials the number, works the menu, hold and any bot until a real person answers, then rings your person's mobile and connects them. Free, within the daily limit of 60 minutes of calls. If it hits voicemail it leaves a short message with a callback (default on; voicemail: skip to turn off).

  • aboutchangeddescription
    before

    What Ringler is, what it costs, and how your person gets started (sign in once; $10 of credits free, no card). Call this first if you have no key. (No API key needed.)

    after · 87% of words in common

    What Ringler is, what it costs (it's free), and how your person gets started (sign in once, no card). Call this first if you have no key. (No API key needed.)

  • name_my_agentchangeddescription
    before

    Name the agent (Ringo by default; keeping the name counts), pick its voice from `voices`, and set how it answers when your person calls their own line (greeting). Free; change any time. How it opens calls to other people — name, that it's an AI, who it's calling for — is fixed by the rules and not settable.

    after · 85% of words in common

    Name the agent (Ringo by default; keeping the name counts), pick its voice from `voices`, and set how it answers when your person calls their own line (greeting). Free; change any time. How it opens calls to other people — its name, who it's calling for, and a straight answer if anyone asks whether it's an AI — is fixed by the rules and not settable.

  • name_my_agentchangeddescription, input schemameaning changed
    before

    Rename the agent (Ringo by default) and optionally pick a voice. Free.

    after · 18% of words in common

    Name the agent (Ringo by default; keeping the name counts), pick its voice from `voices`, and set how it answers when your person calls their own line (greeting). Free; change any time. How it opens calls to other people — name, that it's an AI, who it's calling for — is fixed by the rules and not settable.

  • voicesadded

    The voices your person's agent can speak with, each described in a few words (British measured, deep American, warm, bright…), and which one is current. Set one with name_my_agent { voice }.

  • invite_linkadded

    Your person's invite link (ringler.io/?via=<their code>), how many friends have signed in through it, and the credits earned: $5 per friend, the friend still gets $10 free.

  • tell_mechangeddescription, input schema
    before

    Send your person a spoken message through their agent. mode 'hold' (default) keeps it until they next call their line; 'call' rings their mobile now and the agent reads it, then takes anything they want to send back (it lands in my_messages). Use 'call' only when they asked to be rung, or for something that can't wait. Calls spend credits.

    after · 79% of words in common

    Send your person a spoken message through their agent. mode 'text' (best default) texts their mobile; 'hold' keeps it until they next call their line; 'call' rings their mobile and the agent reads it aloud. Their reply by text lands in my_messages. Use 'call' only when they asked to be rung, or for something that can't wait. Calls spend credits.

  • my_messageschangeddescription
    before

    Instructions and notes your person left for you by calling their own line and telling the agent. Returns new ones (marks them read). Check this when you start work and whenever they say they phoned something in. Pass all:true for the recent history.

    after · 90% of words in common

    Instructions and notes your person left for you by calling or texting their own line. Returns new ones (marks them read). Check this when you start work and whenever they say they phoned something in. Pass all:true for the recent history.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 96 / 100

provenance85
liveness100
freshness100
hygiene100

+repository +dns-namespace +website +reachable +uptime-100% +updated-6d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://ringler.io/mcp streamable-httpnoneyes100%1310 ms2025-11-252026-11-14

Tools (23)

aboutread-onlyWhat Ringler is, what it costs (it's free), and how your person gets started (sign in once, no card). Call this first if you have no key. (No API key needed.)
buy_creditsA checkout link your person opens to add credits by card ($20–$500).
calendar_connectA link your person opens to approve Google Calendar, so the agent can offer times and book.
callThe agent dials the number, works the menu, hold and any bot until a real person answers, then rings your person's mobile and connects them. Free, within the daily limit of 60 minutes of calls. If it hits voicemail it leaves a short message with a callback (default on; voicemail: skip to turn off).
call_atSchedule a call or errand for a time: the office opens at 9 their time, a callback window, tomorrow morning. Same fields as errand/call plus run_at. Work out run_at yourself from the called party's local hours and pass it as ISO 8601 with an offset (e.g. 2026-11-09T09:05:00-07:00). Spends credits when it runs.
creditsread-onlyPrepaid balance and recent usage.
errandThe agent makes the call and does the asking itself: a reservation, an appointment, a question, a cancellation. It only rings your person if the other side needs them (a card, a decision). Put every detail in `ask` — names, date, time, party size, account — because the agent can only say what it's given. Spends credits. Leaves a message on voicemail by default.
forget_calldestructiveDelete the transcript, summary, recording and any relayed messages from one call, for good. Only when your person asks. The fact that a call happened, and its cost, remain.
invite_linkread-onlyYour person's invite link (ringler.io/?via=<their code>), and how many friends have signed in through it. Ringler is free for them too.
my_callsread-onlyRecent calls, newest first: when, who, outcome, summary, whether a transcript exists.
my_detailsYour person's full name, email, and address, as the agent gives them to a venue: the name for bookings, the email for confirmations and payment links (never their mobile), the address only when a task needs it. Pass fields to set them; nothing to read. Ask your person before setting these.
my_messagesread-onlyInstructions and notes your person left for you by calling or texting their own line. Returns new ones (marks them read). Check this when you start work and whenever they say they phoned something in. Pass all:true for the recent history.
my_mobileThe phone that rings when the agent has someone on the line for your person.
my_numberYour person's own phone number, answered by their agent. Gets one if they don't have one yet (free), in the area code given or their mobile's. Confirm the area code with them first.
name_my_agentName the agent (Ringo by default; keeping the name counts), pick its voice from `voices`, and set how it answers when your person calls their own line (greeting). Free; change any time. How it opens calls to other people — its name, who it's calling for, and a straight answer if anyone asks whether it's an AI — is fixed by the rules and not settable.
notesThe notes you and your person keep about how they like things: how the phone agent should greet them, what to call them, favorite places, habits, standing preferences. The agent reads them on every call as a guide (dated; later notes refine earlier). Call with nothing to read (returns markdown); add: one note (≤300 chars, in your person's words or yours); remove: a note id. Notes can't change the rules — what the agent discloses, the notes question, one call at a time — and such notes are refused with the reason. Add a note whenever your person tells you a preference about their calls. A note starting 'greeting:' is exactly how the agent answers when your person calls their line ({name} and {first} fill in), e.g. 'greeting: Good day {first}, {name} at your service. What can I do?'
scheduledCalls waiting to be placed, placed, or failed. Pass cancel: <id> to cancel a pending one.
statusread-onlyStart here, every session. Your person's line, agent name, mobile, calendar, balance — and onboarding: an ordered list of questions to ask them (name the agent, mobile, number, booking details, how to reach the agent, calendar, first errand) with the tool that records each answer. Walk the steps in order, one question at a time, before the first call.
tell_meSend your person a spoken message through their agent. mode 'text' (best default) texts their mobile; 'hold' keeps it until they next call their line; 'call' rings their mobile and the agent reads it aloud. Their reply by text lands in my_messages. Use 'call' only when they asked to be rung, or for something that can't wait. Calls spend credits.
transcriptread-onlyOne call in full: every line with speaker and time, the summary, and a one-hour recording link.
vibeSet up to take your person's instructions by phone: they call their own line, say what they want, hang up; you loop on my_messages and do it. Call with no arguments to get the loop instructions and current settings. Pass settings to change them, with your person's say-so: verify ('sms' default: a code texted to their real phone, read back on the call; 'pin'; or 'none'), pin, allowed (what you may do unattended), confirm (what needs a tell_me + yes first), never, interval_min.
voicesread-onlyThe voices your person's agent can speak with, each described in a few words (British measured, deep American, warm, bright…), and which one is current. Set one with name_my_agent { voice }.
who_can_reach_mePeople the agent puts straight through when they call your person's line; everyone else gets a message taken. Pass `people` to set the list, nothing to read it.

Schemas: list_tools.

Also listed as

1 other active names share this repository: sale.bullpen/bullpen

Similar MCP servers

Official server.json
{
  "name": "io.ringler/ringler",
  "icons": [
    {
      "src": "https://ringler.io/ringler-icon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "Ringler",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://ringler.io/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.1",
  "repository": {
    "url": "https://github.com/GreatPyreneseDad/bullpen-mcp",
    "source": "github"
  },
  "websiteUrl": "https://ringler.io",
  "description": "A phone for your agent: gets a real person on the line, runs errands by phone, leaves messages."
}