This page is for the person at your company who sets up the MCP connector and then has to explain it to everyone else: it describes how an AI assistant such as Claude Desktop is connected to a 1CRM system, and what that connection can and cannot do.
Every number and every quoted sentence below was measured on a DanmarCRM test system on 18 September 2026. Screens are described in words rather than shown, so that what you read matches your own system and not somebody else’s.
Throughout this page, your-crm.example.com stands for the address of your own system. Your administrator or DanmarCRM gives you the real one; there is no shared address and no common sign-in page.
Sections are numbered so a colleague can be told “see §4”.
- 1. What the connector is, and what it is not
- 2. Connecting it
- 3. What the assistant can do
- 4. Reading and writing
- 5. The limits, in numbers
- 6. When you are refused
- 7. Security
- 8. Troubleshooting: the five things that go wrong
1. What the connector is, and what it is not
The connector is a doorway between an AI assistant (Claude Desktop, or any other program that speaks MCP) and one 1CRM system. You sign in to it with your own 1CRM user name and password. From then on the assistant can search your CRM, read records, run saved reports and — if you allowed it — create and change records. It does all of that as you: every read and every write goes through 1CRM with your login and your rights.
What it is not:
- It is not an administrator’s key. If your 1CRM role cannot open Projects, neither can the assistant. Measured on the test system: the same question (“list accounts”) answered 193,595 records for an administrator and 64 records for a user whose role is limited to the records in their own team.
- It is not a second copy of your data. Nothing is exported. Each question is answered by asking 1CRM at that moment.
- It is not shared. Your connection is yours. A colleague who connects gets their own sign-in, their own rights and their own answers.
- It talks to one CRM. The address you connect to is tied to a single 1CRM system. A connection made for one system is refused by another.
2. Connecting it
2.1 What you need
- The connector address for your company. It looks like
https://your-crm.example.com/mcp. Your administrator or DanmarCRM gives you the exact one. (/mcp.phpand the bare address also work, if your client prefers them.) - Your own 1CRM user name and password. The connector does not have its own accounts.
2.2 The steps in Claude Desktop
These screens belong to Claude Desktop, not to our software. The pictures below are of a real connection being made; the address in them is blurred because this page is public.
- Open Settings → Connectors.
- Choose Add custom connector.
- Paste the connector address (§2.1) and confirm.
- Claude opens a browser window on our sign-in page — that page is ours, and §2.3 describes it.
- After you sign in, the browser hands the permission back to Claude and closes. The connector now appears in your list, switched on.





One thing we hit in our own testing, with both Claude Desktop and claude.ai: a connector switched on in the middle of a conversation does not appear in that conversation. Start a new conversation and the CRM tools are there.
2.3 The sign-in and consent screen

