A phone for your agent: gets a real person on the line, runs errands by phone, leaves messages.
Maintained by@GreatPyreneseDad(verified)Also a maintainer?
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.)
This tool takes no arguments.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http ringler https://ringler.io/mcp
Tool list last changed Nov 8, 2026.
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.)
No arguments.
{
"type": "object",
"properties": {}
}A checkout link your person opens to add credits by card ($20–$500).
| Argument | Type | Description |
|---|---|---|
| usd* | number | Amount in USD, 20–500. |
{
"type": "object",
"required": [
"usd"
],
"properties": {
"usd": {
"type": "number",
"description": "Amount in USD, 20–500."
}
}
}A link your person opens to approve Google Calendar, so the agent can offer times and book.
No arguments.
{
"type": "object",
"properties": {}
}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).
| Argument | Type | Description |
|---|---|---|
| to* | string | Phone number, E.164 or 10 digits. |
| why | string | One line on what it's about. |
| target* | string | Who to ask for: a name or a role (the pharmacy, the front desk). |
| callback | string | Number to leave: 'crew_line' (the agent's line, default), 'me', or a number. |
| voicemail | string |
{
"type": "object",
"required": [
"to",
"target"
],
"properties": {
"to": {
"type": "string",
"description": "Phone number, E.164 or 10 digits."
},
"why": {
"type": "string",
"description": "One line on what it's about."
},
"target": {
"type": "string",
"description": "Who to ask for: a name or a role (the pharmacy, the front desk)."
},
"callback": {
"type": "string",
"description": "Number to leave: 'crew_line' (the agent's line, default), 'me', or a number."
},
"voicemail": {
"enum": [
"leave",
"skip"
],
"type": "string"
}
}
}Schedule 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.
| Argument | Type | Description |
|---|---|---|
| to* | string | Phone number. |
| ask | string | For an errand: exactly what to get done, every detail. |
| mode | string | |
| note | string | Why this time, for your person's records. |
| run_at* | string | When to place it, ISO 8601 with offset. |
| target | string | Who to ask for. |
| callback | string | 'crew_line' (default), 'me', or a number. |
| voicemail | string |
{
"type": "object",
"required": [
"to",
"run_at"
],
"properties": {
"to": {
"type": "string",
"description": "Phone number."
},
"ask": {
"type": "string",
"description": "For an errand: exactly what to get done, every detail."
},
"mode": {
"enum": [
"errand",
"call"
],
"type": "string"
},
"note": {
"type": "string",
"description": "Why this time, for your person's records."
},
"run_at": {
"type": "string",
"description": "When to place it, ISO 8601 with offset."
},
"target": {
"type": "string",
"description": "Who to ask for."
},
"callback": {
"type": "string",
"description": "'crew_line' (default), 'me', or a number."
},
"voicemail": {
"enum": [
"leave",
"skip"
],
"type": "string"
}
}
}Prepaid balance and recent usage.
No arguments.
{
"type": "object",
"properties": {}
}The 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.
| Argument | Type | Description |
|---|---|---|
| to* | string | Phone number. |
| ask* | string | Exactly what to get done, with every detail. |
| target | string | Optional: who to ask for. |
| callback | string | 'crew_line' (default), 'me', or a number. |
| voicemail | string |
{
"type": "object",
"required": [
"to",
"ask"
],
"properties": {
"to": {
"type": "string",
"description": "Phone number."
},
"ask": {
"type": "string",
"description": "Exactly what to get done, with every detail."
},
"target": {
"type": "string",
"description": "Optional: who to ask for."
},
"callback": {
"type": "string",
"description": "'crew_line' (default), 'me', or a number."
},
"voicemail": {
"enum": [
"leave",
"skip"
],
"type": "string"
}
}
}Recent calls, newest first: when, who, outcome, summary, whether a transcript exists.
| Argument | Type | Description |
|---|---|---|
| limit | number | How many, default 10. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "How many, default 10."
}
}
}Your 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.
| Argument | Type | Description |
|---|---|---|
| string | For confirmations, receipts and payment links. | |
| notes | string | Anything the agent should know when speaking for them (allergies to mention, preferred table, parking). |
| address | string | Street address, for deliveries or service calls. |
| timezone | string | IANA zone, e.g. America/Denver, for calendar entries. |
| full_name | string | As it should appear on a booking. |
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "For confirmations, receipts and payment links."
},
"notes": {
"type": "string",
"description": "Anything the agent should know when speaking for them (allergies to mention, preferred table, parking)."
},
"address": {
"type": "string",
"description": "Street address, for deliveries or service calls."
},
"timezone": {
"type": "string",
"description": "IANA zone, e.g. America/Denver, for calendar entries."
},
"full_name": {
"type": "string",
"description": "As it should appear on a booking."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| all | boolean | Include ones already read. |
{
"type": "object",
"properties": {
"all": {
"type": "boolean",
"description": "Include ones already read."
}
}
}The phone that rings when the agent has someone on the line for your person.
| Argument | Type | Description |
|---|---|---|
| mobile* | string | E.164 or 10-digit US number. |
{
"type": "object",
"required": [
"mobile"
],
"properties": {
"mobile": {
"type": "string",
"description": "E.164 or 10-digit US number."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| area_code | string | 3 digits, optional. |
{
"type": "object",
"properties": {
"area_code": {
"type": "string",
"description": "3 digits, optional."
}
}
}Rename the agent (Ringo by default) and optionally pick a voice. Free.
| Argument | Type | Description |
|---|---|---|
| name* | string | A first name. |
| voice_id | string | ElevenLabs voice id, optional. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "A first name."
},
"voice_id": {
"type": "string",
"description": "ElevenLabs voice id, optional."
}
}
}Calls waiting to be placed, placed, or failed. Pass cancel: <id> to cancel a pending one.
| Argument | Type | Description |
|---|---|---|
| cancel | string | Id to cancel. |
{
"type": "object",
"properties": {
"cancel": {
"type": "string",
"description": "Id to cancel."
}
}
}Your person's line, their agent's name, their mobile, calendar, who may reach them, balance, and the next thing to set up. Start here.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| mode | string | |
| message* | string | What to tell them, plainly, as the agent will say it aloud. |
{
"type": "object",
"required": [
"message"
],
"properties": {
"mode": {
"enum": [
"hold",
"call"
],
"type": "string"
},
"message": {
"type": "string",
"description": "What to tell them, plainly, as the agent will say it aloud."
}
}
}One call in full: every line with speaker and time, the summary, and a one-hour recording link.
| Argument | Type | Description |
|---|---|---|
| id* | string | Call id or call SID from my_calls. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Call id or call SID from my_calls."
}
}
}People 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.
| Argument | Type | Description |
|---|---|---|
| people | array |
{
"type": "object",
"properties": {
"people": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Name as they'd say it."
},
"note": {
"type": "string",
"description": "Optional: who they are."
}
}
}
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
Calls waiting to be placed, placed, or failed. Pass cancel: <id> to cancel a pending one.
Schedule 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.
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "For confirmations, receipts and payment links."
},
"notes": {
"type": "string",
"description": "Anything the agent should know when speaking for them (allergies to mention, preferred table, parking)."
},
"address": {
"type": "string",
"description": "Street address, for deliveries or service calls."
},
"full_name": {
"type": "string",
"description": "As it should appear on a booking."
}
}
}{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "For confirmations, receipts and payment links."
},
"notes": {
"type": "string",
"description": "Anything the agent should know when speaking for them (allergies to mention, preferred table, parking)."
},
"address": {
"type": "string",
"description": "Street address, for deliveries or service calls."
},
"timezone": {
"type": "string",
"description": "IANA zone, e.g. America/Denver, for calendar entries."
},
"full_name": {
"type": "string",
"description": "As it should appear on a booking."
}
}
}Your 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.