Mosaic Hub
Model Context Protocol

Give your AI assistant direct access to your financial data.

Securely connect the Mosaic Hub to Claude, Cursor, ChatGPT or your own custom agents using the Model Context Protocol. No CSV exports. No manual reporting. Just ask.

Available to Mosaic Hub members.

How it works

Three steps to a connected assistant

Add the Mosaic Hub connector inside your assistant, sign in once with your Mosaic Hub login, and start asking questions about your live financial data.

1

Add the connector

Inside your AI assistant (ChatGPT, Claude, Cursor, …), add a new Mosaic Hub connector. The only thing you enter is the address: https://mcp.mosaic.co.za/mcp. No keys, no codes, no copy-paste config.

2

Sign in to Mosaic Hub

The assistant pops a Mosaic Hub sign-in window. Log in as you normally would, tick which Mosaic Hub modules the assistant may read — Numbers, People, Personal — and which clients each module covers. You stay in control — the assistant never sees your password and only sees the modules and clients you ticked.

3

Start chatting

Open a new chat in your assistant and lead with the connector name — for example @MosaicHub in ChatGPT, or just mention "Mosaic Hub" in Claude. Then ask anything: "@MosaicHub show me the profit and loss for Achiever Corporation for May 2026". You can review or revoke the connection any time from Home → Developer → Model Context Protocol in the Mosaic Hub portal.

Connector URL
  https://mcp.mosaic.co.za/mcp

Sign-in
  Sign in with your Mosaic Hub account — your assistant
  takes care of the rest in the background.
Use cases

What you can ask your AI to do

Once connected, your assistant works with the same live, committed data you see in the Hub portal. Try any of these in a new chat:

Month-end management accounts

"Show me last month's profit and loss for Acme Pty Ltd and explain why operating expenses jumped 18% versus the prior month."

Full financial health check

"Run a full financial analysis on Acme Pty Ltd for the closed period and flag any ratios that look unhealthy versus typical SME benchmarks."

Receivables follow-up

"Which customers owe Acme more than 60 days, total outstanding per customer, and draft a polite reminder email I can send to the top three."

Cashflow snapshot

"List Acme's bank accounts with current balances and the last 20 unreconciled transactions on the Standard Bank account."

Bills and supplier exposure

"What did Acme buy last month? Group spend by supplier and show me anything materially larger than the rolling three-month average."

Debt review

"List Acme's borrowings as at today, sorted by balance, and tell me which are interest-bearing and to whom."

Year-on-year comparison

"Compare Acme's revenue, gross margin and EBITDA this quarter versus the same quarter last year and summarise the swing in plain English."

Portfolio overview

"For every client I have access to, give me last month's net profit and rank them by profit margin."

Balance sheet snapshot

"Pull Acme's statement of financial position as at last month-end and tell me which assets and liabilities moved the most versus the prior month."

General-ledger drill-down

"Operating expenses on Acme jumped last month — open the rent and the marketing accounts and show me every transaction in those accounts for the period, with counterparty and narration."

Capability surface

What lives behind the connector

The Mosaic Hub MCP server exposes a focused set of read-only tools to your assistant. You don't need to know the tool names — the AI picks them automatically — but here is the full menu of what is on the table.

