Boardroom Revenue Control

io.github.boardroomgen-ai-aePublished by GitHub account boardroomgen-ai-aev1.0.0Updated Oct 24, 2026

Read-only sales CRM for AI clients: leads, pipeline, AI-agent chats, calls, ad attribution.

Overview

AI-generated overview

Read-only MCP access to a hosted sales CRM: leads, pipeline, AI-agent conversations, calls, ad attribution and marketing figures for one workspace.

What you can do
Check the token's identity, workspace and scopes, and read the workspace KPI snapshot and marketing snapshot with spend, reach, clicks and cost per lead per campaign, plus the CRM join and partner cabinet figures where the token allows it. Browse leads, single lead records with notes, events, stage history and tasks, the pipeline and stage funnel, and open leads with no unfinished follow-up task sorted by idle time. Review AI-agent conversations with intent, language, message count and transcripts, and the agent's configuration, including the titles of its knowledge documents. See ad attribution from advertisement to conversation and bound lead, and list calls with direction, disposition and
When to use it
Useful when a workspace owner wants an assistant to answer questions about sales follow-up gaps, funnel shape, agent conversations, call outcomes or ad performance without opening the cabinet. It suits businesses selling through conversations that already run Revenue Control.
Requirements
A remote streamable HTTP endpoint; no local package. A Revenue Control workspace and a bearer token in the Authorization header, either owner-issued under Integrations > API and MCP or obtained through OAuth sign-in approved by the workspace owner. Network access to the hosted service.
Before you install
The Authorization bearer token grants read access to one workspace and is shown only once, so store it carefully and revoke it when no longer needed. Contact details are masked by default; full phone, email and messenger ids require a separately granted crm:read_pii permission. Reads are logged in the workspace audit log. The public MCP server is read-only, but the same platform's REST API includes a write endpoint.

Installation

