Developer docs

Vexo MCP server

Give an AI agent secure, permissioned access to a person's Vexo memory: what they talked about, who with, what they committed to, and the notes and reminders that came out of it.

Overview

Vexo is an always-listening AI bracelet. Throughout the day it captures the conversations around the wearer and turns them into a private, searchable memory: transcripts, people, preferences, projects, commitments, saved notes and reminders.

The Vexo MCP server exposes that memory to AI agents through the Model Context Protocol. An agent connects once, the person signs in and approves access, and the agent can then answer questions grounded in what the person actually said, with citations back to the source.

Standard MCPStreamable HTTP. Works with any MCP client that supports OAuth.
Person-approvedOAuth 2.1 with PKCE and a consent screen. Revocable any time.
Read-onlyEvery tool reads. No tool can change, send or delete anything.
Cited answersResults carry source IDs, timestamps and links for attribution.

Quickstart

Add this server URL to your MCP client:

https://api.vexoai.com/mcp
  1. Your client calls the server without a token and receives 401 with a WWW-Authenticate header pointing to the OAuth metadata.
  2. The client registers itself (dynamic client registration) and starts the authorization code flow with PKCE.
  3. The person signs in with their Vexo account and approves the connection on the consent screen.
  4. The client exchanges the code for tokens and calls tools with Authorization: Bearer <access_token>.

In Muse, Claude or ChatGPT

Add Vexo as a connector, sign in with Vexo when prompted, and approve. Then ask things like:

  • “What did I promise people today, and which of those can you handle for me?”
  • “Summarize my conversation with Vikram this afternoon and draft the follow-up.”
  • “What's on my plate from today's meetings?”

Authentication

The server is an OAuth 2.1 protected resource. Clients discover everything from standard metadata, so no manual configuration is needed.

ItemValue
Protected resource metadatahttps://api.vexoai.com/.well-known/oauth-protected-resource
Authorization server metadatahttps://api.vexoai.com/.well-known/oauth-authorization-server
Authorization endpointhttps://api.vexoai.com/oauth/authorize
Token endpointhttps://api.vexoai.com/oauth/token
Client registrationhttps://api.vexoai.com/oauth/register (RFC 7591)
Token revocationhttps://api.vexoai.com/oauth/revoke (RFC 7009)
Grant typesauthorization_code, refresh_token
PKCERequired, S256
Client authenticationPublic clients (none)
Access token lifetime1 hour
Refresh token lifetime90 days

The authorization response includes the iss parameter (RFC 9207). Clients should verify it matches https://api.vexoai.com.

Scopes

ScopeGrants
vexo:readRead the signed-in person's Vexo memory through the tools below. Nothing else.

Tokens are bound to one Vexo account. A token can never read another person's data.

Tools

All tools are annotated read-only. Results include only the signed-in person's data. Content the person deleted or asked Vexo to forget is never returned, and stale source IDs stop resolving.

get_contextrecommended

Relevant evidence for a question or task, drawn from the person's conversations, people, preferences, projects and commitments, with related notes, reminders and recent speech. Returns sources with IDs, citation URLs, timestamps, freshness and retrieval coverage. Start here for most questions.

InputTypeNotes
querystring, 2 to 1000Required. The question or task, with relevant names.
timezonestringIANA time zone. Defaults to the person's last phone offset.
fromDay, toDaydateOptional range, YYYY-MM-DD.

search

Search conversations, memories, people, preferences, notes and reminders by keywords and meaning. Returns previews, source IDs and coverage, with hasMore for further results.

InputTypeNotes
querystring, 2 to 1000Required. Natural language, names or concepts.

fetch

Read one source by its exact Vexo source ID, with timestamps and provenance. Long sources are paginated through metadata.nextId.

InputTypeNotes
idstringRequired. A source ID or metadata.nextId returned by Vexo.

get_transcript

The person's speech transcript for one calendar day, paginated with nextCursor.

InputTypeNotes
daydateRequired. YYYY-MM-DD.
cursorstringOptional. From the previous page.

list_transcript_days

Days that have a transcript, newest first, with each day's last update time.

InputTypeNotes
fromDay, toDaydateOptional range.
limitinteger1 to 366, default 30.

search_transcripts

Transcript lines containing a phrase (case-insensitive), newest day first, each with its day and timestamp.

InputTypeNotes
querystring, min 2Required. The phrase to find.
fromDay, toDaydateOptional range.
limitinteger1 to 50, default 20.

Examples

Call a tool

POST https://api.vexoai.com/mcp
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json, text/event-stream

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_context",
    "arguments": { "query": "What did I promise Vikram today?" }
  }
}

Result shape (abridged)

{
  "asOf": "2026-10-25T21:04:00Z",
  "today": "2026-10-25",
  "timezone": "America/Los_Angeles",
  "sources": [
    {
      "id": "<source id>",
      "title": "Call with Vikram",
      "text": "I'll send you the deck follow-up tonight.",
      "url": "<citation url>",
      "metadata": { "at": "2026-10-25T16:10:00Z" }
    }
  ],
  "partial": false,
  "unavailable": [],
  "bounded": true,
  "guidance": "Cite sources by id when answering."
}

Values are illustrative. Use tools/list for the live input and output schemas.

Errors and limits

ResponseMeaningWhat to do
401Missing, expired or revoked tokenRefresh the token, or start sign-in again. The WWW-Authenticate header points to the metadata.
403Token lacks the required scopeRequest vexo:read.
429Rate limit reachedBack off and retry after the RateLimit header's reset time.
Tool result with partial: trueSome sources were unavailableUse what was returned; check unavailable.
  • Rate limit: 120 requests per minute per Vexo account.
  • Transport: stateless Streamable HTTP. Each request is independent; no session to keep alive.
  • Pagination: follow nextCursor or metadata.nextId.

Privacy and data

Access happens only when the person turns it on. It is off by default, scoped to their own account, and they can disconnect at any time.

  • Consent first. No data is shared until the person signs in and approves the specific connection.
  • Own account only. An agent sees only the account that approved it, within the approved scope.
  • Read-only. The server offers no tool that writes, sends or deletes.
  • Deletion respected. Content the person deletes or asks Vexo to forget stops being returned immediately.
  • Revocable. Disconnecting in Vexo settings, or revoking the token, stops all future access.
  • No selling. Vexo does not sell personal information or use it for advertising.

Once data reaches a connected agent, that provider's own privacy policy applies. Full details are in the Vexo Privacy Policy and Terms of Service.

Security

  • HTTPS only. Tokens are sent in the Authorization header, never in URLs.
  • PKCE (S256) on every authorization, issuer verification (RFC 9207), and short-lived access tokens.
  • The server URL is not a credential. Agents never receive the person's Vexo sign-in code or any password.
  • Per-account isolation is enforced on every query, and requests are rate limited per account.

To report a security issue, email info@vexoai.com.

Support

Questions, integration help or partnership requests: info@vexoai.com.

We aim to keep the server backward compatible. Breaking changes are announced in advance on this page.

Last updated October 25, 2026.