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.
Quickstart
Add this server URL to your MCP client:
https://api.vexoai.com/mcp
- Your client calls the server without a token and receives
401with aWWW-Authenticateheader pointing to the OAuth metadata. - The client registers itself (dynamic client registration) and starts the authorization code flow with PKCE.
- The person signs in with their Vexo account and approves the connection on the consent screen.
- 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.
| Item | Value |
|---|---|
| Protected resource metadata | https://api.vexoai.com/.well-known/oauth-protected-resource |
| Authorization server metadata | https://api.vexoai.com/.well-known/oauth-authorization-server |
| Authorization endpoint | https://api.vexoai.com/oauth/authorize |
| Token endpoint | https://api.vexoai.com/oauth/token |
| Client registration | https://api.vexoai.com/oauth/register (RFC 7591) |
| Token revocation | https://api.vexoai.com/oauth/revoke (RFC 7009) |
| Grant types | authorization_code, refresh_token |
| PKCE | Required, S256 |
| Client authentication | Public clients (none) |
| Access token lifetime | 1 hour |
| Refresh token lifetime | 90 days |
The authorization response includes the iss parameter (RFC 9207). Clients should verify it matches https://api.vexoai.com.
Scopes
| Scope | Grants |
|---|---|
vexo:read | Read 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.
| Input | Type | Notes |
|---|---|---|
query | string, 2 to 1000 | Required. The question or task, with relevant names. |
timezone | string | IANA time zone. Defaults to the person's last phone offset. |
fromDay, toDay | date | Optional 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.
| Input | Type | Notes |
|---|---|---|
query | string, 2 to 1000 | Required. 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.
| Input | Type | Notes |
|---|---|---|
id | string | Required. A source ID or metadata.nextId returned by Vexo. |
get_transcript
The person's speech transcript for one calendar day, paginated with nextCursor.
| Input | Type | Notes |
|---|---|---|
day | date | Required. YYYY-MM-DD. |
cursor | string | Optional. From the previous page. |
list_transcript_days
Days that have a transcript, newest first, with each day's last update time.
| Input | Type | Notes |
|---|---|---|
fromDay, toDay | date | Optional range. |
limit | integer | 1 to 366, default 30. |
search_transcripts
Transcript lines containing a phrase (case-insensitive), newest day first, each with its day and timestamp.
| Input | Type | Notes |
|---|---|---|
query | string, min 2 | Required. The phrase to find. |
fromDay, toDay | date | Optional range. |
limit | integer | 1 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
| Response | Meaning | What to do |
|---|---|---|
401 | Missing, expired or revoked token | Refresh the token, or start sign-in again. The WWW-Authenticate header points to the metadata. |
403 | Token lacks the required scope | Request vexo:read. |
429 | Rate limit reached | Back off and retry after the RateLimit header's reset time. |
Tool result with partial: true | Some sources were unavailable | Use 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
nextCursorormetadata.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
Authorizationheader, 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.