AreaWhat you can askDrill-down available
ClientsList every Mosaic client you have access to.Display name and reporting currency.
BankBank accounts and their balances, individual transaction history per account.Date-ranged, with reconciliation status.
SalesCommitted invoice register for any period.Optional per-invoice line items.
PurchasesCommitted supplier bill register for any period.Optional per-bill line items.
ReceivablesCustomer balances with ageing (current, 1–30 days, 31–60, 61–90, 91–120 and over 120 days overdue), allocated oldest invoice first.Per counterparty, with email address and cellphone number on file.
PayablesSupplier balances with ageing buckets (current, 1–30 days, 31–60, 61–90, 91–120 and over 120 days overdue), allocated oldest bill first.Per counterparty.
BorrowingsNon-current liability sub-ledger with running balances.Per-account transaction history.
Loans receivableNon-current asset sub-ledger with running balances.Per-account transaction history.
Profit and LossMonthly Statement of Profit or Loss with category subtotals.Any date range.
Statement of Financial PositionFull balance sheet as at any date — non-current assets, current assets, non-current liabilities, current liabilities, share capital, reserves and retained earnings — with category subtotals and an accumulated profit/(loss) line rolled in from the live P&L.Any as-at date, with an imbalance check that flags trial-balance drift.
Financial analysisStatement of Profit or Loss totals, Statement of Financial Position totals, gross profit margin, operating profit margin, net profit margin, EBITDA margin, return on assets, return on equity, current ratio and debt-to-equity ratio — in one call.Period and as-at date.
General ledger drill-downPer-line transaction history for any single account on the chart — bank, trade receivables/payables, borrowings, loans receivable, share capital, revenue, expenses, VAT control, anything — with opening balance, running balance, closing balance and period totals.Date-ranged, with counterparty, narration, source document and signed amount per line.

Security-first by design. The connector can read your Mosaic Hub data — never change it — and only ever from the clients you explicitly grant access to. Anything reported by month defaults to the most recently closed period, so you always see clean, finalised numbers.

Security & compliance

Built for South African financial data

Connecting an AI to financial records demands strict controls. Here is how the Mosaic Hub MCP endpoint protects your data.

POPIA compliant

Data is scoped strictly to the authenticated member. An AI session never sees data the key holder cannot already access.

Read-only, by design

The connector cannot create, edit or delete anything in Mosaic Hub. It can only answer questions. Even if the assistant tried, the request would be turned away.

Sign in once, securely

No keys to copy and no shared passwords sitting in chat configs. You sign in to Mosaic Hub the same way you always do; the assistant simply receives a short-lived ticket scoped to that conversation.

Per-client consent

When you authorise an assistant, you explicitly tick which Mosaic clients it may read. That choice is locked in for the session — the assistant cannot reach beyond the clients you ticked, even if asked.

Revoke any time

The Connected applications page in your Hub portal lists every assistant you have connected, when you connected it, and the last time it was used. One click cuts it off — the assistant has to ask permission again before it can read anything.

Session isolation

Every conversation is tied to one specific Mosaic Hub member. There is no way for one user's data to bleed into another user's session.

Supported clients

Works with the tools you already use

Any MCP-compatible client can connect to the Mosaic Hub endpoint.

Claude Desktop

Anthropic

Cursor IDE

Code editor

Zed

Code editor

ChatGPT

OpenAI

LangChain

Agent framework

LlamaIndex

Agent framework

Custom agents

Any MCP client

mcp.mosaic.co.za/mcp

JSON-RPC endpoint

Frequently asked questions

Connecting your AI client

Practical answers for the major AI assistants. The connector covers Numbers data today — profit and loss, statement of financial position, financial analysis, transactions, balances, sub-ledgers, sales, purchases and general-ledger drill-down. People (employees, payroll, leave) and Personal (your own documents, pension balances) are visible on the consent screen and join the same connector when their tools ship; you do not have to re-add anything.

ChatGPT

Fully supported
What plan do I need?

You do not need a paid plan. Custom MCP connectors live behind Developer mode in ChatGPT, which is available on the free tier as well as Plus, Pro, Business and Enterprise. If you only see the public Apps catalogue at Settings → Apps with no Advanced section, your account has not been enrolled yet — use Claude Desktop or Cursor in the meantime.

How do I add the Mosaic Hub MCP to ChatGPT?

