OUR PRODUCTS
YOUR PATH TO SUCCESS

Connect your AI assistant to your CRM — MCP connector guide

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

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

  1. 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.php and the bare address also work, if your client prefers them.)
  2. 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.

  1. Open Settings → Connectors.
  2. Choose Add custom connector.
  3. Paste the connector address (§2.1) and confirm.
  4. Claude opens a browser window on our sign-in page — that page is ours, and §2.3 describes it.
  5. After you sign in, the browser hands the permission back to Claude and closes. The connector now appears in your list, switched on.
The Add custom connector dialog: a name box and the box where the connector address is pasted.
Step 2. Give the connection a name of your choosing and paste your own connector address (§2.1) — the address here is blurred because this page is public.
The second step of the same dialog: Sign in now is detected, and the OAuth client is registered automatically.
Step 3. Claude reads the address and detects both answers by itself: Sign in now and Register automatically. Leave them as detected; there is nothing to set up here and no request header to add.
The connector after it was added: not connected yet, with a Connect button.
Step 4. The connector is added but not connected yet. Connect starts the sign-in.
The confirmation page: Finish connecting a connector, with Continue connecting and Not now.
Step 5. Claude asks you to confirm that it was you who started this. A link on its own can never connect anything to your account.
The connected connector: twenty-one tools, each of which can be set to ask every time, always allow, or never.
After signing in: the tools the connection was given. Each one can be set to ask you every time, to run without asking, or never to run — and Needs approval is the safest way to start.

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

The connector sign-in page: a heading reading Sign in with your 1CRM account, the name of the program asking for access, the CRM system the address is tied to, boxes for user name and password, and a ticked box allowing that program to create and change records.
The screen as it is really served, photographed on a test system. Everything on these pictures that would name a company, a person or a figure is blurred in the picture file itself, so only the part being explained is readable.

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.

The new account open in the web app: the name Riverside Freight, billing address city Cluj-Napoca, the website, and a created and modified stamp, with the usual New, Edit, Duplicate and Print buttons across the top.
The record from the preview above, opened in the web app a moment after it was confirmed: the same name, the same city, the same website, and a created stamp like any other record’s. On a phone this one is too small to read in place: tap it to open it full size.

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_draft files 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.

The administrator journal of tool calls: a table with columns for session, tool, arguments, status, milliseconds and time. Two rows show the two halves of one write, one marked needs_confirmation and the one above it marked ok.
The journal on a test system. The two readable rows are the two halves of the write in §4.2 — the lower one is the preview, marked 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.”

The same sign-in page after a wrong password, with a red band across the top reading Invalid 1CRM credentials. Please try again. The boxes are empty again and the page is otherwise unchanged.
The same page after a wrong password. The wording does not say whether it was the user name or the password that was wrong — on purpose.

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.