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.
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.
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.
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.
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.
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."
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.
| Area | What you can ask | Drill-down available |
|---|---|---|
| Clients | List every Mosaic client you have access to. | Display name and reporting currency. |
| Bank | Bank accounts and their balances, individual transaction history per account. | Date-ranged, with reconciliation status. |
| Sales | Committed invoice register for any period. | Optional per-invoice line items. |
| Purchases | Committed supplier bill register for any period. | Optional per-bill line items. |
| Receivables | Customer 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. |
| Payables | Supplier 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. |
| Borrowings | Non-current liability sub-ledger with running balances. | Per-account transaction history. |
| Loans receivable | Non-current asset sub-ledger with running balances. | Per-account transaction history. |
| Profit and Loss | Monthly Statement of Profit or Loss with category subtotals. | Any date range. |
| Statement of Financial Position | Full 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 analysis | Statement 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-down | Per-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.
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.
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
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 supportedWhat 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:
- Open Settings → Apps → Advanced and turn Developer mode on.
- Back on the Apps page click Create app and pick MCP server.
- 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 asMosaic_Hubin 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).
- Name:
- Tick the risk-acknowledgement checkbox and save.
- 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. - 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:
- "
@MosaicHublist my clients." - "
@MosaicHubshow me the profit and loss for Achiever Corporation for May 2026." (any client display name from your consent works — ChatGPT callsnumbers_list_clientsfirst to resolve names). - "
@MosaicHubwhat 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 supportedHow 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 supportedWhere 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 supportedHow 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 supportedWhat 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:
- Open
POST /mcpwith an MCPinitializeJSON-RPC body. With no Bearer header the server returns401plus aWWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource"header. - Fetch that metadata document, discover
https://hub.mosaic.co.zaas the authorisation server, and fetch/.well-known/oauth-authorization-serverfor its endpoints. - 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 theinitializePOST withAuthorization: Bearer mh_at_…. Every subsequenttools/list/tools/callrequest 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.