Step by step:

  1. Open Settings → Apps → Advanced and turn Developer mode on.
  2. Back on the Apps page click Create app and pick MCP server.
  3. Fill in:
    • Name: MosaicHub — use a single word with no spaces. ChatGPT exposes the connector to the model as a namespace and removes spaces, so "Mosaic Hub" would surface as Mosaic_Hub in the tool router.
    • Description: "Read your Mosaic Hub data — Numbers (profit and loss, transactions, balances), People (payroll, leave) and Personal (documents, pensions)."
    • MCP Server URL: https://mcp.mosaic.co.za/mcp
    • Authentication: OAuth (leave Advanced OAuth settings blank — they auto-discover from the URL).
  4. Tick the risk-acknowledgement checkbox and save.
  5. On the connector card, click Connect. A new browser tab opens to hub.mosaic.co.za: sign in, tick which Mosaic clients ChatGPT may read on the consent screen, click Allow access.
  6. The tab closes itself. The card now shows Connected · Authorization used: OAuth.

There is nothing technical to paste — no key, no header, no config file. ChatGPT figures out how to talk to Mosaic Hub on its own; you just sign in once when prompted, and it remembers from there.

How do I use the connector once it is added?

Open a new chat and start your message with @MosaicHub. ChatGPT only uses custom connectors on conversations that explicitly point at them — the built-in tool router (web search, image generation, code interpreter) outranks every custom MCP connector by default, so a generic *"what is my profit and loss for May?"* prompt will usually get an apology that ChatGPT cannot see your accounting system. Anchor every Mosaic Hub question to the connector and the model will route to it without hesitation.

Examples that work:

  • "@MosaicHub list my clients."
  • "@MosaicHub show me the profit and loss for Achiever Corporation for May 2026." (any client display name from your consent works — ChatGPT calls numbers_list_clients first to resolve names).
  • "@MosaicHub what are the overdue receivables on Achiever Trust as of today?"
  • "Using @MosaicHub, give me a financial-analysis summary for Achiever Corporation. Include margins and the current ratio."

Once the conversation has called a Mosaic Hub tool once, ChatGPT remembers the connector for the rest of that chat — you can drop the @MosaicHub prefix on follow-up questions in the same conversation. For a brand-new chat, always lead with @MosaicHub again.

If ChatGPT replies that it cannot see your data even with @MosaicHub, the connector is probably disabled on the chat. Click the tools icon below the message box and confirm MosaicHub is enabled for this conversation.

What clients can ChatGPT read?

The Mosaic clients you explicitly ticked on the consent screen, only for the modules you ticked, and only if the relevant MCP access right (Numbers MCP, People MCP, Personal MCP) is enabled on your account for each (set by the client owner under Home → Access Rights). The granted-module set and the granted-client list are both frozen into the OAuth access token at consent time, so ChatGPT cannot widen scope mid-session even if asked — if you withhold People at the consent screen, the assistant never sees a single People tool, no matter what it tries.

How do I see or revoke the connection?

In your Hub portal go to Home → Developer → Model Context Protocol. The Connected applications table lists every assistant (ChatGPT, Claude, custom agents) you have authorised, with the scopes granted, the clients tied to that consent, and the last time the access token was used. A single Revoke click kills both the access and refresh tokens immediately.

To revoke from ChatGPT's side, go to Settings → Apps → MosaicHub → Delete app. Doing it in both places leaves nothing behind.

Claude Desktop

Fully supported
How do I add the Mosaic Hub MCP?

In Claude Desktop go to Settings → Developer → Edit Config. Open claude_desktop_config.json and add:

{
  "mcpServers": {
    "mosaic-hub": {
      "url": "https://mcp.mosaic.co.za/mcp"
    }
  }
}

Save the file and restart Claude Desktop. The first time you use a Mosaic Hub tool, Claude pops up the Hub sign-in + consent screen in your browser. No keys to copy, no shared secrets in the config file.

Do I need a separate connector for each module?

No. There is one Mosaic Hub MCP connector and one connector URL. Modules — Numbers, People, Personal — are tickboxes on the consent screen, not separate connectors. When People and Personal tools ship they appear inside the same connector you already added, the next time you sign in. If you don't want a particular module visible to a given AI assistant, untick it on the consent screen for that connection.

How do I confirm it is connected?

Claude Desktop shows the connected server in the chat toolbar. Try: "List the tools you have available from Mosaic Hub." You should see fifteen numbers_* tools covering bank accounts, sub-ledgers, trade balances, sales, purchases, profit and loss, statement of financial position, the financial-analysis snapshot and general-ledger drill-down. people_* and personal_* tools join the same list once those modules ship.

