Dashboard
MCP Server

Connect AI assistants to your users' data

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.

Setup

Choose your AI client to get started. Hosted MCP is the default path and uses OAuth automatically inside the client.

Hosted MCP — Claude Desktop installs the remote MCP server and completes auth with OAuth on first use. No API key needs to be embedded into config.
Terminal
npx @attrove/cli install claude-desktop

The CLI writes the streamable-http config for you. Manual JSON is still supported if you need it.

Hosted MCP — ChatGPT connects to the hosted MCP endpoint. Authentication is handled automatically via OAuth 2.1 when the client follows MCP discovery.
MCP URL
https://api.attrove.com/mcp

If ChatGPT asks for a manual connector URL, use the endpoint above.

Hosted MCP — Cursor installs the hosted MCP server and completes auth with OAuth on first use. No local env vars are required for the default path.
Terminal
npx @attrove/cli install cursor
Hosted MCP — Claude Code installs the hosted MCP server into project scope by default and completes auth with OAuth on first use.
Terminal
npx @attrove/cli install claude-code

This defaults to project scope and writes .mcp.json.

Hosted MCP — Codex installs the hosted MCP server into user scope and completes auth with the Codex MCP login command.
Terminal
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.

Verify the first useful answer

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.

Ask your AI client
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.

Advanced Local Fallback

Use the local stdio server only if you explicitly need local credential-backed MCP.

Terminal
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

Tool Reference

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.

attrove_query
Ask Attrove

Ask a question and get an AI-generated answer from the user's connected accounts (Gmail, Slack, Calendar). Returns answers with optional source citations.

ParameterTypeDescription
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)
"What did Sarah say about the Q4 budget?" "Summarize my meeting with the engineering team" "What context do I need for my 3pm meeting?"
attrove_search
Search Messages

Semantic search across the user's connected services. Returns matching messages grouped by conversation without AI summarization.

ParameterTypeDescription
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)
"Find all emails about the product launch" "Show me conversations with the marketing team" "Search for messages mentioning the deadline"
attrove_events
Calendar Events

List calendar events from connected calendar accounts (e.g., Google Calendar). Returns event details including attendees, location, and meeting links.

ParameterTypeDescription
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)
"What's on my calendar today?" "Do I have any meetings tomorrow?" "What's my schedule for Friday?"
attrove_meetings
Meeting Summaries

List meetings with AI-generated summaries and action items from connected meeting platforms (Google Meet, Zoom, Teams).

ParameterTypeDescription
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)
"What happened in my last meeting?" "Summarize yesterday's standup" "What are the action items from the product review?"
attrove_integrations
List Integrations

List the user's connected integrations and their current status. Useful for checking what data sources are available before running queries.

ParameterTypeDescription
No parameters required

Returns integration ID, provider name (gmail, slack, google_calendar, etc.), and connection status (connected, disconnected, expired, error, pending).

attrove_notes
List Notes

List notes, decisions, and observations already attached to the authenticated user context.

ParameterTypeDescription
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
"Show the notes linked to this meeting" "List the last five saved decisions"
attrove_push_note
Save Note

Write a note into the authenticated user context so future agents can reuse decisions, observations, or session state.

ParameterTypeDescription
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 note that Marcus owns the pricing follow-up" "Store the decision from today's product review"
attrove_push_meeting
Save Meeting

Save a meeting transcript or summary into the authenticated user context from another meeting MCP, a transcript export, or manual notes.

ParameterTypeDescription
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
"Save this Granola transcript to Attrove" "Add the Fireflies meeting summary to my communication context"
attrove_create_goal
Create Goal

Create a user-scoped outcome goal with a watch scope anchored by entities, a seed query, or keywords.

ParameterTypeDescription
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
"Create a goal to watch the ACME renewal"
attrove_list_goals
List Goals

List outcome goals with optional lifecycle and health filters.

ParameterTypeDescription
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
"List my at-risk goals"
attrove_get_goal_status
Get Goal Status

Get a goal with its latest status snapshot, evaluator run, risk signals, next actions, and cited evidence.

ParameterTypeDescription
goal_id Required string Goal ID (gol_xxx)
"What is the current status of this goal?"
attrove_goal_events
Goal Events

Tail goal lifecycle transitions as an append-only feed with cursor pagination and a composite scan watermark.

ParameterTypeDescription
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
"Show goal transitions since the last watcher run"
attrove_evaluate_goal
Evaluate Goal

Queue a fresh asynchronous evaluator run for an active goal.

ParameterTypeDescription
goal_id Required string Goal ID (gol_xxx)
"Evaluate this goal now"
attrove_add_goal_note
Add Goal Note

Attach a manual note to a goal so future evaluations can cite it.

ParameterTypeDescription
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
"Add a note that the buyer requested ROI math"
attrove_confirm_goal_status
Confirm Goal Status

Manually confirm or override a goal lifecycle and/or health with a reason.

ParameterTypeDescription
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
"Mark this goal completed because the pilot was signed"

Resources