ActionBridge gives AI assistants 55 MCP tools (Model Context Protocol — the open standard assistants use to connect to apps): 22 ab_* tools for AB Projects, 25 ab_crm_* tools for AB Sales, and 8 ab_support_* tools for AB Support. Read tools return data and change nothing. Write tools change data as you, recorded under your name — and the six task and document tools your team watches most also post a card to the linked Microsoft Teams channel.
ab_crm_* tools are gated differently: your membership of an AB Sales workspace is the key. If you can open the workspace in AB Sales, its CRM tools work for you, read and write alike — the Projects seat rule does not apply to them. The ab_support_* tools work the same way: membership of the support desk is the key. See Managing Subscriptions, Billing & Licenses.How to read the tables
| Badge | Meaning |
|---|---|
| read | Returns data only. Nothing changes. |
| write | Changes data, saved under your name. |
| Teams card | Also posts or updates a card in the linked Microsoft Teams channel, disclosed as AI activity. |
To set up a connection in the first place, see Connecting AI Assistants via MCP.
AB Projects MCP tools
These work with projects, tasks, the schedule, and the project Documents (wiki). Most take a project_id — get it from ab_get_my_projects.
Projects & identity
A project's statuses, types and environments are the labels its board sorts tasks by — for example In Progress, Bug, or Production. Together they are called the project's options.
| Tool | What it does | Key inputs |
|---|---|---|
ab_get_my_projectsread | Lists every project you're a member of, with its member count, overall progress, your roles in it, and when it was created. | None |
ab_get_project_membersread | Lists a project's members with their roles and membership IDs — the ID needed to assign a task. | project_id |
ab_get_project_optionsread | Returns the valid status, type, and environment IDs for a project, plus the fixed priority numbers. Assistants should call it before setting any of those on a task. | project_id |
ab_create_task_optionwrite | Adds a status, type, or environment to a project — the same lists the project’s Status, Types, and Environments settings pages edit. The list is shared by the whole team’s board, so a name already in use is refused; the new option goes to the end of the list. A status can also be set to mark tasks complete, or to set their progress, when they move into it. A note is required and is recorded in the project’s change log. No Teams card. | project_id, kind (status/type/environment), name, note; optional description, colors, locale |
ab_update_task_optionwrite | Renames, recolors, describes, or reorders an existing status, type, or environment, or changes whether a status completes tasks and what progress it sets. Every task using the option shows the change at once. Options cannot be deleted here — tasks would be left pointing at nothing. A note is required. No Teams card. | project_id, kind, option_id, note; optional name, description, colors, position |
ab_whoamiread | Identity check: the email the server resolved for this session, your AB user ID, display name, tenant, how you're authenticated, and the server version. Useful when auth or membership looks wrong. | None |
Tasks & schedule
| Tool | What it does | Key inputs |
|---|---|---|
ab_get_my_tasksread | Your active tasks — overdue, due today, and in progress — with ID, title, priority, status, due date, and progress. | project_id (optional filter); optional limit |
ab_search_tasksread | Searches tasks by keyword across all your projects. | query; optional project_id, limit |
ab_get_taskread | Full details of one task, including its comments, its predecessors and successors, and any linked documents. | project_id, task_id |
ab_get_scheduleread | Your tasks for today and this week, by due date. | Optional project_id, limit |
ab_create_taskwrite Teams card | Creates a task. Supports description (Markdown), priority (1=High, 2=Medium, 3=Low), assignee, due date, status/type/environment IDs, parent_task_id (makes it a subtask), and depends_on_task_ids (finish-before-start dependencies; cycles are rejected). The note explains why — it appears in the change log and Teams card. | project_id, title |
ab_update_taskwrite Teams card | Updates a task's title, description, status, progress (0–100), priority, assignee, type, environment, parent, start/due dates, estimate hours, or dependencies (add_predecessors / remove_predecessors). Each change is recorded with the provided note. | project_id, task_id |
ab_complete_taskwrite Teams card | Marks a task complete with a completion note. | project_id, task_id |
ab_add_commentwrite Teams card | Adds a comment to a task's thread; it is also posted to the task's Teams conversation. | project_id, task_id, content |
Documents (wiki)
| Tool | What it does | Key inputs |
|---|---|---|
ab_get_wiki_treeread | The Documents navigation tree (folders and pages) for a project. | project_id |
ab_get_wiki_articleread | Reads one document's full content, metadata, and version info. | project_id, article_id |
ab_search_wikiread | Lists the documents under a folder path (despite the name, it browses a folder rather than searching by keyword). | project_id; parent_path (default /) |
ab_create_wiki_articlewrite Teams card | Creates a document in Markdown, optionally in a folder and with tags. | project_id, title, content |
ab_update_wiki_articlewrite Teams card | Updates a document, creating a new version. The required edit_note shows in version history. | project_id, article_id, content, edit_note |
ab_add_wiki_commentwrite | Adds a comment to a document. Saved on the document; no Teams card. | project_id, article_id, content |
ab_link_task_wikiwrite | Links a task to a document. The link is bidirectional — it appears on both — and calling it twice is harmless. No Teams card. | project_id, task_id, wiki_article_id |
ab_unlink_task_wikiwrite | Removes a task–document link; does nothing if they weren't linked. No Teams card. | project_id, task_id, wiki_article_id |
AB Sales (CRM) MCP tools
These work with your sales pipeline — the Lead → Contact → Opportunity → Customer funnel. Almost every one takes a workspace_id — call ab_crm_workspaces first to get it. All CRM writes are stamped with your name and time and are visible in the AB Sales app, but none of them posts a Teams card.
Discover
| Tool | What it does | Key inputs |
|---|---|---|
ab_crm_workspacesread | Lists the CRM workspaces you can use, with lead/contact/opportunity/customer counts. Call this first — every other CRM tool needs its workspace IDs. | None |
ab_crm_get_sales_contextread | The workspace's sales context for drafting on-brand outreach: products with prices, sales goals, value propositions, and whether outbound email is configured. | workspace_id |
ab_crm_get_pipelineread | Pipeline summary: open opportunities by stage (count, total, weighted amount), workspace totals, and deals closing within 30 days. | workspace_id |
ab_crm_get_win_patternsread | Mines your closed deals for what the wins have in common — cycle time, deal size, activity cadence, industry, lead source, and the reasons given for losses. It needs at least 5 Closed-Won deals before it will say anything (and 5 Closed-Lost to compare the losing side); below that it tells you there isn't enough history yet rather than drawing conclusions from a handful of deals. | workspace_id |
Leads
| Tool | What it does | Key inputs |
|---|---|---|
ab_crm_list_leadsread | Lists or searches leads, newest first. Statuses: New InformationFilled Contacted Qualified Disqualified | workspace_id; optional status, label, source, query, limit |
ab_crm_get_leadread | One lead in full: profile, AI company research, recent notes, recent emails, and its opportunities. Assistants call it before updating or emailing a lead. | workspace_id, lead_id |
ab_crm_create_leadwrite | Creates a lead — only a name is required. Leads start in New and are auto-promoted to InformationFilled once name, website, and email are all present. Each new lead uses one of the workspace’s monthly new-lead allowance; when that is used up, the tool refuses and says so. | workspace_id, name; optional email, website, contact, phone, industry, source, notes |
ab_crm_update_leadwrite | Updates a lead's fields, status, and/or labels. Labels are added or removed one by one (add_labels / remove_labels); the lead's other labels are kept. Setting automation_opt_out=true excludes the lead from all automated outreach. | workspace_id, lead_id |
Labels
Labels (called tags in some places) are the colored markers a workspace puts on leads to group them. They are one shared list per workspace, so assistants reuse an existing label rather than creating a near-copy.
| Tool | What it does | Key inputs |
|---|---|---|
ab_crm_list_labelsread | Lists the workspace’s lead labels with their ID, name, and color. | workspace_id; optional include_archived |
ab_crm_create_labelwrite | Creates a label. Refused when a label with the same name already exists — the tool points to that one instead. | workspace_id, name; optional color |
ab_crm_update_labelwrite | Renames or recolors a label. The change shows on every lead that carries it. | workspace_id, label_id; name and/or color |
ab_crm_archive_labelwrite | Archives (removes) a label. It disappears from every lead and filter at once; the leads themselves are not changed. Because this changes the whole team’s view, the assistant should confirm with you first. | workspace_id, label_id |
Customers, contacts & opportunities
| Tool | What it does | Key inputs |
|---|---|---|
ab_crm_list_customersread | Lists or searches customers, newest first. | workspace_id; optional search, limit |
ab_crm_create_customerwrite | Creates a customer — typically when converting a qualified lead. | workspace_id, name |
ab_crm_list_contactsread | Lists the contacts belonging to one customer. | workspace_id, customer_id |
ab_crm_list_opportunitiesread | Lists opportunities, soonest expected close first. Statuses: Open, Closed-Won, Closed-Lost. | workspace_id; optional status, limit |
ab_crm_create_opportunitywrite | Creates an opportunity under a customer or a lead (the parent must already exist). | workspace_id, parent_type (Customer/Lead), parent_id, name; optional amount, currency, expected close |
ab_crm_update_opportunitywrite | Moves the stage, changes amount / expected close / next step, or closes the deal with close='won' or close='lost' (a loss reason is required when losing). | workspace_id, opportunity_id |
Activities, notes & email
| Tool | What it does | Key inputs |
|---|---|---|
ab_crm_list_activitiesread | Lists activities (calls, meetings, follow-up tasks) — either one record's activities, or the planned window around today. | workspace_id; optional related_type+related_id, days_back/days_ahead |
ab_crm_create_activitywrite | Schedules a follow-up (Call, Email, Meeting, Note, or Task) on a lead, customer, opportunity, or contact. Shows up in the team's action items. | workspace_id, related_type, related_id, subject |
ab_crm_complete_activitywrite | Marks an activity completed, optionally recording the outcome. | workspace_id, activity_id |
ab_crm_add_notewrite | Adds a note (Markdown supported) to a lead, customer, opportunity, or contact — the way to log calls, decisions, and AI actions for the team. | workspace_id, parent_type, parent_id, text |
ab_crm_list_notesread | Lists a record's notes, newest first. | workspace_id, parent_type, parent_id |
ab_crm_list_emailsread | The email thread on a lead, customer, or contact (inbound and outbound), newest first, with previews. | workspace_id, parent_type, parent_id |
ab_crm_send_email_to_leadwrite | Sends a plain-text email to a lead from the workspace's configured mailbox, then files it in the lead's email thread and adds a note saying it was sent via MCP. The assistant must confirm recipient, subject, and body with you first, and the send is refused when the lead has opted out of automation, workspace automation is paused, or no mailbox is configured. | workspace_id, lead_id, subject, body |
The exact parameter schema for each tool is always available from the tool itself; the inputs above are a guide, not an exhaustive contract.
AB Support MCP tools
These work with your support desks and the tickets on them. Every one takes a desk_id — call ab_support_desks first to get it. Like the CRM tools they are gated by membership of the desk rather than by an AB Projects seat, and none of them posts a Teams card.
ab_support_draft_reply can leave a draft reply on the ticket, but the customer sees nothing until a person on your desk reviews it and sends it with Use this. ab_support_add_note writes an internal note that only your desk sees.Tickets
| Tool | What it does | Key inputs |
|---|---|---|
ab_support_desksread | Lists the support desks you can use, with their open and total ticket counts. Call this first — every other Support tool needs its desk ID. | None |
ab_support_list_ticketsread | Lists or searches a desk's tickets, most recently active first, with the customer, assignee, status, priority, and whether the AI or a human is currently handling it. While the AI is answering a ticket, its assignee reads “AI”. | desk_id; optional status, search, limit |
ab_support_get_ticketread | One ticket in full: the customer-facing conversation, the desk's internal notes (kept separate so they can't be mistaken for something the customer said), the change history, and the AI's suggested reply — which is a draft that has not been sent. | desk_id, ticket_id |
Triage
| Tool | What it does | Key inputs |
|---|---|---|
ab_support_ticket_statusesread | The desk's own statuses and their IDs. Statuses belong to a desk and can be renamed and reordered, so an assistant has to read them rather than assume a status called “Open” exists. | desk_id |
ab_support_update_ticketwrite | Triages a ticket: status, assignee, and/or priority. A reason is required — it is written to the ticket's history so the desk can see why the ticket moved, not just that it did. Changes nothing the customer sees. Assigning a person to a ticket the AI holds takes it from the AI: the AI stops answering that customer, and the history shows “AI → name”. | desk_id, ticket_id, reason; optional status_id, assignee_user_id, priority |
ab_support_add_notewrite | Adds an internal note for the desk — the customer never sees it, and it does not move the ticket's status, because a note is not a reply. | desk_id, ticket_id, note |
ab_support_draft_replywrite | Leaves a draft reply to the customer as the ticket’s suggested reply — the same place the AI’s own suggestion appears, replacing any earlier one. It never sends anything: a person on the desk opens the ticket, reviews the draft, and sends it with Use this. The recipient is always the ticket’s customer, never something the assistant chooses. Refused on a closed ticket, and it warns when the desk could not send the draft yet (replies paused because the usage allowance is used up, or the customer opted out of the ticket’s channel). | desk_id, ticket_id, body |
People
| Tool | What it does | Key inputs |
|---|---|---|
ab_support_get_customerread | One customer's details and their earlier tickets — whether this person has asked before, and what about. The customer_id is on the ticket. Also shows when someone has opted out of SMS and WhatsApp. | desk_id, customer_id; optional limit |
The exact parameter schema for each tool is always available from the tool itself; the inputs above are a guide, not an exhaustive contract.
MCP prompts — ready-made slash commands
Besides tools, the server publishes MCP prompts: templates that appear as slash commands in clients that support them (Claude, ChatGPT, Cursor, …). Each one expands into instructions that drive the tools above — you get a polished result without writing the request yourself.
| Prompt | What it produces | Arguments |
|---|---|---|
ab-standup | A daily standup brief: overdue, due today, and in progress. | project_id (optional) |
ab-weekly-review | A weekly review: what shipped, what slipped, what's at risk next week. | project_id (optional) |
ab-create-task | Guided task creation from a natural-language intent — it fetches the valid options, proposes title/priority/due date, then creates the task. | project_id, intent (both required) |
ab-find-blocked | Tasks that look blocked, grouped by project, longest-blocked first. | project_id (optional) |
ab-wiki-recap | A recap of the most recently edited Documents in a project. | project_id (required) |
MCP resources — pullable feeds
MCP resources are read-only feeds a client can attach as background context without a tool call. All four are about your work, not the whole team's:
| Resource | Contents |
|---|---|
ab://me/today | Tasks due today across every project you're a member of. |
ab://me/week | Tasks due in the next 7 days, plus today. |
ab://me/projects | Your projects, with member count, progress, and your roles. |
ab://project/…/overview | One per project: your open tasks in that project, plus the project's member list. |
What happens when an AI writes
Every write goes through the same code path as the app and is saved under your name — there is no anonymous “robot” author. How loudly it announces itself depends on the tool:
| Write tools | Saved on the record | Operation log (audit) | Teams card |
|---|---|---|---|
ab_create_task, ab_update_task, ab_complete_task, ab_add_comment |
Change history, with your note |
Yes | Yes, disclosed as AI activity |
ab_create_wiki_article, ab_update_wiki_article |
New version, with your edit_note |
Yes | Yes, disclosed as AI activity |
ab_create_task_option, ab_update_task_option |
Yes — the project’s change log records the change, the before and after, and your note |
Yes | No |
ab_add_wiki_comment, ab_link_task_wiki, ab_unlink_task_wiki |
Yes, under your name | No | No |
All twelve ab_crm_* write tools |
Yes, stamped with your name and time; notes and activities show in the record's history | For leads, opportunities, notes, new activities, and sent email; not for customers, completed activities, or labels | No |
ab_support_update_ticket, ab_support_add_note, ab_support_draft_reply |
Yes — the ticket's history records the change and the reason you gave | Yes | No |
So a task an assistant creates or closes is as visible as one you clicked yourself — same change history, same audit entry, same card in the channel. Quieter writes (document comments, task–document links, project option changes, CRM records, and support tickets) are still attributed to you and still visible in the app; they simply don't interrupt the channel.
Common questions
Do I need a license just to let my assistant read?
No. Every read tool works for any project member, licensed or not. Only the eleven AB Projects write tools check for a seat, and only once your organization is past its 10 free users.
Why does my assistant only see some of my projects?
The tools only ever see projects and workspaces you are an accepted member of. Run ab_whoami to confirm which account the server resolved for your connection — a mismatch there explains most “the tool can't find it” reports.
Can an AI email a customer without me knowing?
ab_crm_send_email_to_lead is the only tool that sends mail, it requires you to confirm the recipient, subject, and body first, and it refuses outright if the lead opted out of automation, the workspace's automation is paused, or no mailbox is configured. Every send is filed in the lead's email thread with a note.
Can an assistant reply to a support customer?
Not directly. Nothing in the ab_support_* set sends a reply, so no assistant action reaches the person who raised the ticket. It can read the thread, change status, assign, set priority, add an internal note that stays on your desk, and draft a reply with ab_support_draft_reply. That draft waits on the ticket as its suggested reply until a person on your desk reviews it and sends it with Use this — or ignores it.
Why does my assistant ask why I'm changing a ticket?
Because ab_support_update_ticket refuses without a reason. Every status, assignee, and priority change lands in the ticket's history with that reason attached, so a colleague picking the ticket up later can see why it moved rather than guessing.
Does ab_search_wiki search my documents?
No — despite the name, it lists the documents under a folder path. To find a document by content, pull the tree with ab_get_wiki_tree and read candidates with ab_get_wiki_article.
Verified against the shipping MCP server on 2 October 2026: 55 tools, 5 prompts, 4 resource feeds.