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 — plus watched outcomes (Goals) that catch the conversations going quiet — 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

Twenty-three tools are available to AI assistants. Read tools retrieve context; mutating tools write notes, save meetings, manage outcome goals, or watch commitments 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, entity, or goal
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, max 500 Unicode code points after trimming
ref_type Optional string Attach the note to a message, meeting, event, entity, or goal
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, max 500 Unicode code points after trimming
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_delete_meeting
Archive Meeting

Reversibly archive a pushed meeting by opaque id or external_id. Archived meetings are hidden from meeting/search/query results and can be restored by re-pushing the same external_id.

ParameterTypeDescription
id Optional string Opaque meeting ID (mtg_xxx)
external_id Optional string External ID used when the meeting was pushed
"Archive the duplicate meeting I pushed earlier"
attrove_delete_note
Archive Note

Reversibly archive a note by opaque id or external_id. Archived notes are hidden from notes/search/query results and can be restored by re-pushing the same external_id.

ParameterTypeDescription
id Optional string Opaque note ID (note_xxx)
external_id Optional string External ID used when the note was pushed
"Archive the test note with external_id crm-note-123"
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"
attrove_acknowledge_goal
Acknowledge Goal

Acknowledge that a goal's silence is expected and suppress the silence-driven health escalation until a horizon (or until real activity arrives). Does not change lifecycle or suppress non-silence risks.

ParameterTypeDescription
goal_id Required string Goal ID (gol_xxx)
until Required string ISO 8601 horizon after which silence re-raises (future, within 90 days)
reason Optional string Optional human-provided reason
channel Optional string Optional provenance, e.g. mcp or slack
"Acknowledge this goal until Monday — the prospect is on vacation"
attrove_clear_goal_acknowledgment
Clear Goal Acknowledgment

Clear the active acknowledgment on a goal and resume normal silence monitoring immediately. Idempotent: succeeds even if there is no active acknowledgment.

ParameterTypeDescription
goal_id Required string Goal ID (gol_xxx)
reason Optional string Optional reason for clearing
"Resume silence alerts on this goal — they replied early"
attrove_draft_goal_follow_up
Draft Goal Follow-Up

Draft the next move on a quiet goal as a ready-to-copy follow-up email, grounded in the goal's real thread evidence. Read-only: nothing is sent, drafted with a provider, or persisted.

ParameterTypeDescription
goal_id Required string Goal ID (gol_xxx)
directive Optional string Optional freeform steer for the draft
"Draft a follow-up nudging this deal along"
attrove_watch_commitment
Watch Commitment

Register a promise, delegation, or handoff that will remain unresolved after this session, so Attrove watches it until the expected signal arrives and escalates to a human if it silently never does. Underspecified registrations are kept as low-confidence suggestions that never escalate.

ParameterTypeDescription
commitment_text Required string What was promised or delegated, as one self-contained sentence
commitment_kind Required string promised_action, accepted_delegation, handoff, waiting_on, check_back, or escalation_condition
expected_signal_type Optional string reply, ack, update_message, completion_message, registered_event, or manual_confirmation — required for an active watch
check_after Optional string ISO 8601 datetime after which to check; check_after and/or due_at required for an active watch
due_at Optional string ISO 8601 due datetime; past-horizon watches are flagged at_risk
counterparty Optional string Who the obligation is owed to or waited on
client_dedup_key Optional string Optional idempotency key for retry-safe registration
"Watch this: I owe Dana the revised proposal by Friday — escalate if her reply never comes"
attrove_check_my_outcomes
Check My Outcomes

Read back open commitments (watching/at_risk, optionally suggested) at the start of a session, soonest-due first with cursor pagination. A to-do ledger, not memory: resolved history is never returned.

ParameterTypeDescription
status_filter Optional array Statuses to include; defaults to watching + at_risk
due_within_days Optional number Only commitments due within this many days (1-365)
limit Optional number Max commitments to return (default 50, max 100)
cursor Optional string Opaque cursor from a previous response
"Check my open commitments — what is due this week?"
attrove_resolve_commitment
Resolve Commitment

Record what actually happened to a watched commitment: satisfied (the signal arrived), silent_drop (it never came), dismissed (not a real commitment), or at_risk (flag without closing). Terminal states are immutable.

ParameterTypeDescription
commitment_id Required string Commitment id (UUID)
resolution Required string satisfied, silent_drop, dismissed, or at_risk
signal_ref Optional string Pointer to the satisfying signal (message id, PR URL, ticket id)
note Optional string Why — recorded in the observation log
"The sign-off email arrived — resolve the proposal commitment as satisfied"

Resources