Call Me
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Your AI rings your iPhone, speaks its question, and gets your spoken answer back as text.
| Author | com.serdaroztetik |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2159 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Call Me": {
"url": "https://serdaroztetik.com/aiphone/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (8)
setupread-onlyReturn first-setup instructions and a clickable App Store download link when no number is available.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
calldestructiveRing the human's iPhone, 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 App Store link. 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.
Parameters:
question(required) — stringtolanguage— stringkeep_openfrom_label— stringsession_token
Hints: read-only no · destructive yes · idempotent not declared · open-world yes
poll_resultread-onlyCheck 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").
Parameters:
call_id(required) — integersession_token(required) — string
Hints: read-only yes · destructive no · idempotent not declared · open-world no
saydestructiveIn 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".
Parameters:
call_id(required) — integersession_token(required) — stringtext(required) — stringlanguage— string
Hints: read-only no · destructive yes · idempotent not declared · open-world yes
hang_updestructiveEnd 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.
Parameters:
call_id(required) — integersession_token(required) — stringgoodbye— string
Hints: read-only no · destructive yes · idempotent not declared · open-world yes
textdestructiveSend 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 App Store link. Pass a previous session_token to stay in the same thread.
Parameters:
body(required) — stringtofrom_label— stringsession_token
Hints: read-only no · destructive yes · idempotent not declared · open-world yes
wait_for_replyread-onlyWait 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.
Parameters:
session_token(required) — stringcursor— integerwait_s— integer
Hints: read-only yes · destructive no · idempotent not declared · open-world no
set_thread_titledestructiveName 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.
Parameters:
session_token(required) — stringtitle(required) — string
Hints: read-only no · destructive yes · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.