Give Codex, Claude, Cursor, ChatGPT, and other AI tools direct access to your users' Gmail, Slack, and Calendar through the Model Context Protocol. Zero custom code required.
Choose your AI client to get started. Hosted MCP is the default path and uses OAuth automatically inside the client.
npx @attrove/cli install claude-desktop
The CLI writes the streamable-http config for you. Manual JSON is still supported if you need it.
https://api.attrove.com/mcp
If ChatGPT asks for a manual connector URL, use the endpoint above.
npx @attrove/cli install cursor
npx @attrove/cli install claude-code
This defaults to project scope and writes .mcp.json.
npx @attrove/cli install codex
codex mcp login attrove
Reload Codex tool discovery if needed. Raw hosted tools include attrove_notes, attrove_create_goal, and attrove_list_goals.
If you only see mcp__codex_apps__attrove tools, you are looking at the OpenAI Apps connector, not the raw hosted MCP server.
A successful install only proves the MCP server is reachable. First confirm at least one connected source, then ask for a grounded answer with source references.
Use Attrove to list my connected integrations.
What needs my attention this week? Include the source messages or meetings you used.
If the integrations prompt returns no connected providers, finish OAuth in the client or use a partner-issued connect session command before evaluating answer quality.
Use the local stdio server only if you explicitly need local credential-backed MCP.
npx @attrove/cli login
npx @attrove/cli local install claude-code
npx @attrove/cli connect gmail
Manual environment variables are only required if you bypass the CLI fallback and run @attrove/mcp directly.
| Variable | Description | Notes |
|---|---|---|
ATTROVE_SECRET_KEY |
Your per-user sk_ API key |
Required
Secret
Starts with sk_
|
ATTROVE_USER_ID |
User ID to scope API calls |
Required
UUID from user provisioning |
Seventeen tools are available to AI assistants. Read tools retrieve context; mutating tools write notes, save meetings, or manage outcome goals in that same user context.
Ask a question and get an AI-generated answer from the user's connected accounts (Gmail, Slack, Calendar). Returns answers with optional source citations.
| Parameter | Type | Description |
|---|---|---|
query Required |
string | The question to ask about the user's context |
integration_ids Optional |
string[] | Filter to specific integration IDs (int_xxx) |
include_sources Optional |
boolean | Include source snippets in the response (default: false) |
instructions Optional |
string | Per-call guidance that shapes how the model answers (overrides default grounding) |
context Optional |
string | Extra context appended to the prompt (e.g. caller-supplied facts) |
include_bot_messages Optional |
boolean | Include messages authored by bots in the retrieval set (default: false) |
Semantic search across the user's connected services. Returns matching messages grouped by conversation without AI summarization.
| Parameter | Type | Description |
|---|---|---|
query Required |
string | The search query (semantic, not keyword-based) |
after_date Optional |
string | Only include messages after this date (YYYY-MM-DD) |
before_date Optional |
string | Only include messages before this date (YYYY-MM-DD) |
sender_domains Optional |
string[] | Filter by sender email domains (e.g., ["acme.com"]) |
include_body_text Optional |
boolean | Include message body text preview, truncated to 1000 chars (default: true) |
List calendar events from connected calendar accounts (e.g., Google Calendar). Returns event details including attendees, location, and meeting links.
| Parameter | Type | Description |
|---|---|---|
start_date Optional |
string | Start of date range (YYYY-MM-DD) |
end_date Optional |
string | End of date range (YYYY-MM-DD) |
limit Optional |
number | Max events to return (default: 25, max: 100) |
List meetings with AI-generated summaries and action items from connected meeting platforms (Google Meet, Zoom, Teams).
| Parameter | Type | Description |
|---|---|---|
start_date Optional |
string | Start of date range (YYYY-MM-DD) |
end_date Optional |
string | End of date range (YYYY-MM-DD) |
provider Optional |
string | Filter by provider: google_meet, zoom, teams, or manual_meetings |
limit Optional |
number | Max meetings to return (default: 10, max: 50) |
List the user's connected integrations and their current status. Useful for checking what data sources are available before running queries.
| Parameter | Type | Description |
|---|---|---|
| No parameters required | ||
Returns integration ID, provider name (gmail, slack, google_calendar, etc.), and connection status (connected, disconnected, expired, error, pending).
List notes, decisions, and observations already attached to the authenticated user context.
| Parameter | Type | Description |
|---|---|---|
limit Optional |
number | Max notes to return |
ref_type Optional |
string | Filter by related object type: message, meeting, event, or entity |
ref_id Optional |
string | Filter by related object ID |
Write a note into the authenticated user context so future agents can reuse decisions, observations, or session state.
| Parameter | Type | Description |
|---|---|---|
body Required |
string | Note body to save |
title Optional |
string | Optional short title |
ref_type Optional |
string | Attach the note to a message, meeting, event, or entity |
ref_id Optional |
string | Related object ID |
external_id Optional |
string | Caller-supplied idempotency key; repeated calls with the same value return the existing note |
Save a meeting transcript or summary into the authenticated user context from another meeting MCP, a transcript export, or manual notes.
| Parameter | Type | Description |
|---|---|---|
title Required |
string | Meeting title |
start_time Required |
string | ISO 8601 datetime with UTC "Z" or numeric offset |
end_time Required |
string | ISO 8601 datetime with UTC "Z" or numeric offset |
transcript Optional |
string | Full meeting transcript for content-level queryability |
summary Optional |
string | Detailed summary |
short_summary Optional |
string | 1-3 sentence summary |
attendees Optional |
array | Attendee objects with name and optional email |
action_items Optional |
array | Action items with text and optional assignee |
external_id Optional |
string | Caller-supplied idempotency key for re-pushes |
Create a user-scoped outcome goal with a watch scope anchored by entities, a seed query, or keywords.
| Parameter | Type | Description |
|---|---|---|
title Required |
string | Goal title |
watch_scope Required |
object | At least one of entity_ids, seed_query, or keywords |
success_criteria Optional |
string | Optional criteria for completion |
deadline Optional |
string | Optional ISO 8601 deadline |
List outcome goals with optional lifecycle and health filters.
| Parameter | Type | Description |
|---|---|---|
lifecycle Optional |
string | Filter by active, completed, archived, or cancelled |
health Optional |
string | Filter by on_track, at_risk, blocked, waiting_on_human, or insufficient_evidence |
limit Optional |
number | Max goals to return |
cursor Optional |
string | Pagination cursor |
Get a goal with its latest status snapshot, evaluator run, risk signals, next actions, and cited evidence.
| Parameter | Type | Description |
|---|---|---|
goal_id Required |
string | Goal ID (gol_xxx) |
Tail goal lifecycle transitions as an append-only feed with cursor pagination and a composite scan watermark.
| Parameter | Type | Description |
|---|---|---|
since Optional |
string | ISO 8601 lower-bound timestamp |
since_event_id Optional |
number | Event id tie-breaker paired with since |
types Optional |
string[] | Goal event types to include |
limit Optional |
number | Max events to return |
cursor Optional |
string | Pagination cursor from pagination.next_cursor |
Queue a fresh asynchronous evaluator run for an active goal.
| Parameter | Type | Description |
|---|---|---|
goal_id Required |
string | Goal ID (gol_xxx) |
Attach a manual note to a goal so future evaluations can cite it.
| Parameter | Type | Description |
|---|---|---|
goal_id Required |
string | Goal ID (gol_xxx) |
body Required |
string | Note body |
title Optional |
string | Optional note title |
metadata Optional |
object | Optional structured metadata |
Manually confirm or override a goal lifecycle and/or health with a reason.
| Parameter | Type | Description |
|---|---|---|
goal_id Required |
string | Goal ID (gol_xxx) |
lifecycle Optional |
string | completed, archived, or cancelled |
health Optional |
string | on_track, at_risk, blocked, waiting_on_human, or insufficient_evidence |
reason Required |
string | Human-readable reason for the confirmation |