Cursor

Fully supported
Where do I add it in Cursor?

Open Cursor Settings → Features → Model Context Protocol → Add new MCP server. Set:

  • Name: mosaic-hub
  • Type: HTTP (Streamable HTTP — the modern MCP transport)
  • URL: https://mcp.mosaic.co.za/mcp

Leave the auth field blank. The first time Cursor uses a Mosaic Hub tool, it pops a browser tab to sign you in. Cursor remembers the connection per workspace from then on.

Will Cursor use the Mosaic Hub tools automatically?

Yes — once the server is enabled in MCP settings, Cursor's chat advertises the tools to the model and calls them when relevant. You can also force a call by display name, for example "Use the Mosaic Hub connector. Show me the profit and loss for Achiever Corporation for May 2026."

Zed

Fully supported
How do I add the Mosaic Hub MCP in Zed?

Open Zed → Settings → Open settings.json and add a context_servers entry:

{
  "context_servers": {
    "mosaic-hub": {
      "url": "https://mcp.mosaic.co.za/mcp"
    }
  }
}

Reload the Zed window. On first use, Zed walks you through the Mosaic Hub OAuth sign-in + consent in your browser, then caches the token. The Mosaic Hub tools appear in Zed's Assistant panel.

LangChain, LlamaIndex & custom agents

Fully supported
What transport does the server speak?

MCP Streamable HTTP (the modern transport from the 2025-06-18 spec revision). One unified endpoint at POST /mcp accepts every JSON-RPC message in a single round-trip; the response body is either JSON or an SSE event stream on the same response (the client picks via Accept). There is no Mcp-Session-Id, no SSE long-poll and no persistent server-side session state. Any MCP SDK with a Streamable HTTP client will work — the official Python mcp SDK, the TypeScript @modelcontextprotocol/sdk, and both LangChain's and LlamaIndex's MCP adapters.

How do I authenticate from a custom agent?

Use any MCP SDK with built-in OAuth 2.1 client support. The flow:

  1. Open POST /mcp with an MCP initialize JSON-RPC body. With no Bearer header the server returns 401 plus a WWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource" header.
  2. Fetch that metadata document, discover https://hub.mosaic.co.za as the authorisation server, and fetch /.well-known/oauth-authorization-server for its endpoints.
  3. Dynamically register your client at /oauth-register.php (RFC 7591), run the authorization-code + PKCE flow at /oauth-authorize.php/oauth-token.php, and resend the initialize POST with Authorization: Bearer mh_at_…. Every subsequent tools/list / tools/call request is an independent authenticated POST to the same endpoint.

Tokens last one hour; refresh tokens last 90 days and rotate on every use.

Are there rate limits I should know about?

The PostgreSQL read role caps concurrent connections at 8, and the asyncpg pool keeps a max of 4 per App Service instance, so practical concurrency is fine for individual members but not for high-fanout backends. Each session is in-process; do not assume horizontal stickiness.

Common questions

What happens if my session gets compromised?

Open the Connected applications view in your Hub portal and click Revoke next to the assistant. The connection is cut immediately. The assistant has to ask for permission again before it can read anything — and you can simply not grant it.

What data can my AI client see?

Only data for the clients you explicitly ticked during the Mosaic Hub sign-in screen, and only where you already have Model Context Protocol access in the portal. The list of clients the assistant may read is locked in for that session, so it cannot expand it mid-conversation.

Can the AI write back to my Hub data?

No. The connector is strictly read-only — it can answer questions about your data but cannot create, edit or delete anything. Even if you ask it to, the request will be refused. Any changes to your Mosaic Hub still happen the way they always have: through the portal, with you in the driver's seat.

Turn your Hub into an AI superpower.

Add the Mosaic Hub connector to your assistant in minutes. No keys, no copy-paste.

Already a Mosaic Hub member? Sign in to your portal and your assistant takes over from there.