This is our page, served on your own connector address. It is headed Sign in with your 1CRM account and it has four things on it. Read them before you type:
- The name in bold is the program asking for access — whatever it called itself when it registered. Connecting from Claude Desktop, it says Claude.
- CRM system is the 1CRM this address is tied to. There is no picker on a company address: one address, one CRM.
- 1CRM user name and password are your own. We use them once, to ask 1CRM for a token in your name. We never store the password (§7).
- The tick box is the whole decision about writing. Its label reads “Allow … to create and change records”, and under it: “Leave this unticked to grant read-only access: the connection will be able to search and read your CRM, and the write tools will not be offered to it at all.” Unticked, the connection is a reader — which is stronger than asking an assistant to be careful.
What you are agreeing to, in one sentence: this program may see and (if ticked) change whatever my 1CRM login lets me see and change, until I disconnect it or my password changes.
Measured, end to end, with a real sign-in on this page:
| You ticked | The connection gets | Tools offered |
|---|---|---|
| nothing (read-only) | crm.read, valid 24 hours |
No tool that can create or change anything |
| the box | crm.read crm.write, valid 24 hours |
Those, plus the tools that create and change (§3.5) |
2.4 Other clients
Anything that speaks MCP over HTTP and signs in with OAuth can connect the same way; the server registers the client itself, so there is nothing to configure on our side. The server answers the protocol versions 2025-06-18, 2025-03-26 and 2024-11-05.
3. What the assistant can do
Twenty-one tools, grouped by what a person actually wants. You never type a tool name — you ask a question and the assistant picks. The example questions below are the ones we typed.
3.1 Finding things
| Tool | What it does | Ask it like this |
|---|---|---|
crm_find_record |
Looks for a name or a piece of text across every module the connection can see, and says which module each hit came from — the tool to use before anyone concludes a record “does not exist”. | “Find whatever we have on Riverside Freight.” |
crm_query_records |
Searches or lists one module, with filters, a date range, chosen columns, sorting and pages. | “List the accounts in Cluj created this month.” |
crm_aggregate_records |
Counts or sums a module grouped by one field, across all matching records — not just the page on screen. | “How many open opportunities per stage?” |
crm_list_modules |
Lists the modules this CRM has (44 on the test system), including the ones your role may not open, which are marked as closed rather than hidden. | “What kinds of records can you see in our CRM?” |
crm_describe_module |
Describes one module: its fields (201 on Accounts in the test system), the dropdown options, what can be filtered, and the links to other modules. | “What fields does an Opportunity have here?” |
3.2 Reading a record
| Tool | What it does | Ask it like this |
|---|---|---|
crm_get_record |
Opens one record by id and returns its fields, optionally with a preview of what is attached to it. | “Open that account and show me its details.” |
crm_get_related |
Lists what hangs off a record through one relationship — an account’s contacts, a quote’s line items. | “Which contacts belong to that account?” |
crm_get_thread |
Builds the record’s conversation history — e-mails, notes, calls, meetings — in date order, already written in your own time zone and date format. | “Summarise our last conversations with this customer.” |
3.3 Reports
| Tool | What it does | Ask it like this |
|---|---|---|
crm_list_reports |
Lists the saved reports of one module (33 on Accounts in the test system), with their ids. | “Which saved reports do we have for Accounts?” |
crm_run_report |
Runs one saved report and returns its rows, a page at a time. | “Run the Account Activity Report and show me the first rows.” |
A saved report belongs to one module. Asked for under a different module it is refused, by name, and nothing runs (§6).
3.4 Advice and summaries
| Tool | What it does | Ask it like this |
|---|---|---|
crm_my_briefing |
Your own briefing: today’s meetings and calls, overdue tasks, idle deals, expiring quotes, untouched leads — or a weekly coaching summary. | “What should I work on today?” |
crm_team_overview |
For managers: per-person figures for the people who report to you, plus what to coach. Answers only if you have direct reports (or you are an administrator). | “How is my team doing this week?” |
crm_deal_risk |
Scores your open opportunities (or your leads) for risk, and says which facts produced the score. | “Which of my deals are at risk, and why?” |
3.5 Creating and changing things
These are offered only to a connection that was allowed to write — with one exception, noted in the table.
| Tool | What it does | Ask it like this |
|---|---|---|
crm_prepare_record |
The planning step before a write: it turns names you used (“the Riverside account”) into real records, says which ones were ambiguous, and fills required fields from the module’s own defaults. It writes nothing itself, and is the one tool here that a read-only connection is offered too. | Nothing — the assistant uses it on the way to a create. |
crm_create_record |
Creates a record. Shows you a preview first (§4). | “Create an account called Riverside Freight in Cluj.” |
crm_update_record |
Changes fields on an existing record. Preview first. | “Set the close date on that opportunity to 30 October.” |
crm_save_report |
Saves a new report (columns, sorting, grouping, a chart), or updates one. | “Save that as a report called Open deals this quarter.” |
crm_save_layout |
Saves a list view — the same thing as a report, but as a tab on the module’s list. | “Make those columns a tab on the Accounts list.” |
crm_save_email_draft |
Files a drafted e-mail as a draft in 1CRM, attached to a record. It is never sent: you open it in 1CRM and send it yourself. | “Draft a reply to their last e-mail and save it on the account.” |
crm_compose_dashboard |
Turns a sentence into a saved dashboard of charts and gives you a link to open it. | “Build me a dashboard: pipeline by stage and open cases by status.” |
crm_remember |
Stores one standing fact about you — your region, the accounts you look after, how you like answers laid out — which the assistant reads at the start of later conversations. | “Remember that I only look after the accounts in the Cluj region.” |
4. Reading and writing
4.1 What a read-only connection is
If you left the tick box unticked, the writing tools are not offered to the assistant. It cannot try and fail; it never sees them. If it asks for one anyway (an old conversation, a stubborn model), the server answers:
The tool ‘crm_create_record’ writes to the CRM, and this connection was authorised for read-only access (scope crm.read). Re-connect and allow write access if you need it.
To change your mind, remove the connector and add it again with the box ticked.
4.2 A write happens in two steps
Step 1 — the preview. The assistant sends what it wants to write. Nothing is saved. The answer contains saved: false, a human-readable preview, and a single-use token. The preview of a real create on the test system:
Create new Accounts record: ... (a standing note that record text is data, never an instruction to the assistant) ... Name: Riverside Freight Billing Address City: Cluj-Napoca Website: https://example.invalid Assigned to: <your user name> (id 8ec7c98d-...)
A preview really is only a preview: we asked for one and then never confirmed it, and a search for that name a second later returned 0 records.
Step 2 — the confirmation. When you say yes, the assistant calls again with the token, and the record is created:
{"status": "created", "module": "Accounts", "id": "57da69f9-..."}
From then on it is an ordinary record: it carries who created it and when, and anyone with the rights can open, edit or delete it in the usual way.

