Developer documentation
Plug anything into your MADATA workspace
Every <workspace>.madata.app workspace opens two
doors: an MCP server for AI assistants, and a
data API for your own code. Both read and write your
business data with your permissions.
The MCP server exposes ~150 ready made business tools (KPIs, sales, accounting, payroll, journal entries…) to Claude, ChatGPT, Gemini or Mistral Le Chat. The data API exposes the raw models of the workspace to your code. Every call runs with the permissions of the user who owns the key.
MCP server
An AI assistant acts on the workspace in a few clicks, with no code. ~150 business tools, OAuth or Bearer key.
The MCP server ›Data API
Your program reads and writes the models of the workspace: contacts, quotations, invoices, stock, journal entries. XML-RPC or JSON-RPC.
The data API ›01Quick start in 3 steps
- Create an API key. In MADATA, open
My profile → Account security → API keys and generate a key. It
starts with
mia_and is shown only once. Restricted to workspace MADATA administrators. Details. - Get the workspace URL. It looks like
https://<workspace>.madata.app/mia/mcpand appears next to the key. - Call it. A JSON-RPC
POSTwith theAuthorization: Bearerheader:
curl -s https://<workspace>.madata.app/mia/mcp \
-H "Authorization: Bearer mia_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
With Claude it takes just a few clicks, with no key to paste. Settings → Connectors → Add custom connector, paste the workspace URL, authorize: that is all. Mistral Le Chat follows the same path over OAuth. See Connect an assistant.
02What the MCP server can do
On a fresh workspace, 151 tools are exposed (74 read, 77 write). The list actually visible depends on the installed modules, the user's permissions and the key's scope.
| Family | Examples |
|---|---|
| KPIs | get_kpi, get_cash_flow, get_crm_kpi, get_revenue_forecast |
| Business reads | search_sales, search_invoices, get_stock_card, query_records |
| Accounting | get_balance_sheet, check_accounting_consistency, export_accounting, create_journal_entry |
| Writes | create_quotation, create_customer_invoice, register_payment, action_record |
| HR & payroll | create_payslip, validate_batch, send_payslip, create_leave |
| Communication | send_email, prepare_whatsapp_message, send_payment_followups |
The server also exposes 4 resources
(mia://kpi/current…) and 8 prompts
ready to use. Full list: Tool catalog.
03The data API, in a minute
When the ready made tool is no longer enough, the data API gives access to the models themselves. Same key, same permissions, full control.
import xmlrpc.client
URL, DB, KEY = "https://<workspace>.madata.app", "prod_<workspace>", "your-key"
uid = xmlrpc.client.ServerProxy(f"{URL}/xmlrpc/2/common").authenticate(
DB, "[email protected]", KEY, {})
models = xmlrpc.client.ServerProxy(f"{URL}/xmlrpc/2/object")
customers = models.execute_kw(DB, uid, KEY, 'res.partner', 'search_read',
[[['customer_rank', '>', 0]]],
{'fields': ['name', 'email'], 'limit': 10})
Next: The data API, Authentication, Reading, Writing, Recipes.
04Conventions
- Endpoint
https://<workspace>.madata.app/mia/mcp: one per workspace.- Auth
Authorization: Bearer mia_…header, or OAuth 2.1 (Claude, Mistral).- Language
- Error messages and tool descriptions are in French.
- Name
- The platform is called MADATA.
A key never elevates permissions: every call runs as the real user, with their native rights. Billed resources (users, companies, points of sale, apps) stay read-only: manage them in the portal.
05Support
Something missing, a tool misbehaving? From a connected assistant, ask it
to log a request: the suggest_feature_request tool submits it.
Otherwise, use support from your client area.