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
- Endpoint
https://api.actioner.com/mcp- 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
- In Claude, open Settings → Connectors and add Actioner (or, before directory listing, Add custom connector with the URL
https://api.actioner.com/mcp). - Claude registers itself with Actioner’s authorization server automatically and opens the Actioner sign-in page.
- Sign in and pick the workspace to connect. Actioner shows a consent screen listing what Claude will be able to reach.
- 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:
| Ask | Tools 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.
| Endpoint | Purpose |
|---|---|
/.well-known/oauth-protected-resource/mcp | Protected-resource metadata (RFC 9728) for the /mcp resource. |
/.well-known/oauth-authorization-server | Authorization server metadata (RFC 8414). |
/.well-known/openid-configuration | OpenID 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:
| Class | Annotations | Meaning |
|---|---|---|
| Read-only | readOnlyHint: true | Returns or renders data. Changes nothing in the workspace and nothing outside it. Safe to run without per-call confirmation. |
| Write | readOnlyHint: false | Creates or updates workspace records. Additive or in-place; nothing is removed and nothing leaves the workspace. |
| Destructive | destructiveHint: true | Removes 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
| Tool | Title | Access | What it does |
|---|---|---|---|
get_schema | Get data model schema | Read-only | Directory of views, or full columns when tables is set. Required before writing SQL. |
query_data | Query data | Read-only | Read-only SQL SELECT against workspace views for aggregates. Capped at 100 rows. |
list | List | Read-only | Renders a SELECT as an interactive, sortable, paginated table. |
_list_page | Paginate search results | Read-only | UI-invoked. Fetches one page of an existing table with optional sorting. |
get | Get | Read-only | Fetches one entity by type and id for Claude’s reasoning. Not rendered. |
show | Show | Read-only | Renders full details of one entity as a view for the user. |
companies | Companies | Read-only | Searchable account list; expanding a row opens that account’s action items. |
show_actionbox | Show Actionbox | Read-only | Renders pending action items. Refreshes nothing, mutates nothing. |
_actioner_state | Actioner state | Read-only | UI-invoked. Re-reads action-item state when the view polls or the user clicks refresh. |
markdone_action_item | Mark action item done | Write | Sets one action item assigned to the current user to DONE. |
snooze_action_item | Snooze action item | Write | Sets one action item to SNOOZED until a future timestamp. |
dismiss_action_item | Dismiss action item | Destructive | Dismisses one action item, with an optional reason. |
apply_action_item_changes | Apply action item changes | Write | Applies an ordered batch of create and update operations. |
apply_action_item_refresh | Apply action item refresh | Write | Applies a whole account’s action-item refresh as one ordered batch. |
Records, email, calendar, artifacts, and preferences
| Tool | Title | Access | What it does |
|---|---|---|---|
create | Create | Write | Creates one company, deal, person, entitlement, note or health record. Opens a form if required fields are missing. |
update | Update | Write | Updates the supplied fields of one existing entity of the same types. |
_submit_create | Submit entity create | Write | UI-invoked. Persists the create form. |
_submit_update | Submit entity update | Write | UI-invoked. Persists the update form. |
set_company_fields | Set fields on companies | Write | Batch-sets customer type and/or tracking status on selected accounts. |
set_tracking_status | Set company tracking status | Write | Marks accounts TRACKED or NOT_TRACKED. Memory and action items are built only for tracked accounts. |
resolve_company_mention | Resolve company mention | Write | Confirms or rejects deferred company mentions detected in internal email. |
compose_email | Compose email | Read-only | Opens a prefilled email composer with Claude’s draft. Sends nothing. |
_submit_email | Submit email | Destructive | UI-invoked. Sends the composed message after the user clicks send. |
send_notification | Send notification | Write | Emails the current user from their own account to themselves. Not interactive. |
create_meeting | Create meeting | Read-only | Opens a prefilled calendar-event form. Creates nothing. |
update_meeting | Update meeting | Read-only | Opens an event form prefilled with the current event, for rescheduling or editing. |
_submit_meeting_create | Submit meeting creation | Destructive | UI-invoked. Creates the event and sends invitations. |
_submit_meeting_update | Submit meeting update | Destructive | UI-invoked. Applies changes to an existing event and notifies attendees. |
_cancel_meeting | Cancel meeting | Destructive | UI-invoked. Cancels the event and notifies attendees. |
save_artifact | Save an artifact | Write | Stores a new document (Markdown, HTML, plain text, PDF, image or other) with title, summary, tags and references. |
update_artifact | Update an artifact | Write | Updates an existing document’s metadata, body or references. |
delete_artifact | Delete an artifact | Destructive | Soft-deletes the record and removes the stored body. |
set_connectors | Set user connectors | Write | Replaces the current user’s stored connector list — used during guided setup. |
set_onboarding | Set user onboarding status | Write | 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.
| Tool | Title | Access | What it does |
|---|---|---|---|
_search_companies | Search companies | Read-only | Keyword search over accounts. |
_search_contacts | Search contacts | Read-only | Keyword search over contacts, optionally filtered by type or requiring an email address. |
_search_deals | Search deals | Read-only | Keyword search over deals. |
_search_health_frameworks | Search health frameworks | Read-only | Keyword search over health frameworks. |
_search_deal_frameworks | Search deal frameworks | Read-only | Keyword search over deal frameworks. |
_list_products | List product names | Read-only | Returns the workspace’s distinct product names. |
_get_deal_framework_stages | Get deal framework stages | Read-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.
| Tool | Title | Access | What it does |
|---|---|---|---|
new_play | Start authoring a new play | Write | Seeds a play-authoring conversation, optionally from an archetype template. Persists nothing. |
edit_play | Load a play for editing | Write | Loads an existing play’s full bundle for revision. Persists nothing. |
test_query | Test play queries | Read-only | Validates and runs candidate play queries against sample parameters while drafting. |
save_play | Save a play | Write | Opens the review UI showing the drafted play’s structure. The user reviews before saving. |
_submit_save_play | Submit save play | Write | UI-invoked. Persists the reviewed play. |
set_play_status | Enable or disable a saved play | Write | Enables a play (registering it as a tool) or disables it while keeping it editable. |
save_play_memory | Save working notes for a play run | Write | Stores notes and structured data from a play run so the next run starts where the last one ended. |
list_templates | List play templates | Read-only | Lists every template available to the workspace. |
get_template | Get a play template by name | Read-only | Returns one template’s label, description and directive body. |
create_template | Start authoring a new play template | Read-only | Admin. Seeds a template-authoring conversation. Persists nothing. |
edit_template | Load a play template for editing | Read-only | Admin. Loads a template for revision. Persists nothing. |
save_template | Save a play template | Write | Admin. Persists a template after the user confirms the draft. |
delete_template | Delete a play template | Destructive | Admin. Permanently deletes a template; requires explicit in-chat confirmation. |
_acquire_company_refresh_lock | Acquire company refresh lock | Write | 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_lock | Release company refresh lock | Write | 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.
| Resource | Rendered by | What the user does in it |
|---|---|---|
ui://actioner/data-table.html | list | Sort, paginate and open records. |
ui://actioner/show-entity.html | show, show_actionbox | Read an entity or work the action box — mark done, snooze, dismiss. |
ui://actioner/create-entity.html | create | Fill remaining fields and confirm creation. |
ui://actioner/update-entity.html | update | Review and confirm field changes. |
ui://actioner/send-email.html | compose_email | Edit recipients, subject and body, then send. |
ui://actioner/manage-meeting.html | create_meeting, update_meeting | Adjust time, attendees and details, then create, update or cancel. |
ui://actioner/companies.html | companies | Search accounts, expand to see their action items, bulk-set tracking. |
ui://actioner/save-play.html | save_play | Review 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:
| URI | Contents |
|---|---|
actioner://resources/view-schemas | The queryable views, their columns and how they join. |
actioner://resources/entity-schemas | Entity types and their fields as used by get, show, create and update. |
actioner://resources/query-examples | Worked 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
| Control | Implementation |
|---|---|
| Transport | HTTPS 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. |
| Identity | Every request is authenticated by bearer token; user and workspace are resolved from validated token claims. Audience and issuer are both checked. |
| SQL execution | The 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 workspace | Action-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. |
| Deletion | Deletes are soft where the record has downstream references, with stored bodies removed; deleted records are excluded from every lookup path. |
| Rate limiting | 120 requests per 60 seconds per user, enforced server-side with a shared counter across instances. |
| Tool descriptions | Descriptions 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
| Condition | Response |
|---|---|
| Missing or expired token | 401 with WWW-Authenticate pointing at the protected-resource metadata, prompting rediscovery and reauthorization. |
| Rate limit exceeded | HTTP 429 with a JSON-RPC error asking the client to retry later. |
| Invalid SQL | The database error is returned enriched with the offending identifier and a pointer to get_schema for the correct view and column names. |
| Missing prerequisite | Explicit and actionable, e.g. a workspace with no connected data source is told so by name rather than returning an empty result. |
| Invalid arguments | Schema validation rejects the call and names the failing field. |
| Not found / not permitted | Distinguished from each other, and phrased so Claude can correct the call rather than retry it unchanged. |
| Oversized results | Truncated 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
- 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. - Discovery. Ask “what data can you see about my accounts?” — exercises
get_schemaand the reference resources. - Aggregate read. “How many open deals do we have by stage?” — exercises
query_data. - Browsable read. “List the deals closing this quarter.” — exercises
listand its interactive table. - Entity view. Open any account by name — exercises
showandcompanies. - Action items. “Show my action box”, then mark one done and snooze another — exercises
show_actionbox,markdone_action_item,snooze_action_item. - 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.
- Calendar. “Set up a 30-minute check-in next Tuesday” — confirm the event form opens prefilled and creates only on submit.
- Write. “Add a note to that account” — exercises
create. - 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:
| Requirement | How it is met |
|---|---|
| Tool annotations — title plus applicable hint | All 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 tools | No tool takes a method or operation-mode argument. Reads, creates, updates and deletes are distinct tools; see Permission model. |
| Custom query tools reference their target | query_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 fewer | Longest static name is 29 characters. Generated play tools are bounded by the play-name limit enforced at authoring time. |
| Narrow, accurate descriptions | Each description states what the tool does and when to call it, and matches its behavior. |
| No prompt-injection patterns | Descriptions describe behavior only — no instructions to call other software, to fetch behavior from external sources, no hidden or encoded content, no promotion. |
| Functional quality | Every 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 collection | Only tool arguments and operational telemetry are recorded. No tool reads Claude memory, chat history, summaries or user files. |
| First-party API ownership | The 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 authentication | OAuth 2.1 with dynamic client registration and PKCE; see Authentication. |
| Privacy policy | Published at https://actioner.com/privacy-policy, covering collection, use and storage, third-party sharing, retention and contact. |
| Public documentation | This document. |
| Test credentials | Supplied with the submission for a fully populated workspace; see Reviewer test guide. |
| Unsupported categories | The connector transfers no money or financial assets and generates no AI image, video or audio. |
| MCP App screenshots | Three 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
| Item | Value |
|---|---|
| Company | Nova Era Labs, Inc. |
| Website | https://actioner.com |
| Support | support@actioner.com |
| Privacy policy | https://actioner.com/privacy-policy |
| Server version | 1.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.