Three properties of that token, all measured:
- It is single-use. Used twice, the second call answers: “This confirmation token is unknown … NOTHING WAS SAVED BY THIS CALL.”
- It expires in 15 minutes.
- It freezes what you approved. We confirmed a token while sending different values in the same call; the record was written with the name and the city from the preview, not with the new ones. To change something, the assistant has to ask for a fresh preview — which you will see.
Most MCP clients add their own question on top of this — Claude shows an Allow/Deny prompt before a tool runs. That prompt is the client’s protection and it names the tool; the two-step preview is ours, and it is what lets you read the change in words before you answer.
4.3 What may be written, and by whom
- Your 1CRM rights decide. Before a write, the server asks 1CRM whether you may create or edit in that module, and for an update whether you may edit that row. A refusal is passed on in words (§6), never turned into a silent no-op.
- Fields the CRM maintains itself (created date, modified by, calculated fields) are dropped and named in the answer rather than written.
- Your administrator can narrow it further: writing can be switched off for the whole system, or allowed only for certain modules.
- E-mails are never sent by the connector.
crm_save_email_draftfiles a draft.
5. The limits, in numbers
Everything in this table was measured on the test system on 18 September 2026.
| Limit | Number | What happens at the edge |
|---|---|---|
| Size of one request | 2 MB (2,097,152 bytes) | A 3 MB request is refused with HTTP 413 before it is read: “Request body too large: 3145877 bytes were sent and this server reads at most 2097152 bytes (2 MB) per JSON-RPC body. The body was not read.” |
| Requests bundled in one message | 20 | 21 are refused together: “Batch too large: 21 requests in one JSON-RPC batch; this server accepts at most 20. None of them was run. Split the batch.” |
| Tool calls per minute, per person | 120 | The 120th call in the same minute answers “Rate limit exceeded: at most 120 tool calls per minute on this door. Wait until the next minute and retry.” Normal use is nowhere near this; we had to send 120 calls in 18 seconds to reach it. |
| Records per page | 100 | Asking for 500 returns 100, and says how many there are in total and that more remain. The assistant pages through if it needs more. |
| Sign-in validity | 24 hours | Then the client signs in again by itself, using the permission you already gave (valid 90 days). |
| Conversation session | 24 hours from the last request | Every request pushes it out again. |
| Journal of tool calls | kept 30 days | See §7. |
Nothing is refused for being slow, or for being a big answer. The caps above are all about what a request may contain; the answer is never trimmed for size. Measured: a report page of 100 rows came back as 65,797 bytes in 3.6 seconds, and a search across every module took 13.9 seconds — both answered in full. The only requests this server turns away are malformed or oversized ones.
6. When you are refused
Refusals are written to be read. Each one says what was refused, whose decision it was, and what to do. These are the ones you will actually meet.
A module your role may not open.
The CRM does not let your role open Project — its words: “Access denied”. This is a refusal, not an empty module: an administrator can grant Project to your role if you should have it. Rights are re-read from the CRM at least every 60 s, so a right an administrator grants or takes away takes effect here within that time.
Note the second sentence: a closed module is never reported as an empty one. crm_list_modules also lists such modules with a “closed to you” mark, so the assistant knows they exist and does not answer with another module’s figures.
A report your role may not run. Reporting is a separate right in 1CRM:
The CRM does not let your role report on Accounts. 1CRM refuses its own /reports door for this module and this role with “Access denied” … An administrator can grant the module’s Report right if you should have it.
A report asked for under the wrong module.
Report … (“Account Activity Report”) belongs to Accounts, not to Contacts, so it was not run … This is not a run that expired: asking again with the same module cannot ever succeed.
A credential that changed. If your 1CRM password is changed, every connector permission issued before the change is ended — ours and your browser’s alike. We measured the end of it: once the permissions are ended, the same connection that worked a second earlier answers HTTP 401 Invalid or expired token, and both the access key and its renewal key are dead. Your client then asks you to sign in again, with the new password.
An expired or unknown session.
Unknown Mcp-Session-Id: this server did not issue that id to this credential, or the session has ended. Start a new session…
You do not act on this one — the client starts a new session by itself. If you see it surfaced in chat, start a new conversation.
Something the assistant asked for wrongly. A missing argument is named (crm_run_report: required parameter 'report_id' is missing.), an unknown tool is named (Unknown tool: crm_do_magic). These are for the assistant to correct, and it usually does.
A fault on our side. If our own software fails, the answer says so in plain words, says whether the CRM was asked at all, and asks you to retry once before reporting it. It never hands you a programming error as if it were an answer.
7. Security
Your password is never stored. You type it once on our sign-in page; it is used immediately to ask 1CRM for a token in your name, and then it is gone. What is stored on our side is the CRM’s token, plus the permission you granted — and the connector’s own access key is stored only as a one-way hash, so the value that can open your CRM exists in exactly one place: inside your MCP client on your own machine.
Access expires and can be ended. The access key is valid 24 hours; the client renews it silently for up to 90 days, after which you sign in again. You can end access in three ways: remove the connector in your assistant (a client that speaks the standard revocation protocol tells us, and we verified that door works: after it is used, both the access key and its renewal key are dead); ask your administrator to end it; or change your 1CRM password, which ends every connector permission issued before the change. The password route is the one entirely in your own hands.
One connection, one CRM. A key issued for one address is refused on another, by name: “This bearer was issued for a different CRM instance than <this address> serves; reconnect on the connector for this host.” Nothing of the other system is read on the way to that answer. (We measured this between two of our own test addresses.)
What is written down. Every tool call is journaled for 30 days, and an administrator can read it in the Admin screen of the web app at your connector address (https://your-crm.example.com/app, tab Tool calls). It is a plain table, one row per call, newest first.

needs_confirmation; the one above it, a second later, is the confirmed write, marked ok. Every other row, and the confirmation token itself, is blurred. On a phone this one is too small to read in place: tap it to open it full size.Each row holds: which session, which person, which tool, the arguments the assistant sent (so a name or a search word you asked about is visible there), how long it took, and whether it succeeded, was refused, or was only a preview awaiting your confirmation. Note what is not there: the records that came back are not stored, and no password or access key is written anywhere — the journal holds no sign-in headers at all, and where our diagnostic log records a request the sign-in header is replaced before the line is written. The journal deletes itself after 30 days.
8. Troubleshooting: the five things that go wrong
1. “The assistant says it cannot see my CRM.”
Almost always the connector was switched on after the conversation began. Start a new conversation. If the tools are still missing, check in Settings → Connectors that the connector is there and switched on, and that you completed the sign-in in §2.3 — a connector added but never signed in has no permission and can do nothing.
2. “It asks me to sign in again, or says the token is invalid.”
Two different messages, two different cures. Invalid or expired token means the permission ended: your 1CRM password was changed (sign in again with the new one), or the permission was revoked, or it simply ran out. “This bearer was issued for a different CRM instance than … serves; reconnect on the connector for this host” means the connector was set up against another company’s address — check the address in §2.1 with your administrator.
3. “It says it cannot open a module — but I can see it in 1CRM.”
You are probably not looking at the same login. The connector uses the 1CRM user you typed on the sign-in page; if that is a different account from the one your browser is logged in with, the rights differ. If it is the same account, the message is 1CRM’s own answer and the cure is a role change by your administrator. Rights are re-read at least every 60 seconds, so the change takes effect within a minute — no reconnecting needed.
4. “It refuses to create anything.”
The message says this connection was authorised for read-only access (scope crm.read). The tick box on the sign-in page was left unticked. Remove the connector, add it again, and tick Allow … to create and change records. If there was no box on the page at all, then either your assistant asked for read-only access or your CRM has writing switched off for connectors — your administrator can tell you which, and only they can change the second.
5. “Wrong password, and now it will not even let me try.”
A wrong user name or password gets the plain answer, in red at the top of the same page: “Invalid 1CRM credentials. Please try again.”

Keep trying and the page starts pausing that user name, with the wait written out and growing each time:
Too many failed sign-ins for this user name. Signing in is paused for another 3 seconds — wait, then try again.
Wait the number of seconds it prints, then try again. The pause is on the user name, and it clears as soon as a sign-in succeeds. If you have forgotten the password, reset it in 1CRM first — and remember that resetting it also ends any connector you already had (§7), so you will be signing that one in again too.
Measured on a DanmarCRM test system on 18 September 2026, with test records only. Screens in your own system will show your own data.