Remindavo places real phone-call reminders. The Remindavo connector lets an AI assistant, such as Meta Muse, create, list, change, skip and cancel reminder calls for a signed-in Remindavo user, using the Model Context Protocol (MCP). The user just asks: "Call me tomorrow at 7am to take my medication."
Connecting takes a few clicks and the user never handles API keys or tokens:
Users can disconnect at any time in Settings → Connected apps at web.remindavo.com, which revokes every token at once.
| Purpose | URL |
|---|---|
MCP server (Streamable HTTP, POST, stateless, JSON responses) | https://web.remindavo.com/mcp |
| Authorization server metadata (RFC 8414) | https://web.remindavo.com/.well-known/oauth-authorization-server |
| Protected resource metadata (RFC 9728) | https://web.remindavo.com/.well-known/oauth-protected-resource/mcp |
| Dynamic client registration (RFC 7591) | https://web.remindavo.com/oauth/register |
| Authorization | https://web.remindavo.com/oauth/authorize |
| Token | https://web.remindavo.com/oauth/token |
| Revocation (RFC 7009) | https://web.remindavo.com/oauth/revoke |
S256 only). Public clients (token_endpoint_auth_method: none) are the norm; client_secret_basic and client_secret_post are also supported.https://agent.meta.ai/api/hatch/oauth/callback). To add an assistant, contact [email protected].2026-07-28 (with server/discover and the MCP-Protocol-Version / Mcp-Method / Mcp-Name headers) and 2025-03-26 through 2025-11-25 (initialize handshake). No sessions; batches aren't supported.401 with a WWW-Authenticate header pointing at the protected resource metadata.| Scope | Allows |
|---|---|
reminders:read | See reminder calls and basic account details (time zone, plan, masked phone number). Always granted. |
reminders:write | Create, change and cancel reminder calls. Optional on the consent screen. |
contacts:read | See the names of verified contacts (numbers stay masked). Optional on the consent screen. |
tools/list only returns the tools the token's scopes allow.
Every tool returns a short text summary in content and machine-readable data in structuredContent. Errors come back as tool results with isError: true and structuredContent.error.code (see Errors). Reminder ids look like rem_123; contact ids look like con_45, and con_self is the user.
get_accountread-onlyGet Remindavo account. Returns the user's time zone, masked phone number, plan, how reminders reach them (app or phone), and on the free plan how many free phone calls remain. Call this before creating a reminder so you can resolve times like "tomorrow at 9" in the right time zone.
Scope: reminders:read
No arguments.
Example arguments:
{}
Example structuredContent:
{
"name": "Pat",
"timezone": "America/New_York",
"phone": "•••• 0123",
"phone_verified": true,
"plan": "premium",
"delivery": "Remindavo app call first, phone call if it isn't answered",
"manage_url": "https://web.remindavo.com/dashboard"
}create_reminderwritesCreate a reminder call. Schedule a reminder call. Remindavo rings the user (in the Remindavo app if installed, otherwise by phone) or calls a verified contact by phone at the given time and reads the title aloud. If the time or date is unclear, ask the user first. Always tell the user the exact time returned in next_call_at_local and who will be called. Use contact_id from list_contacts to call someone else; omit it to call the user. New contacts can only be added by the user at web.remindavo.com.
Scope: reminders:write
| Argument | Type | Description |
|---|---|---|
title required | string | Short text spoken on the call, e.g. "Take your medication". (max 120 chars) |
when required | string | Local date-time of the (first) call, ISO 8601 without offset, e.g. 2026-10-08T09:00:00. An explicit offset or Z is also accepted. |
timezone | string | IANA time zone for "when", e.g. America/New_York. Defaults to the account time zone. |
recurrence | object | null | Repeat pattern (see Recurrence). Omit (or null) for a one-off call. |
contact_id | string | From list_contacts. Omit or "con_self" to call the user. |
message | string | Optional extra sentence spoken after the title. (max 500 chars) |
idempotency_key | string | Optional. Retrying with the same key returns the original reminder instead of creating a duplicate. (max 80 chars) |
Example arguments:
{
"title": "Take medication",
"when": "2026-10-09T09:00:00",
"recurrence": { "freq": "WEEKLY", "by_day": ["MO", "WE", "FR"] },
"idempotency_key": "muse-5f2c"
}
Example structuredContent:
{
"id": "rem_812",
"title": "Take medication",
"status": "scheduled",
"recurrence_summary": "Every week on Mon, Wed, Fri at 9:00 AM",
"recipient": { "contact_id": "con_self", "name": "You", "phone": "•••• 0123" },
"next_call_at_local": "Fri, Oct 9 2026, 9:00 AM EDT",
"next_call_at_utc": "2026-10-09T13:00:00Z",
"source": "mcp"
}list_remindersread-onlyList reminder calls. Lists the user's custom reminder calls (created here, in Remindavo or by an assistant). Default: upcoming ones, soonest first. Calls before calendar events are set up in the Remindavo dashboard and are not listed here.
Scope: reminders:read
| Argument | Type | Description |
|---|---|---|
status | string: upcoming, completed, cancelled, all | Default "upcoming". |
from | string | Optional ISO date/time: only calls at or after this (account time zone if no offset). |
to | string | Optional ISO date/time: only calls before this. |
limit | integer | Default 20. (1–50) |
cursor | string | next_cursor from a previous page. |
Example arguments:
{ "status": "upcoming", "limit": 10 }
Example structuredContent:
{
"reminders": [ { "id": "rem_812", "title": "Take medication", "next_call_at_local": "Fri, Oct 9 2026, 9:00 AM EDT", "…": "…" } ],
"calendar_calls_note": "Calls before calendar events are managed at https://web.remindavo.com/dashboard."
}get_reminderread-onlyGet a reminder call. Details of one reminder by id (from list_reminders or create_reminder).
Scope: reminders:read
| Argument | Type | Description |
|---|---|---|
id required | string | e.g. rem_123 |
Example arguments:
{ "id": "rem_812" }update_reminderwritesChange a reminder call. Change the title, time, repeat pattern, recipient or message of an upcoming reminder. For a repeating reminder this changes the whole series. Pass only the fields to change; recurrence null makes it one-off. Confirm the change with the user using the returned next_call_at_local.
Scope: reminders:write
| Argument | Type | Description |
|---|---|---|
id required | string | |
title | string | (max 120 chars) |
when | string | New local date-time of the next call (ISO 8601). |
timezone | string | |
recurrence | object | null | Repeat pattern (see Recurrence). Omit (or null) for a one-off call. |
contact_id | string | |
message | string | null | (max 500 chars) |
Example arguments:
{ "id": "rem_812", "when": "2026-10-09T10:00:00" }cancel_reminderdestructiveCancel a reminder call. Cancel one reminder. For a repeating reminder, scope "next_occurrence" skips only the next call and keeps the rest; "series" (default) cancels it entirely. Make sure you have the right reminder (check the title and time with the user) before cancelling.
Scope: reminders:write
| Argument | Type | Description |
|---|---|---|
id required | string | |
scope | string: series, next_occurrence |
Example arguments:
{ "id": "rem_812", "scope": "next_occurrence" }
Example structuredContent:
{
"id": "rem_812",
"status": "scheduled",
"skipped": true,
"next_call_at_local": "Mon, Oct 12 2026, 9:00 AM EDT"
}list_contactsread-onlyList who can receive calls. The people Remindavo can call for this user: the user ("con_self") and friends & family who verified their number. Numbers are masked. Calling contacts needs a Premium plan. To add someone new, send the user to add_contact_url; the new contact must confirm a code sent to their phone.
Scope: contacts:read
No arguments.
Example arguments:
{}
Example structuredContent:
{
"contacts": [
{ "contact_id": "con_self", "name": "You", "phone": "•••• 0123", "status": "verified" },
{ "contact_id": "con_44", "name": "Mom", "phone": "•••• 0111", "status": "verified" }
],
"contact_calls": "available",
"add_contact_url": "https://web.remindavo.com/custom-reminders"
}
when is ISO 8601. Without an offset it's local time in timezone, or the account's time zone if timezone is omitted. Z or an offset is also accepted.ambiguous_time: true.recurrence: {"freq": "DAILY" | "WEEKLY" | "MONTHLY" | "YEARLY", "interval": 1–30, "by_day": ["MO",…] (WEEKLY only), "until": "YYYY-MM-DD"}. Omit it or pass null for a one-off call.by_day start on the first matching day at or after when. Monthly and yearly reminders need a day from the 1st to the 28th. Repeats are calculated in the account's time zone, so "9 AM" stays 9 AM across DST changes.idempotency_key when creating, so a retry returns the original reminder instead of a duplicate.get_account reports free_phone_calls_remaining, and create_reminder flags reminders that will outrun it (exceeds_free_allowance).https://web.remindavo.com/subscription.| Limit | Free plan | Premium |
|---|---|---|
| MCP requests | 120 per minute per user | |
| Reminders created | 10 per hour, 20 per day | 60 per hour, 300 per day |
| Upcoming custom reminders | 5 | 500 |
| Title / message length | 120 / 500 characters (read aloud on the call) | |
| Request body | 64 KB | |
Rate-limited requests get HTTP 429 (or a quota_exceeded tool error) with a Retry-After header where applicable.
Tool errors return isError: true and structuredContent.error = {"code", "message", "action_url"?}. Show the message to the user; when there's an action_url, it's where the user can fix the problem.
| Code | Meaning |
|---|---|
insufficient_scope | The user connected without this permission; they can reconnect and allow it. |
not_found | Unknown reminder or contact id for this user. |
invalid_request | A missing or malformed argument. |
invalid_time | Not a valid ISO 8601 time, in the past (needs at least 2 minutes ahead), more than 2 years ahead, or a skipped DST hour. |
timezone_required | The account has no time zone; ask the user and pass timezone. |
invalid_recurrence | Bad repeat pattern (e.g. monthly on the 29th–31st, by_day on a non-weekly repeat). |
quota_exceeded | Too many reminders created recently, or too many upcoming reminders. |
phone_not_verified | Remindavo can't reach the user yet (no verified phone and no app); action_url points to the fix. |
subscription_required | Free phone calls are used up and there is no app; action_url points to upgrading. |
premium_required | Calling contacts needs Premium. |
contact_not_verified | The contact hasn't confirmed their number yet. |
contact_unavailable | The contact opted out of calls from this account. |
phone_calls_disabled | Phone calls are switched off for this account. |
server_error | Something failed on Remindavo's side; retry. |
Protocol problems use JSON-RPC errors: -32601 unknown method, -32602 invalid params or unknown tool, -32020 header mismatch (2026-07-28), -32022 unsupported protocol version, -32001 authentication required.
Privacy policy: remindavo.com/privacy-policy (section 4 covers AI assistants) · Terms: remindavo.com/terms-of-service · Support: [email protected]
Ask your AI assistant to connect Remindavo, or start on the web. Remindavo calls your phone before every meeting and reminder.
Start freeFree plan available · Works with Google Calendar & Outlook · Cancel anytime