Get started

Connector documentation · Model Context Protocol

Actioner MCP Server

Actioner is a customer-intelligence workspace for B2B SaaS revenue teams. This MCP server gives Claude access to a user's accounts, deals, contacts, meetings, email and action items, and lets Claude run the user's own saved processes — reading, drafting, and (with the user's confirmation) writing back.

Contents
  1. Overview
  2. Setup
  3. Using the connector
  4. Authentication
  5. Permission model
  6. Tool reference
  7. Play tools
  8. Interactive UI
  9. Resources
  10. Data handling
  11. Security
  12. Errors and limits
  13. Reviewer test guide
  14. Review criteria
  15. Support

Overview

Actioner watches a customer-facing team’s email, calendar and CRM, builds an account memory from them, and turns what it finds into action items. The MCP server exposes that workspace to Claude: schema discovery and SQL-backed reads over the user’s own data, interactive forms for anything that leaves the workspace (email, calendar invites), immediate writes for record edits, and one generated tool per saved process (“play”) the organization has authored.

Server name
actioner-mcp-server
Display title
Actioner
Version
1.0.0
Transport
Streamable HTTP
Session model
Stateless (no Mcp-Session-Id)
Authentication
OAuth 2.1 + DCR
Tools
58 static + 1 per saved play
Resources
3 reference + 8 UI
Rate limit
120 req / 60 s / user

Primary use cases

  • Account review. “What changed on Aurora Freight since our last call?” — Claude reads the account’s interactions, deals, health and open action items.
  • Working the action box. Claude surfaces the user’s pending action items in an interactive view, then marks them done, snoozes, or dismisses them on the user’s instruction.
  • Meeting prep and follow-up. Claude drafts an agenda from the account’s recent history, and drafts the follow-up email for the user to review and send.
  • Pipeline and portfolio questions. Aggregate SQL over the user’s own workspace — renewal exposure by segment, deals with no activity in 30 days, health-score distribution.
  • Running saved processes. Each play the organization has authored appears as its own tool, so Claude can execute the team’s documented methodology instead of improvising one.

The connector both reads and writes. Every write is either explicitly requested by the user in chat or confirmed by the user in an interactive form before it is applied.

Setup

Prerequisites

  • An Actioner account. Sign-up is self-serve; a workspace is created on first sign-in.
  • At least one connected source of customer data. Actioner connects to Gmail or Outlook, Google or Microsoft calendars, and CRM sources such as HubSpot. A workspace with no connected source will answer schema questions but return empty result sets.
  • No plan upgrade or admin approval is required to connect the MCP server; any signed-in member can connect it to their own Claude account.

Connecting from Claude

  1. In Claude, open Settings → Connectors and add Actioner (or, before directory listing, Add custom connector with the URL https://api.actioner.com/mcp).
  2. Claude registers itself with Actioner’s authorization server automatically and opens the Actioner sign-in page.
  3. Sign in and pick the workspace to connect. Actioner shows a consent screen listing what Claude will be able to reach.
  4. Claude returns to the connector list showing the Actioner tools. The connection is bound to that one user in that one workspace.

What the user sees on first use

Nothing needs configuring after connecting. Tool discovery is read-through per request: the tools a user sees include one play_<name> tool for every enabled play in their workspace at that moment, so a play saved during a conversation becomes callable in the next one.

Disconnecting

Removing the connector in Claude revokes the tokens client-side. Actioner also accepts POST /mcp/logout, which clears the server-side connection state for the authenticated user. Workspace owners can review and revoke connected clients in Actioner’s workspace settings.

Using the connector

Representative prompts, and what Claude does with them:

AskTools involved
”Show me my action box.”show_actionbox renders the user’s pending items as an interactive view.
”Which accounts have renewals in the next 60 days and no meeting since June?”get_schema, then query_data for the aggregate, or list when the answer is a browsable table of records.
”Open Aurora Freight.”show renders the account record; get is used instead when Claude needs the data for its own reasoning rather than for display.
”Draft the follow-up to yesterday’s QBR.”compose_email opens a prefilled composer; nothing is sent until the user clicks send, which calls _submit_email.
”Set up the renewal call with Mateo for Thursday.”create_meeting opens a prefilled event form; _submit_meeting_create creates it on confirmation.
”Mark the first three items done.”markdone_action_item per item, or apply_action_item_changes for a batch.
”Run our at-risk review on Aurora Freight.”play_at_risk_review — the workspace’s own saved process.

Discovery order for data questions

The server instructs Claude to call get_schema() before writing SQL, then get_schema({ tables: [...] }) for the specific views a query touches. Column names are never guessed. query_data is for aggregates; list is for rows a user would browse and click into.

Authentication

Actioner is an OAuth 2.1 authorization server and protected resource. Claude connects with the standard remote-MCP flow: metadata discovery, dynamic client registration, authorization code with PKCE. No API keys, no shared credentials, no user-supplied URL.

EndpointPurpose
/.well-known/oauth-protected-resource/mcpProtected-resource metadata (RFC 9728) for the /mcp resource.
/.well-known/oauth-authorization-serverAuthorization server metadata (RFC 8414).
/.well-known/openid-configurationOpenID configuration, for clients that look for it.

Unauthenticated requests to /mcp return 401 with a WWW-Authenticate header pointing at the protected-resource metadata.

Permission model

Every tool carries annotations — a human-readable title plus the applicable readOnlyHint / destructiveHint / openWorldHint — so Claude can apply auto-permissions correctly. The three access classes used throughout this document map directly to those annotations:

ClassAnnotationsMeaning
Read-only readOnlyHint: trueReturns or renders data. Changes nothing in the workspace and nothing outside it. Safe to run without per-call confirmation.
Write readOnlyHint: falseCreates or updates workspace records. Additive or in-place; nothing is removed and nothing leaves the workspace.
Destructive destructiveHint: trueRemoves data, or acts outside the workspace on the user’s behalf — sending mail, creating or cancelling calendar invites. Always prompts.

Reads and writes are separate tools

There is no catch-all request tool and no tool that takes a method or an operation-type argument to decide whether it reads or writes. Writes are split by action: create and update are distinct tools; deletion is its own tool per entity family (delete_artifact, delete_template). The freeform-SQL tools (query_data, list, test_query) run through a physically read-only execution path — see Security.

Draft-then-confirm for anything that leaves the workspace

Email and calendar actions are two-step by design. Claude calls the read-only draft tool (compose_email, create_meeting, update_meeting), which opens a prefilled form in the conversation. Nothing is sent or scheduled until the user submits that form, which invokes the corresponding _submit_* tool. The draft tools are annotated read-only because they genuinely are: they render a form and mutate nothing.

The single exception is send_notification, which sends the user an email from their own account to themselves — used for “email me this summary”. It sends immediately and is annotated as a write reaching an outside system.

Tool reference

58 tools are registered on every connection, plus one generated tool per enabled play (see Play tools). Tools whose names begin with an underscore are invoked by Actioner’s own interactive views, not chosen by Claude from the tool list; they are documented here for completeness and are marked UI-invoked.

Schema, data access, and action items

ToolTitleAccessWhat it does
get_schemaGet data model schemaRead-only Directory of views, or full columns when tables is set. Required before writing SQL.
query_dataQuery dataRead-only Read-only SQL SELECT against workspace views for aggregates. Capped at 100 rows.
listListRead-only Renders a SELECT as an interactive, sortable, paginated table.
_list_pagePaginate search resultsRead-only UI-invoked. Fetches one page of an existing table with optional sorting.
getGetRead-only Fetches one entity by type and id for Claude’s reasoning. Not rendered.
showShowRead-only Renders full details of one entity as a view for the user.
companiesCompaniesRead-only Searchable account list; expanding a row opens that account’s action items.
show_actionboxShow ActionboxRead-only Renders pending action items. Refreshes nothing, mutates nothing.
_actioner_stateActioner stateRead-only UI-invoked. Re-reads action-item state when the view polls or the user clicks refresh.
markdone_action_itemMark action item doneWrite Sets one action item assigned to the current user to DONE.
snooze_action_itemSnooze action itemWrite Sets one action item to SNOOZED until a future timestamp.
dismiss_action_itemDismiss action itemDestructive Dismisses one action item, with an optional reason.
apply_action_item_changesApply action item changesWrite Applies an ordered batch of create and update operations.
apply_action_item_refreshApply action item refreshWrite Applies a whole account’s action-item refresh as one ordered batch.

Records, email, calendar, artifacts, and preferences

ToolTitleAccessWhat it does
createCreateWrite Creates one company, deal, person, entitlement, note or health record. Opens a form if required fields are missing.
updateUpdateWrite Updates the supplied fields of one existing entity of the same types.
_submit_createSubmit entity createWrite UI-invoked. Persists the create form.
_submit_updateSubmit entity updateWrite UI-invoked. Persists the update form.
set_company_fieldsSet fields on companiesWrite Batch-sets customer type and/or tracking status on selected accounts.
set_tracking_statusSet company tracking statusWrite Marks accounts TRACKED or NOT_TRACKED. Memory and action items are built only for tracked accounts.
resolve_company_mentionResolve company mentionWrite Confirms or rejects deferred company mentions detected in internal email.
compose_emailCompose emailRead-only Opens a prefilled email composer with Claude’s draft. Sends nothing.
_submit_emailSubmit emailDestructive UI-invoked. Sends the composed message after the user clicks send.
send_notificationSend notificationWrite Emails the current user from their own account to themselves. Not interactive.
create_meetingCreate meetingRead-only Opens a prefilled calendar-event form. Creates nothing.
update_meetingUpdate meetingRead-only Opens an event form prefilled with the current event, for rescheduling or editing.
_submit_meeting_createSubmit meeting creationDestructive UI-invoked. Creates the event and sends invitations.
_submit_meeting_updateSubmit meeting updateDestructive UI-invoked. Applies changes to an existing event and notifies attendees.
_cancel_meetingCancel meetingDestructive UI-invoked. Cancels the event and notifies attendees.
save_artifactSave an artifactWrite Stores a new document (Markdown, HTML, plain text, PDF, image or other) with title, summary, tags and references.
update_artifactUpdate an artifactWrite Updates an existing document’s metadata, body or references.
delete_artifactDelete an artifactDestructive Soft-deletes the record and removes the stored body.
set_connectorsSet user connectorsWrite Replaces the current user’s stored connector list — used during guided setup.
set_onboardingSet user onboarding statusWrite Marks the current user’s onboarding complete or incomplete.

Form lookups

UI-invoked lookups that populate comboboxes inside Actioner’s interactive views. All read-only, all scoped to the caller’s workspace.

ToolTitleAccessWhat it does
_search_companiesSearch companiesRead-only Keyword search over accounts.
_search_contactsSearch contactsRead-only Keyword search over contacts, optionally filtered by type or requiring an email address.
_search_dealsSearch dealsRead-only Keyword search over deals.
_search_health_frameworksSearch health frameworksRead-only Keyword search over health frameworks.
_search_deal_frameworksSearch deal frameworksRead-only Keyword search over deal frameworks.
_list_productsList product namesRead-only Returns the workspace’s distinct product names.
_get_deal_framework_stagesGet deal framework stagesRead-only Returns the ordered stage names of one deal framework.

Plays, templates, and process locks

Tools for creating and maintaining the workspace’s own saved processes. Template authoring tools are restricted to workspace administrators; a non-admin call is refused with an explanatory error. See Play tools for how a saved play is then executed.

ToolTitleAccessWhat it does
new_playStart authoring a new playWrite Seeds a play-authoring conversation, optionally from an archetype template. Persists nothing.
edit_playLoad a play for editingWrite Loads an existing play’s full bundle for revision. Persists nothing.
test_queryTest play queriesRead-only Validates and runs candidate play queries against sample parameters while drafting.
save_playSave a playWrite Opens the review UI showing the drafted play’s structure. The user reviews before saving.
_submit_save_playSubmit save playWrite UI-invoked. Persists the reviewed play.
set_play_statusEnable or disable a saved playWrite Enables a play (registering it as a tool) or disables it while keeping it editable.
save_play_memorySave working notes for a play runWrite Stores notes and structured data from a play run so the next run starts where the last one ended.
list_templatesList play templatesRead-only Lists every template available to the workspace.
get_templateGet a play template by nameRead-only Returns one template’s label, description and directive body.
create_templateStart authoring a new play templateRead-only Admin. Seeds a template-authoring conversation. Persists nothing.
edit_templateLoad a play template for editingRead-only Admin. Loads a template for revision. Persists nothing.
save_templateSave a play templateWrite Admin. Persists a template after the user confirms the draft.
delete_templateDelete a play templateDestructive Admin. Permanently deletes a template; requires explicit in-chat confirmation.
_acquire_company_refresh_lockAcquire company refresh lockWrite Play-internal. Takes the per-account refresh lock so two runs cannot rebuild the same account at once. Locks expire after 10 minutes.
_release_company_refresh_lockRelease company refresh lockWrite Play-internal. Releases the lock. Only the lock owner can release it.

Play tools

A play is a process the customer’s own team has written down — how they run an at-risk review, prepare a QBR, or work a renewal. Each enabled play is registered as its own MCP tool named play_<name>, with the play’s parameters as its input schema, its own description, and annotations titled Run play: <name>.

Because plays are authored by users, the tool list is generated per request from the workspace’s enabled plays. That has three consequences a reviewer should expect:

  • Two different accounts will show different play_* tools. A brand-new account may show none.
  • The total tool count varies. The 58 static tools are always present.
  • Annotations are generated with the tool, so every play tool always carries a title and hints — a newly saved play needs no separate registration step.

Executing a play is read-mostly: it runs the play’s compiled read-only queries and returns the methodology plus the account context the methodology needs. Any change to the workspace happens through the ordinary write tools above, each with its own annotation and confirmation behavior. Play tools are annotated as writes rather than read-only for that reason.

find_or_run_play_fallback Write is the catch-all entry point for the same saved processes, used when a play was saved after the client last listed tools. It resolves the process by name and runs it, or lists the processes missing from the caller’s tool list.

Interactive UI

Actioner is an MCP App: several tools return an interactive view rather than plain text, declared through _meta.ui.resourceUri and served as ui:// resources. The views are how the connector keeps confirmation in the user’s hands — a draft email is shown as an editable composer, not described in prose and sent.

ResourceRendered byWhat the user does in it
ui://actioner/data-table.htmllistSort, paginate and open records.
ui://actioner/show-entity.htmlshow, show_actionboxRead an entity or work the action box — mark done, snooze, dismiss.
ui://actioner/create-entity.htmlcreateFill remaining fields and confirm creation.
ui://actioner/update-entity.htmlupdateReview and confirm field changes.
ui://actioner/send-email.htmlcompose_emailEdit recipients, subject and body, then send.
ui://actioner/manage-meeting.htmlcreate_meeting, update_meetingAdjust time, attendees and details, then create, update or cancel.
ui://actioner/companies.htmlcompaniesSearch accounts, expand to see their action items, bulk-set tracking.
ui://actioner/save-play.htmlsave_playReview a drafted process before saving it.

The views call back only into the underscore-prefixed tools listed in the reference above, each of which is annotated and permission-checked exactly like any other tool.

Resources

Three reference resources let Claude learn the data model without spending tool calls on it:

URIContents
actioner://resources/view-schemasThe queryable views, their columns and how they join.
actioner://resources/entity-schemasEntity types and their fields as used by get, show, create and update.
actioner://resources/query-examplesWorked SQL examples and the workspace’s SQL conventions.

Data handling

What the connector reaches

Only the authenticated user’s own Actioner workspace: accounts, contacts, deals, entitlements, health records, notes, meetings and conversations, action items, saved artifacts, and the plays and templates the workspace has authored. Actioner’s own APIs are first-party; the connector calls no third-party API on the user’s behalf beyond the mailbox and calendar the user has themselves connected to Actioner.

What it does not reach

  • Claude’s memory, chat history, conversation summaries or user files. No tool reads any of them.
  • Other users’ or other workspaces’ data. Workspace scoping is derived from the access token, not from tool arguments, so a caller cannot widen their own scope by passing a different id.
  • Conversation content beyond the arguments a tool needs to do its job. Tool-call telemetry (tool name, outcome, duration) is recorded for reliability monitoring.

Where the data lives

Depending on the workspace’s deployment, a tool call is served either from Actioner’s cloud or forwarded over the user’s authenticated device connection to Actioner’s local companion app, where that user’s workspace data is stored on their own machine. The tool surface, annotations and permission behavior are identical either way; in the local case the customer’s underlying records never leave their device to answer the call.

Retention and deletion

Records created through the connector follow the workspace’s ordinary retention: they live until deleted by a user or until the workspace is deleted. Deleting the workspace deletes its data. Disconnecting the connector stops all access immediately and leaves previously created records in place.

Full detail — collection, use, storage, sub-processors, sharing, retention and contact — is in the privacy policy at https://actioner.com/privacy-policy.

Security

ControlImplementation
TransportHTTPS only. The MCP endpoint is stateless: a fresh server and transport are built per request and torn down after it, so no cross-request state can leak between users.
IdentityEvery request is authenticated by bearer token; user and workspace are resolved from validated token claims. Audience and issuer are both checked.
SQL executionThe freeform-SQL tools run against a handle opened read-only, with the engine’s query-only pragma set and single-statement compilation enforced. Writes fail at the storage layer, not at a string filter; multi-statement input is rejected outright. Results are bounded by row count, byte size and a statement timeout.
Authorization inside the workspaceAction-item tools operate only on items assigned to the calling user’s contact. Template authoring is admin-only. Concurrency-sensitive account refreshes are guarded by an owner-checked, expiring lock.
DeletionDeletes are soft where the record has downstream references, with stored bodies removed; deleted records are excluded from every lookup path.
Rate limiting120 requests per 60 seconds per user, enforced server-side with a shared counter across instances.
Tool descriptionsDescriptions state what the tool does and when to use it. None instructs Claude to call outside software, to fetch behavioral instructions from elsewhere, or to override system behavior, and none contains hidden or encoded content.

Errors and limits

ConditionResponse
Missing or expired token401 with WWW-Authenticate pointing at the protected-resource metadata, prompting rediscovery and reauthorization.
Rate limit exceededHTTP 429 with a JSON-RPC error asking the client to retry later.
Invalid SQLThe database error is returned enriched with the offending identifier and a pointer to get_schema for the correct view and column names.
Missing prerequisiteExplicit and actionable, e.g. a workspace with no connected data source is told so by name rather than returning an empty result.
Invalid argumentsSchema validation rejects the call and names the failing field.
Not found / not permittedDistinguished from each other, and phrased so Claude can correct the call rather than retry it unchanged.
Oversized resultsTruncated with an explicit note of the total row count and the number shown.

The endpoint accepts POST /mcp only. GET /mcp is refused — the server does not offer an SSE stream — and DELETE /mcp is accepted as a no-op, since there is no session to terminate.

Reviewer test guide

Test credentials for a fully populated workspace — accounts, deals, meetings, email history, action items and several saved plays — are supplied with the submission. Sign in to the Actioner app with those credentials once before connecting, so the workspace is selected.

Suggested pass

  1. Connect. Add the server as a custom connector at https://api.actioner.com/mcp. Confirm the sign-in and consent screens appear and the tool list loads.
  2. Discovery. Ask “what data can you see about my accounts?” — exercises get_schema and the reference resources.
  3. Aggregate read. “How many open deals do we have by stage?” — exercises query_data.
  4. Browsable read. “List the deals closing this quarter.” — exercises list and its interactive table.
  5. Entity view. Open any account by name — exercises show and companies.
  6. Action items. “Show my action box”, then mark one done and snooze another — exercises show_actionbox, markdone_action_item, snooze_action_item.
  7. Draft-then-confirm. “Draft a follow-up email to the contact on that account” — confirm the composer opens and that nothing is sent until you submit it.
  8. Calendar. “Set up a 30-minute check-in next Tuesday” — confirm the event form opens prefilled and creates only on submit.
  9. Write. “Add a note to that account” — exercises create.
  10. Play. Call one of the workspace’s play_* tools — exercises the generated-tool path end to end.

Every tool in this document has been exercised by the Actioner team through the MCP Inspector and as a custom connector in Claude. An automated end-to-end suite drives the full tool surface against a seeded workspace on every release.

Review criteria

How this connector meets each published requirement:

RequirementHow it is met
Tool annotations — title plus applicable hintAll 58 static tools and every generated play tool carry annotations.title and the applicable readOnlyHint / destructiveHint, with openWorldHint set where the tool reaches an outside system.
Separate read and write toolsNo tool takes a method or operation-mode argument. Reads, creates, updates and deletes are distinct tools; see Permission model.
Custom query tools reference their targetquery_data, list and test_query accept caller-constructed SQL, and each description names the target — the Actioner workspace schema — and directs the caller to get_schema to discover views and columns before writing SQL.
Tool names 64 characters or fewerLongest static name is 29 characters. Generated play tools are bounded by the play-name limit enforced at authoring time.
Narrow, accurate descriptionsEach description states what the tool does and when to call it, and matches its behavior.
No prompt-injection patternsDescriptions describe behavior only — no instructions to call other software, to fetch behavior from external sources, no hidden or encoded content, no promotion.
Functional qualityEvery tool returns a successful, sized-to-task response for valid input, and an actionable message for invalid input; see Errors and limits.
No conversation-data collectionOnly tool arguments and operational telemetry are recorded. No tool reads Claude memory, chat history, summaries or user files.
First-party API ownershipThe server calls Actioner’s own APIs and the user’s own connected mailbox and calendar. The MCP domain is Actioner’s own.
OAuth 2.0 authenticationOAuth 2.1 with dynamic client registration and PKCE; see Authentication.
Privacy policyPublished at https://actioner.com/privacy-policy, covering collection, use and storage, third-party sharing, retention and contact.
Public documentationThis document.
Test credentialsSupplied with the submission for a fully populated workspace; see Reviewer test guide.
Unsupported categoriesThe connector transfers no money or financial assets and generates no AI image, video or audio.
MCP App screenshotsThree to five PNG carousel screenshots of the interactive views, at least 1000px wide and cropped to the app response, are supplied with the submission along with their paired prompts.

Support

ItemValue
CompanyNova Era Labs, Inc.
Websitehttps://actioner.com
Supportsupport@actioner.com
Privacy policyhttps://actioner.com/privacy-policy
Server version1.0.0

Breaking changes to a tool’s name or input schema are released as a new server version, announced in the product changelog before the change ships. Security reports are triaged on receipt at the support address above.