In SourceWeft

  1. Open Boardroom Revenue Control in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.boardroomgen-ai-ae%2Fboro-ai/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "boardroom-revenue-control": {
      "type": "http",
      "url": "https://control.boardroom-ai.ae/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

Boro: your AI Business Operator

Revenue Control + Boro: an AI sales agent, CRM, booking and revenue dashboard for businesses that sell through conversations. Built by Boardroom AI, a global company headquartered in the UAE.

Boro does more than answer questions. It gets work done.

[License: Apache 2.0] [MCP: read tools live] [REST API: v1] [Languages: EN · RU · AR] [Built in Dubai] [Official MCP Registry] [Smithery] [Glama] [GitHub stars]

Start a free workspace · Website · Connect via MCP · REST examples · Русский


What it is

Revenue Control is a hosted, multi-tenant platform for businesses that sell through conversations: salons and clinics, real-estate agencies, education centres, service companies.

  • AI sales agent. It replies to customers on WhatsApp, Instagram, Telegram, website chat and voice, qualifies them, books appointments and hands over to a person when it should.
  • CRM. Pipelines, stages, tasks, notes and a full conversation history on every deal, filled in by the agent as it talks.
  • Booking. Slots, staff and reminders, plus connectors to the booking systems salons and clinics already use.
  • Revenue dashboard. Leads, conversion, follow-up gaps, ad spend against real deals, and revenue by source.
  • Boro. An operator inside the cabinet that reads all of the above and tells you what needs your attention today.

This repository is the public developer layer: documentation, connection guides and examples. The product itself runs as a cloud service at control.boardroom-ai.ae. The platform source code is not in this repository.

Connect Claude, ChatGPT or Cursor to your workspace in 3 minutes

Your workspace is also an MCP server. Any MCP client can read your leads, pipeline, AI-agent conversations, calls and marketing figures. Connect it in one of two ways.

One-click sign-in (OAuth). In a client that supports OAuth for remote MCP servers, such as a Claude custom connector or a ChatGPT connector in developer mode, add this URL:

https://control.boardroom-ai.ae/mcp/connect

The client opens the Revenue Control sign-in page. The workspace owner signs in and approves the connection on a consent screen. There is no token to copy: the client receives a read-only token, which appears in your token list in the cabinet and can be revoked there.

Owner-issued token. For Claude Code, Claude Desktop, Cursor, scripts and anything else that sends a header:

  1. Sign in to your workspace and open Integrations → API and MCP → Boardroom MCP → Get an MCP token. The token is shown once. Copy it.
  2. Add the server to your client:
bash
claude mcp add --transport http boardroom https://control.boardroom-ai.ae/mcp \  --header "Authorization: Bearer YOUR_MCP_TOKEN"
  1. Ask: "Which open leads have no follow-up task? Longest idle first."

Setup guides: Claude Code · Claude Desktop · Cursor · ChatGPT / OpenAI

Safe by design:

  • Read-only. The public MCP server has no write tools.
  • One workspace per token. The workspace comes from the token. A tool argument can never point at another tenant.
  • Masked by default. Lists and lead cards mask phone numbers and e-mails. Full contact details come back only for one specific record, and only if the owner granted the token that permission separately.
  • Audited. Every read is logged with the tool, the row counts and the record id. Response bodies and personal data are not stored in the log.
  • Owner-issued and revocable. Only the workspace owner can mint a token or approve an OAuth sign-in. Tokens expire, and you can revoke one at any time from the same card.

What you can ask

Ask your AI client or BoroStatus
"Find all leads that didn't receive a follow-up"Available now
"Show the funnel: how many deals and how much value per stage?"Available now
"Who wrote to us this week, in which language, and what did they want?"Available now
"Which ads produced conversations this month?"Available now
"How did calls go today: answered, missed, talk time?"Available now
"Tell me what requires my attention today" (Boro, in the cabinet)Available now
"Book a meeting tomorrow and move the deal" (Boro, in the cabinet)Beta: Boro prepares the action, you confirm it
"Summarise my inbox and draft replies" (Boro, in the cabinet)Beta: drafts only, never sends
The same write actions through MCP (note, task, stage, tags)Coming soon: preview-then-confirm
"Prepare quotations for customers waiting for prices"Coming soon

The 13 MCP tools are documented one by one in docs/mcp/tools.

REST API

A plain HTTPS API for your own systems, forms and automations:

bash
curl -s https://control.boardroom-ai.ae/api/v1/leads?limit=5 \  -H "Authorization: Bearer YOUR_API_KEY"

GET /api/v1/leads · GET /api/v1/deals · GET /api/v1/tasks · POST /api/v1/leads

Reference: docs/api/rest-v1.md. Examples in curl, JavaScript and Python, plus n8n and Make templates, are in examples/.

Works with

WhatsApp · Instagram · Telegram · Website chat · Voice · Kommo / amoCRM · Altegio · Zoho Books · Bayut / Property Finder · Meta, Google and TikTok Ads · any MCP client · n8n · Make

Some channels depend on approval by the channel provider for your business. The cabinet shows the honest status of each connection: Live, Needs setup, Draft or Unavailable.

How it works

 Customers                    Revenue Control (cloud)                      You ─────────                    ───────────────────────                      ─── WhatsApp  ┐                 ┌──────────────────────────┐ Instagram ├──► AI agent ───►│ CRM · booking · dashboard │◄── Boro (in the cabinet) Telegram  │   (replies,     │ one workspace per business│ Web chat  │    qualifies,   └─────────────┬─────────────┘ Voice     ┘    books)                     │                                           ├──► MCP server ──► Claude / ChatGPT / Cursor (read-only)                                           └──► REST /api/v1 ──► your forms, n8n, Make, scripts

Security

  • Every token and API key belongs to exactly one workspace. Requests never choose their tenant.
  • Credentials are stored as hashes. The plaintext is shown once, at creation.
  • OAuth sign-in uses the authorization code flow with PKCE (S256) and dynamic client registration. Only the workspace owner can approve it.
  • MCP is read-only. Actions in the cabinet go through an explicit confirmation step.
  • Every MCP read is written to the workspace audit log.
  • Rate limits apply to every token and every key.

Found a vulnerability? See SECURITY.md. Please don't open a public issue for it.

Roadmap

ItemStatus
✅MCP server, 13 read tools, owner-issued tokensAvailable now
✅One-click OAuth sign-in for Claude and ChatGPT connectorsAvailable now
✅Listings in the official MCP Registry, Smithery and GlamaAvailable now
✅REST API v1: leads, deals, tasks, create leadAvailable now
✅Website chat widgetAvailable now
🧪Boro actions in the cabinet (book, move stage, create task) with confirmationBeta
🧪Boro inbox digest and reply draftsBeta
🔜MCP write tools with preview-then-confirmComing soon
🔜MCP demo sandbox with a fictional CRM, no sign-up neededComing soon
🔜Listings in more client catalogsComing soon
💭Boro Skills: vertical packs for clinics, salons, real estateExploring

Want something on this list sooner? Open a feature request or ask for an integration.

Like it? Give it a star ⭐

A star helps other business owners and developers find a working MCP-to-CRM setup. If this repository saved you time, please star it.

Contributing

Doc fixes, new client guides and new examples are welcome. See CONTRIBUTING.md and the Code of Conduct.

License

Documentation and examples in this repository are licensed under Apache 2.0. "Boro", "Boardroom" and "Revenue Control" are names of Boardroom AI. The license covers this repository only, not the hosted service or its brand.


Boardroom AI, a global company headquartered in the UAE 🇦🇪 · control.boardroom-ai.ae

Source: README.md at commit 83047c7

Tools

13

whoami

Who am I (token and workspace)

Who this token is, which workspace it can read, and which scopes it carries. Call this first: it tells you which of the other tools will work.

Takes no parameters.

crm_list_leads

List leads

Leads in this workspace, newest activity first. Phone and email are MASKED here — use crm_get_lead for one record when the full contact is genuinely needed. `total` is the count before paging, so it answers 'how many leads exist'. [scope: crm:read]

Parameterslimitsincestageoffsetpipeline_id

crm_get_lead

Get one lead

One lead — notes, events, stage history and open tasks. Phone, e-mail and messenger ids are MASKED unless this key also holds crm:read_pii, which the workspace owner grants separately. Scoped to this workspace: a lead id from elsewhere reads as not_found. [scope: crm:read]

Parameterslead_idrequired

crm_pipeline_overview

Pipeline overview

Every pipeline and stage with its lead count and total value. The shape of the funnel. [scope: crm:read]

Takes no parameters.

crm_leads_without_task

Leads without a follow-up task

Open leads with no unfinished task against them — the follow-up leak. Sorted by idle time, longest first. Idle days are counted in Asia/Dubai. [scope: crm:read]

Parameterslimit

ad_attribution

Ad attribution

Which advertisement produced which conversation: ad id, creative, first-touch flag, and the lead it bound to. The per-click id is NOT returned — only whether one exists. An empty result means no ad-driven conversation has been recorded in the window, not that the tool failed. [scope: marketing:read]

Parameterslimitsince

agent_conversations

AI-agent conversations

Conversations the AI agent handled, with intent, language, message count and the deal they bound to. Contacts masked. [scope: agent:read]

Parameterslimitsince

agent_get_conversation

One conversation transcript

One conversation with its transcript — what the customer wrote and what the agent answered. [scope: agent:read]

Parameterslimitconversation_idrequired

dashboard_snapshot

Dashboard snapshot

The workspace's own KPI contract as the dashboard renders it, with the time it was built. [scope: crm:read]

Takes no parameters.

marketing_snapshot

Marketing snapshot

Advertising performance: spend, reach, clicks, cost per lead, per campaign, plus the CRM join. [scope: marketing:read]

Takes no parameters.

agent_config

AI-agent configuration

How the AI agent is set up for this workspace: mode and persona, working hours, hand-over rules, follow-up cadence, trigger list, actions, voice scenarios, and the TITLES of its knowledge documents. Document text is not returned — the list answers what the agent knows about; reading one whole is a separate, narrower ask. No credential of any kind is reachable from here: an agent's instructions are not its keys. [scope: agent:read]

Takes no parameters.

partner_overview

Partner overview

This partner's own cabinet: referral code and link, the clients who registered through it, the agreed commission rate, what has accrued so far, and which client workspaces this partner currently holds a grant for. Only answers for a token bound to a partner. [scope: partner:read]

Takes no parameters.

voice_calls

Voice calls

Calls with direction, disposition and talk time. Customer numbers masked. [scope: crm:read]

Parameterslimitsince

Version history

1
  1. v1.0.0LatestOct 9, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts