protogrid

Search / com.serdaroztetik/call-me

Call Me

R0· no sign-in

Your AI rings your iPhone, speaks its question, and gets your spoken answer back as text.

v1.0.0 · active · website · descriptor JSON · versions

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

Connect

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

Quality 84 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
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 hygiene86 · 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.annotations8 of 8 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: text (idempotentHint); call (idempotentHint); setup (idempotentHint); …
  • pass
    tools.token_costabout 1,404 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes11 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

8 tools, about 1,404 tokens to load them all · tool set cccb5eee5844 · tools last changed 2026-10-17 · checked 2026-10-20 18:38 UTC

Tool changes

  • hang_upadded

    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.

  • sayadded

    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".

  • callchangeddescription, input schema
    before

    Ring 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.

    after · 80% of words in common

    Ring 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. keep_open=true makes it a conversation: after their answer the line stays up for `say` until you `hang_up`. `language` ("tr", "de", ...) is the language you are speaking; the call's own short lines follow it. Default English.

  • set_thread_titlechangedtitle, annotations
  • wait_for_replychangedtitle, annotations
  • textchangedtitle, annotations
  • poll_resultchangedtitle, annotations
  • callchangedtitle, annotations
  • setupchangedtitle, annotations
  • poll_resultchangeddescription
    before

    Check on a call that was still ringing. Waits up to ~25s for it to settle; returns the final status and transcript once the human answers, declines, or the ring times out ("missed").

    after · 88% of words in common

    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").

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 80 / 100

no-repository
provenance55
liveness100
freshness85
hygiene80

+dns-namespace +website +reachable +uptime-100% ~updated-74d-ago -no-repository

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://serdaroztetik.com/aiphone/mcp streamable-httpnoneyes100%332 ms2026-07-282026-10-20

Tools (8)

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. keep_open=true makes it a conversation: after their answer the line stays up for `say` until you `hang_up`. `language` ("tr", "de", ...) is the language you are speaking; the call's own short lines follow it. Default English.
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.
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").
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".
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.
setupread-onlyReturn first-setup instructions and a clickable App Store download link when no number is available.
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.
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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.serdaroztetik/call-me",
  "title": "Call Me",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://serdaroztetik.com/aiphone/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://serdaroztetik.com/aiphone/",
  "description": "Your AI rings your iPhone, speaks its question, and gets your spoken answer back as text."
}