Directory / Work & productivity
/call-me
Rings your iPhone so an agent can ask a question out loud and get your spoken answer back as text, or text you; no auth on the endpoint, needs the /call-me iPhone app (paid subscription). Endpoint: https://callmemcp.com/mcp
Live Answered an MCP handshake without credentials and listed 8 tools.
- Category
- Work & productivity
- Transport
http- Source
- https://github.com/radres/call-me
- Endpoint
https://callmemcp.com/mcp- MCP Registry
com.callmemcp/call-me- Reports itself as
- call-me
- Protocol
- 2025-06-18
- Tools
- 8
- Context cost
- about 1,345 tokens for the tool definitions (estimated at four characters per token)
- Tool definitions last changed
- 2026-11-03
- Handshake time
- 274 ms
- Repository
- 31 stars · last push 2026-11-01 · MIT
- Last checked
- 2026-11-03 10:54:33 UTC
- Listed since
- 2026-10-20
Health and compatibility
| Endpoint reachable | Verified | Responded in 274 ms |
|---|---|---|
| MCP handshake (initialize) | Verified | Completed without credentials |
| Tool discovery (tools/list) | Verified | 8 tools listed |
| Authentication | Verified | None needed to connect |
| Protocol version | Verified | 2025-06-18 |
| Transport | Verified | Streamable HTTP |
| Capabilities declared | Verified | experimental, prompts, resources, tools |
Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.
Recent history
100% of the last 10 daily checks reachable; median response 221 ms. Green answered, violet asked for auth, red did not answer.
Set up in your client
Claude Code
Run this in a terminal:
claude mcp add --transport http call-me https://callmemcp.com/mcpClaude Desktop
Open Settings → Connectors → Add custom connector and paste this URL:
https://callmemcp.com/mcpOr bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):
{
"mcpServers": {
"call-me": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://callmemcp.com/mcp"
]
}
}
}Cursor
Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"call-me": {
"url": "https://callmemcp.com/mcp"
}
}
}VS Code
Or add it to .vscode/mcp.json:
{
"servers": {
"call-me": {
"type": "http",
"url": "https://callmemcp.com/mcp"
}
}
}Or from a terminal:
code --add-mcp '{"name": "call-me", "type": "http", "url": "https://callmemcp.com/mcp"}'Windsurf
Add it to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"call-me": {
"serverUrl": "https://callmemcp.com/mcp"
}
}
}Other clients
Most clients accept this shape. The endpoint is:
https://callmemcp.com/mcp{
"mcpServers": {
"call-me": {
"type": "http",
"url": "https://callmemcp.com/mcp"
}
}
}If it does not connect
- Restart the client after editing a config file, and keep keys out of files you commit.
- If the tools do not appear, open the client's MCP log: a 401 means the credentials were not accepted, and a timeout means the server did not answer.
Tools 8
Names, descriptions and input schemas exactly as the server returned them on 2026-11-03. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON
callcan modifydestructiveexternal accessRing the human's phone, read `question` aloud word for word, and return what they say back. It does not have …
Ring the human's phone, read `question` aloud word for word, and return what they say back. It does not have to be a question: an update or a summary of the day ahead works too, up to 2000 characters (about two minutes of speech). Waits up to ~30s; if the result comes back status "ringing" or "in_call", follow up with poll_result. On a local client, read `to` from `~/.aiphone/config.json` → `user_number`; this hosted server cannot read that file itself. It is a Call Me app number, not a regular phone number. If missing, returns setup_required with the download links. Pass a previous session_token to stay in the same thread on their phone. By default the call is a conversation: after their answer the line stays up for `say` until you `hang_up`; keep_open=false hangs up after one answer. `language` ("tr", "de", ...) is the language you are speaking; the call's own short lines follow it. Default English.
| Parameter | Type | Description | |
|---|---|---|---|
question | string | required | |
to | string | null | optional | |
from_label | string | optional | |
session_token | string | null | optional | |
keep_open | boolean | null | optional | |
language | string | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "call",
"arguments": {
"question": "..."
}
}
}hang_upcan modifydestructiveexternal accessEnd a call you placed. In a keep_open conversation `goodbye` is spoken first (e.g. "Thanks, I'll get on …
End a call you placed. In a keep_open conversation `goodbye` is spoken first (e.g. "Thanks, I'll get on it."); leave it empty to just hang up.
| Parameter | Type | Description | |
|---|---|---|---|
call_id | integer | required | |
session_token | string | required | |
goodbye | string | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "hang_up",
"arguments": {
"call_id": 0,
"session_token": "..."
}
}
}poll_resultread-onlyCheck on a call that was still ringing or in progress. Waits up to ~25s for it to settle; returns the final …
Check on a call that was still ringing or in progress. Waits up to ~25s for it to settle; returns the final status and transcript once the call ends, the human declines, or the ring times out ("missed").
| Parameter | Type | Description | |
|---|---|---|---|
call_id | integer | required | |
session_token | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "poll_result",
"arguments": {
"call_id": 0,
"session_token": "..."
}
}
}saycan modifydestructiveexternal accessIn a call placed with keep_open=true, speak `text` to the human and return what they answer, in the same …
In a call placed with keep_open=true, speak `text` to the human and return what they answer, in the same shape as `call`. Only after their previous answer is in. Waits up to ~30s; on "in_call", follow up with poll_result. "open": false means the call has ended. Pass `language` only to switch the language of the call's own lines; empty keeps it. Anything they said while you were thinking comes back as "said_while_waiting".
| Parameter | Type | Description | |
|---|---|---|---|
call_id | integer | required | |
session_token | string | required | |
text | string | required | |
language | string | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "say",
"arguments": {
"call_id": 0,
"session_token": "...",
"text": "..."
}
}
}set_thread_titlecan modifydestructiveName this session's conversation thread on the human's phone (e.g. the project or task you are working on). …
Name this session's conversation thread on the human's phone (e.g. the project or task you are working on). Shown as the thread title in the app.
| Parameter | Type | Description | |
|---|---|---|---|
session_token | string | required | |
title | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "set_thread_title",
"arguments": {
"session_token": "...",
"title": "..."
}
}
}setupread-onlyReturn first-setup instructions and clickable App Store and Google Play download links when no number is …
Return first-setup instructions and clickable App Store and Google Play download links when no number is available.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "setup",
"arguments": {}
}
}textcan modifydestructiveexternal accessSend a one-way text to the human's phone (push notification, no ring). On a local client, read `to` from …
Send a one-way text to the human's phone (push notification, no ring). On a local client, read `to` from `~/.aiphone/config.json` → `user_number`; this hosted server cannot read that file itself. If missing, returns setup_required with the download links. Pass a previous session_token to stay in the same thread.
| Parameter | Type | Description | |
|---|---|---|---|
body | string | required | |
to | string | null | optional | |
from_label | string | optional | |
session_token | string | null | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "text",
"arguments": {
"body": "..."
}
}
}wait_for_replyread-onlyWait for the human to send something back to this session — texts and voicemail transcripts arrive here. …
Wait for the human to send something back to this session — texts and voicemail transcripts arrive here. Long-polls up to wait_s (max 30s); returns {events, cursor}. Pass the returned cursor next time to only see new events. An empty events list just means nothing yet — poll again if you are still waiting.
| Parameter | Type | Description | |
|---|---|---|---|
session_token | string | required | |
cursor | integer | optional | |
wait_s | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "wait_for_reply",
"arguments": {
"session_token": "..."
}
}
}Badge
Maintain this server? Put its live status in your README:
[](https://mcp.aianytime.net/s/call-me/)Edit this entry · Report a problem
More in Work & productivity
Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt
Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers