mcp-creatio
An MCP server that connects AI clients to Creatio CRM data, schema, processes, settings, and permissions.
Query data — list entities, inspect schemas, and
readrecords with structured filters (AND/OR, ranges, text match, lookups by name or id), sorting, pagination, expands, and total counts.CRUD records — create, update, and delete records (with soft-delete guidance and read-only mode support), on either the DataService or OData backend.
Run business processes — execute Creatio workflows by schema name with parameters.
Manage system settings — read values/metadata, set values, create new settings, and edit setting definitions (type, cache flags, lookup references).
Manage feature toggles — list/inspect features, enable/disable by default or per user/role, and refresh the cache.
Manage system operations & permissions — create/update/delete
SysAdminOperationrows and grant/revoke them for users and roles.Extras — get current user info (owner/author IDs, time zone), open-record links, record attachments, optional DataForge semantic tools, and Global Search.
Escape hatch — call any configuration REST service method when no dedicated tool fits.
Flexible deployment — stdio or HTTP transport with broker, delegated, gateway, client-credentials, or legacy auth, plus Docker.
Enables GitHub Copilot to access and manipulate Creatio data via MCP tools, including reading, creating, updating, deleting records, and managing business processes and system operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-creatio create a new contact named John Doe"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Creatio Server
Model Context Protocol (MCP) server for Creatio — connect Claude Desktop, ChatGPT, GitHub Copilot, and other AI tools to your Creatio data, schema, and processes.
Also discoverable as: Creatio MCP server · MCP server for Creatio CRM · Model Context Protocol for Creatio.
Contents
Related MCP server: Microsoft Business Central MCP Server
What it does
CRUD + schema — read, create, update, delete records; list entity sets; inspect schemas.
Business processes — run Creatio workflows with parameters.
System settings — read, write, and manage system-setting metadata.
Feature toggles — list, inspect and switch features from every source (DB,
web.config, metadata,GlobalAppSettings), by default or per user/role, like the Creatio feature page (DataService backend). On the OData backend only DB-backedFeaturerows are reachable.System operations — manage
SysAdminOperationand per-user/role grants (OData blocks these tables, so dedicated tools are provided).Custom services — invoke any configuration-package REST service (
/0/rest/<service>/<method>) when no dedicated tool fits.Selectable data backend — Creatio DataService (default) or OData v4 (
CREATIO_MCP_CRUD_BACKEND).Optional semantic layers — DataForge and Global Search tools auto-register when the instance supports them.
Works with Claude Desktop, ChatGPT Connectors, GitHub Copilot, and any MCP-compatible client.
Quick start
The server runs in one of two transports. Pick by how your client connects, then pick an authentication method.
stdio (single-user, local)
For clients that launch a command directly (VS Code MCP, Claude Desktop). Single Creatio identity per process; authenticate with client credentials or legacy login.
npx -y mcp-creatio@latest \
--base-url https://your-creatio.com \
--login your_login --password your_password// VS Code / Claude Desktop (command-based)
{
"creatio": {
"command": "npx",
"args": [
"-y",
"mcp-creatio@latest",
"--base-url",
"https://your-creatio.com",
"--login",
"your_login",
"--password",
"your_password",
],
},
}stdio logs are silent by default — enable with
--log-level infoorCREATIO_MCP_LOG_LEVEL.
HTTP (multi-user, hosted)
For clients that connect by URL, and for multi-user / hosted deployments. This transport serves the
broker, delegated, and gateway auth modes (see Authentication).
npm start # serves http://localhost:3000/mcp{ "creatio": { "type": "http", "url": "http://localhost:3000/mcp" } }Authentication
One unified selector — CREATIO_MCP_AUTH_MODE — picks how a request proves its Creatio identity.
When unset it is inferred from the credentials you provide. The HTTP modes are multi-user; stdio is
single-user.
Mode | Transport | How identity is established | When to use |
| HTTP | The MCP is its own OAuth server: it walks the user through Creatio login and holds their tokens | Standalone direct clients (Claude Desktop / ChatGPT) — connect → authorize → work as you |
| HTTP | The client brings a Creatio token; the MCP validates expiry and passes it through | Clients that obtain a Creatio token themselves / behind an external AS |
| HTTP | A trusted Control-Plane injects the token per request | Behind the Creatio.ai Control-Plane (multi-tenant) |
| stdio / HTTP | One service account ( | M2M / single service identity |
| stdio / HTTP | One user (login / password) | Local / legacy instances |
The MCP issues Creatio tokens of its own only in
brokermode (where it must, to drive the login).delegated/gatewaypass tokens through;client_credentials/legacyuse a single server-side identity.
Trust model.
delegatedandgatewayare fully-trusted-environment modes: the MCP does NOT cryptographically verify the incoming Bearer — Creatio remains the authority and rejects bad tokens on the API call — so the request'suserKeyis an unverified, logging-only identity. Run them only where the caller is trusted (gateway: behind the Creatio.ai Control-Plane;delegated: a trusted client on a trusted network / your own proxy). For an untrusted direct external client that needs the MCP itself to verify identity, usebroker— there the MCP issues and verifies its own audience-bound (aud/iss) tokens.
broker — the "connect & authorize" UX for direct clients
The MCP acts as an OAuth 2.1 authorization server for its clients (dynamic registration, authorize, token) and brokers the actual login to Creatio via authorization_code with PKCE. The client only ever talks to the MCP, so this works even though Creatio offers no dynamic client registration — and the client never needs to reach Creatio's TLS endpoint directly.
The tokens the MCP issues to clients are audience-bound (aud = this deployment's /mcp
resource, iss = its origin), so a token minted by one deployment is rejected by another even when
they share a secret. The MCP also supports the refresh_token grant (rotating), so a client
gets a fresh access token without re-running the browser flow every hour — for as long as the MCP
still holds that user's Creatio tokens.
CREATIO_MCP_AUTH_MODE=broker
CREATIO_CLIENT_ID=your_creatio_oauth_app_client_id # the Creatio "On behalf of a user" app
CREATIO_MCP_JWT_SECRET=a-long-random-secret-min-32 # signs the tokens the MCP issues to clients
# CREATIO_CLIENT_SECRET=... # only for a confidential Creatio app (omit for public/PKCE)
CREATIO_MCP_JWT_SECRETmust be at least 32 characters (HS256 security rests entirely on its entropy — a shorter value is rejected at startup). In production (NODE_ENV=production) it is required (the server fails closed if unset). Outside production an unset secret yields a random one so a local run needs no setup — but the tokens the MCP issues are then invalidated on every restart and are not valid across multiple instances, so set a stable secret for production or any horizontally-scaled deployment.
Persistence / horizontal scaling (broker holds users' Creatio tokens). By default those tokens live in-process — fine for a single instance, but lost on restart and not shared across replicas. For production set a Redis token store: tokens are encrypted at rest (AES-256-GCM) and survive restarts, so the broker becomes stateless and horizontally scalable.
CREATIO_MCP_TOKEN_STORE=redis
CREATIO_MCP_REDIS_URL=redis://your-redis:6379
# CREATIO_MCP_TOKEN_ENC_KEY=... # optional; encryption key, else derived from CREATIO_MCP_JWT_SECRETLogout / revocation. The broker exposes an RFC 7009 POST /revoke endpoint (advertised as
revocation_endpoint in the AS metadata): presenting an issued token revokes the user's Creatio
token upstream (/connect/revocation, best-effort) and purges the server-side Creatio tokens and
issued refresh tokens. It always answers 200 (no token-validity oracle).
Register the Creatio app in System Designer → OAuth 2.0 applications → On behalf of a user, and
add the MCP callback (http://localhost:3000/oauth/callback for a local run) to its redirect URIs.
OAuth scope (older Creatio versions)
If the login succeeds but every tool call (e.g. get-current-user-info) returns 401, your
Creatio predates the AddApplicationAccessScopeAutomatically feature: tokens are only usable when
the request explicitly asks for the app's resource scope. Find it in the OAuth resource lookup
(ApplicationAccess_<id>) and set:
CREATIO_OAUTH_SCOPE=ApplicationAccess_<id> # space/comma-separated; offline_access is always addedIt applies to every OAuth mode: broker requests it on login and refresh, delegated advertises it
in its RFC 9728 metadata (so the client requests it), and client_credentials sends it on the token
request. An invalid scope value fails at startup.
delegated (default when nothing else is set)
Pure resource server: each /mcp request must carry a Creatio access token; the MCP advertises the
authorization server (Creatio Identity) via RFC 9728 and challenges unauthenticated requests, so
the client logs in directly against Creatio. Needs no server-side credentials. The token is passed
through unverified (Creatio is the authority) — a trusted-environment mode (see the trust note
above).
What the client sends. The MCP client attaches the Creatio access token as a Bearer header
on every /mcp request. In a client that supports static headers:
{
"creatio": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": { "Authorization": "Bearer <CREATIO_ACCESS_TOKEN>" },
},
}Server side, just select the mode (no credentials needed):
CREATIO_MCP_AUTH_MODE=delegated
CREATIO_BASE_URL=https://your-creatio.comA request with no Authorization header gets 401 with a WWW-Authenticate challenge pointing
at Creatio Identity (RFC 9728), so a compliant client knows where to log in.
Forwarding a Creatio session cookie instead of a Bearer. A client that authenticated to Creatio the classic way holds a Forms-auth session (cookie +
BPMCSRF), not an OAuth token. It can forward that session instead of a Bearer by sending the cookie inX-Creatio-Cookie(and, optionally, the anti-forgery token inX-Creatio-Bpmcsrf— otherwise it is read from the cookie). The MCP attachesCookie+BPMCSRF+ForceUseSessionstatelessly and lets Creatio validate it.Authorization: Bearertakes precedence when both are present.
gateway
A trusted fronting service (Creatio.ai Control-Plane) injects the credential; the MCP trusts and uses
it. The optional X-Creatio-Base-Url header routes a request to a specific Creatio instance
(multi-tenant) — honored only in this mode. Because that override decides where the request's
credential is sent, it is validated: set CREATIO_MCP_ALLOWED_BASE_URLS (comma-separated origins)
to restrict it to your tenants. When unset, any http(s) host is accepted (trusting the gateway)
except the cloud-metadata link-local address, which is always blocked (SSRF guard).
Who sends what. Unlike delegated, the end client talks to the gateway, not to the MCP — so
the gateway is what injects the per-request headers. On each forwarded /mcp call it sends a
Creatio credential — either a Bearer token, or a forwarded Forms-auth session:
POST /mcp HTTP/1.1
Authorization: Bearer <CREATIO_ACCESS_TOKEN> # a Bearer token …
X-Creatio-Cookie: BPMCSRF=<csrf>; .ASPXAUTH=<s> # … OR forward a Forms-auth session instead
X-Creatio-Base-Url: https://tenant-a.creatio.com # optional — pick the tenant's instance (multi-tenant)Server side:
CREATIO_MCP_AUTH_MODE=gateway
CREATIO_BASE_URL=https://default-creatio.com # fallback when no X-Creatio-Base-Url
CREATIO_MCP_ALLOWED_BASE_URLS=https://tenant-a.creatio.com,https://tenant-b.creatio.com # SSRF allowlistSmoke-test it directly with curl (mint a token out-of-band first):
curl -sS http://localhost:3000/mcp \
-H "Authorization: Bearer $CREATIO_ACCESS_TOKEN" \
-H "X-Creatio-Base-Url: https://tenant-a.creatio.com" \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get-current-user-info","arguments":{}}}'Bearer or session cookie — nothing else. The gateway injects either a Creatio OAuth Bearer token or a forwarded Forms-auth session (
X-Creatio-Cookie+BPMCSRF); the MCP forwards it statelessly (no cookie jar, no per-credential pool) and Creatio validates it. The gateway owns auth — it should hold a ready Creatio credential of one of those two shapes. Other shapes (Basic, API key) are intentionally out of scope.
Per-tenant tool isolation. A single MCP deployment serving many instances keeps each tenant's tool surface separate, keyed by the effective base URL (
X-Creatio-Base-Url, elseCREATIO_BASE_URL). Optional capabilities are probed per tenant and the tools they expose (DataForge, Global Search, and any dynamically discovered per-instance tools) are registered only for the tenant they were discovered on. Tenant A's tools or DataForge verdict never leak into tenant B's session, even though both share one process. The per-tenant state is pooled with idle-TTL + LRU eviction, so memory stays bounded as the number of distinct instances grows. Single-tenant modes (everything exceptgatewaywith an override) all map to one bucket, so their behavior is unchanged.
client_credentials / legacy
CREATIO_CLIENT_ID=your_client_id # client_credentials
CREATIO_CLIENT_SECRET=your_client_secret
CREATIO_LOGIN=YourLogin # legacy
CREATIO_PASSWORD=YourPasswordPrecedence: an explicit
CREATIO_MCP_AUTH_MODEalways wins. When unset, the mode is inferred: legacy (login+password) → client_credentials (id+secret) → delegated.broker,delegatedandgatewayrequire HTTP transport (stdio has no incoming web request to authenticate).
Configuration
Grouped from essential to optional. CREATIO_BASE_URL is the only always-required value —
nothing works without it; the rest depend on the auth method and the features you enable.
Connection (required)
Variable | Description |
| Required. Creatio instance URL (e.g. |
Authentication (pick one method — see Authentication)
Variable | Mode | Description |
| any |
|
| broker / M2M | Creatio OAuth app client id (the brokered app, or the M2M account) |
| broker? / M2M | Required for client_credentials; optional for a confidential broker app (omit for public/PKCE) |
| broker | Secret signing the tokens the MCP issues to clients. Min 32 chars; required in production. Random if unset outside prod (set a stable value for prod / multi-instance) |
| gateway | Optional — comma-separated allowlist of Creatio origins the |
| legacy | Username / password |
| any | Optional — Identity Service URL; defaults to |
| OAuth modes | Optional — extra Creatio OAuth scopes (space/comma-separated), e.g. |
Data & behavior (optional)
Variable | Description |
| CRUD data API: |
|
|
|
|
|
|
Transport & runtime (optional)
Variable | Description |
| Docker only: |
| HTTP listen port (default |
| Log verbosity: |
| Optional — proactive session keep-alive interval (seconds) for |
| Optional — the deployment's public origin (e.g. |
Disabling optional capabilities. DataForge and Global Search are auto-detected at startup and registered only when supported. Set
CREATIO_MCP_DISABLE_DATAFORGE=true/CREATIO_MCP_DISABLE_GLOBAL_SEARCH=trueto skip the probe and the tools — useful to keep the tool surface small even when the capability exists.
CRUD backend
CRUD tools (read, create, update, delete, list-entities, describe-entity) run on a
selectable data API, chosen once per deployment via CREATIO_MCP_CRUD_BACKEND:
dataservice(default) — Creatio's native DataService.odata— Creatio OData v4. Also enables the OData-onlyreadextras (raw$filter,expand).
Either way you query through the same tool surface: prefer the structured filters parameter — it
works unchanged on both backends.
Dates and time zones
Record dates work in the user's Creatio time zone, exactly as the Creatio UI shows them, on both
backends. A date/time is read as that zone's wall clock labelled with its offset
("2026-11-10T15:00:00+02:00"); a value sent without an offset ("2026-11-10T15:00:00") means that
wall clock, and one with Z or an offset is that exact instant. Date columns (BirthDate) read and
write as YYYY-MM-DD and are never shifted. The zone comes from the user's Creatio profile
(daylight saving is applied per date), get-current-user-info returns it as timeZone / utcOffset,
and the server tells the model this on connect (MCP instructions).
Tools
Tool | Description |
| Fetch the Creatio contact details for the authenticated MCP user, with the time zone record dates use ( |
| List all available entity sets |
| Get schema for an entity (fields, types, keys). Routes through DataForge for richer column details when it is enabled, otherwise exact OData |
| Query records: filters, select, expand, ordering, pagination (skip/top) and total count |
| Create a new record |
| Update an existing record |
| Delete a record |
| Run a Creatio business process |
| Read current values and metadata for one or more system settings |
| Update one or more system setting values |
| Create a new system setting (with optional initial value) |
| Modify system setting metadata (name, value type, cache flags, lookup reference) |
| Step-by-step usage guides the model reads before multi-step work (querying, activities, dates, people, tags, settings, features, permissions) |
| Link that opens a record in Creatio (Creatio picks the classic or Freedom UI page); built locally, no request |
| A record's attachments (files and links) from both storages ( |
| DataService backend. List feature toggles from every source with their default and current-user state; paged by |
| DataService backend. One feature with its per-user/role overrides |
| DataService backend. Enable/disable a feature by default or for a user/role ( |
| Invalidate the in-memory feature-toggle cache. Call after editing |
| Create or update a |
| Delete one or more |
| Grant or revoke a system operation for users/roles. Repeated calls update the existing row instead of duplicating |
| Remove specific grant rows by Id. Prefer |
| Escape hatch: invoke any configuration-package REST service method by name. Use only when no dedicated tool covers the operation |
Querying data with read
Ask for exactly the data you need — the AI doesn't have to know OData:
Filter any way — equals / not-equals, ranges, text match (
contains,starts/ends with),AND/ORgroups, and "in this list".Filter by related records naturally — by name (
Contact.Name = "Andrew Baker") or by id.Sort, paginate (page size + offset), and count matches in one call.
Pull in related data in a single request (e.g. an order with its account and contact).
Readable results — an empty value is
null, a lookup reads as{ value, displayValue }, and a mistyped entity or column comes back with "Did you mean …?".
Guidance for the model. On connect the server sends MCP instructions (the date contract, which
id a person field takes, when to confirm, which guide to read). The guides — querying, creating
activities, dates, people, tagging, system settings, feature toggles, system operations — are both
prompts the user can invoke (/query-guide, …) and a get-guide tool the model calls itself (most
clients never let the model open prompts). Every tool also carries MCP annotations (read-only /
destructive / idempotent) so clients can run reads without asking and confirm destructive calls.
DataForge tools (registered only when DataForge is enabled)
DataForge is Creatio's AI-oriented semantic layer over the data model. These tools are probed once
and registered only when the environment has DataForge configured (a non-empty
DataForgeServiceUrl system setting). When DataForge is absent the tools are not exposed, and
describe-entity uses the active backend's schema.
Tool | Description |
| Semantic search: map a natural-language query to the Creatio tables that best match its meaning |
| Like |
| Find the relationship path(s) between two tables (how they join) — useful before |
| Fuzzy/semantic search for lookup values (resolve a phrase to the right lookup record Id) |
| Report whether DataForge is online and whether the data model / lookups are synced |
Discovery → confirm → act: use dataforge-similar-tables to find the right entity, then
describe-entity for the authoritative field list, then read/create.
Enabling DataForge (Creatio side): the DataForgeServiceUrl system setting plus IdentityServer
settings (IdentityServerUrl, IdentityServerClientId/Secret), the DataForge* feature toggles,
and the CanReadDataStructureColumnDetails operation granted to the MCP user. Restart the app pool
(or run DataStructureTransferFromCreatio / LookupsTransferFromCreatio) to sync the model.
Global Search tool (registered only when Global Search is enabled)
Global Search is Creatio's cross-entity, Elasticsearch-backed record search — the engine behind the
UI search box. Probed once, registered only when GlobalSearchUrl is configured.
Tool | Description |
| Full-text search across all indexed entities. Input: |
Differs from read: read needs an exact entity + filter; global-search is fuzzy and
cross-entity — use it to locate a record when you don't know the entity.
Enabling Global Search requires the GlobalSearchUrl (+ GlobalSearchConfigServiceUrl,
GlobalSearchIndexingApiUrl) system settings and the GlobalSearch / GlobalSearch_V2 feature
toggles, with the section index built (Elasticsearch reachable).
Docker
The image supports both transports, selected by CREATIO_MCP_TRANSPORT (default http).
HTTP (remote / hosted / multi-client — defaults to delegated Bearer auth):
docker run --rm -p 3000:3000 \
-e CREATIO_BASE_URL="https://your-creatio.com" \
-e CREATIO_MCP_AUTH_MODE=delegated \
crackish/mcp-creatiostdio (local client that spawns the process — note -i; use client-credentials or legacy auth):
docker run -i --rm \
-e CREATIO_MCP_TRANSPORT=stdio \
-e CREATIO_BASE_URL="https://your-creatio.com" \
-e CREATIO_LOGIN="YourLogin" -e CREATIO_PASSWORD="YourPassword" \
crackish/mcp-creatioAvailable Tools
24 toolscall-configuration-serviceCall a configuration serviceADestructive
Escape hatch: call any configuration-package REST method (/0/rest//) when no dedicated tool covers the task — those validate input and explain their effects, so prefer them. The method may change data. Response: { status, contentType, body } (JSON parsed).
Inputs: method (required), service (required), body, query, +1 more.
createCreate a recordA
Create one record: { entity, data } → the new record's id. Check required columns and types with describe-entity first; send only the columns you set. Owner/author lookups (OwnerId, AuthorId, …) of records the user creates for themselves get their contact id — userInfo.contactId from get-current-user-info — unless the user names someone else (get-guide: contactid-guide). Activities (tasks, meetings, calls): follow get-guide: create-activity-guide. Tags: get-guide: tagging-guide. An unknown column fails as "unknown_column:X (Entity). Did you mean: …?". Example: { entity: "Account", data: { Name: "Acme Corp", Phone: "+1 234 567", OwnerId: "" } }.
Inputs: data (required), entity (required).
create-sys-settingCreate a system settingB
Create a new system setting (its definition) and optionally set its first value. Value types and lookup settings: get-guide: sys-settings-guide.
Inputs: definition (required), initialValue.
deleteDelete a recordADestructiveIdempotent
Permanently delete one record by id. Confirm with the user first: say which record (entity, name, id) will be deleted and wait for an explicit yes. Related records may block the delete (Creatio then reports a reference error) or be removed with it, depending on the object.
Inputs: id (required), entity (required).
delete-admin-operationDelete system operationsADestructiveIdempotent
Delete system operations by id, together with their grants. The generic delete tool is blocked for this table. Confirm with the user first. See get-guide: admin-operation-guide.
Inputs: ids (required).
delete-admin-operation-granteeRemove system operation grantsADestructiveIdempotent
Delete grant rows by id, so the operation is neither allowed nor denied explicitly for those users/roles. To switch allow ↔ deny use set-admin-operation-grantee.
Inputs: ids (required).
describe-entityDescribe an entityARead-only
Columns of one entity ({ entity: "Contact" }) — names, types, required/nullable and its key — to plan a read or a write without guessing column names. Response: { source, entitySet, ... } where source is "dataforge" (richer column details, when DataForge is enabled), "dataservice" or "odata" (the active backend's schema). An unknown entity fails as "unknown_entity:X. Did you mean: …?".
Inputs: entity, entitySet.
execute-processRun a business processADestructive
Start a Creatio business process by its schema name, with optional parameters, and return its result. A process can change any data it is designed to — make sure the user wants it run. User/contact parameters take a contact id (get-guide: contactid-guide).
Inputs: processName (required), parameters.
get-current-user-infoGet the current Creatio userARead-only
Returns the Creatio user this server acts as: { success, userInfo: { id, contactId, contactName, email, cultureInfo, timeZone, utcOffset, now, today, userRoles, ... } }. Call it once before creating records owned by the user — owner/author lookups (OwnerId, AuthorId) take userInfo.contactId, not userInfo.id — or when a tool needs the user as a user/role (adminUnitId = userInfo.id). Also call it once when dates matter: now / today are the user's current date and time, the base for tomorrow, this month or overdue. Reuse the result for the rest of the conversation. timeZone (IANA, e.g. "Europe/Kyiv") and utcOffset (today's, e.g. "+02:00") are the user's Creatio time zone — the one record dates are read and written in (get-guide: datetime-guide). See get-guide: contactid-guide.
Inputs: no named parameters.
get-featureGet a feature toggleARead-only
One feature (fields as in list-features) plus overrides: [{ adminUnitId, adminUnitName, enabled }] — the users/roles whose state differs from the default. Unknown code: feature_not_found:.
Inputs: code (required).
get-guideRead a usage guideARead-only
Step-by-step guidance for multi-step Creatio work — read the matching guide before such a task, once per conversation. Topics: query-guide (How to find the right entity and columns, read with filters / related columns / sorting / paging / counting, and present results with record links and attachments); create-activity-guide (Tasks, meetings and calls: owner, type and category ids, times, participants, and confirming to the user); datetime-guide (How record dates follow the user’s Creatio time zone, with write, filter and read examples); contactid-guide (Which id a person field takes (a Contact id for owners/authors, a SysAdminUnit id for users and roles in permissions) and how to get the current user and other people); tagging-guide (Adding, listing and removing tags in the object’s own tag list or Creatio’s shared tags, and choosing between them); sys-settings-guide (Finding, creating and changing system settings: value types, lookup settings, definitions); feature-toggle-guide (Listing, inspecting and changing feature toggles (default state and per-user/role overrides) on the DataService and OData backends); admin-operation-guide (Creating system operations (SysAdminOperation) and granting or denying them to users and roles). Returns the guide as Markdown.
Inputs: topic (required).
get-record-urlGet a link to a recordARead-only
{ url } that opens the record in Creatio; Creatio picks the right page (classic or Freedom UI). Give it to the user whenever you refer to a specific record. A signed-out visitor goes through login first; an object without a record page opens the home page. Built locally — no request to Creatio.
Inputs: id (required), entity (required).
list-entitiesList entitiesARead-only
Entity (object schema) names available to this server — 1000+ in all, so pass search (e.g. "invoice" → Invoice, InvoiceProduct, …). To find an entity by meaning prefer dataforge-similar-tables or global-search when they are in your tool list. Response: { results: [names] }. Then describe-entity.
Inputs: search.
list-featuresList feature togglesARead-only
Feature toggles from every source — DB rows and also web.config, package metadata and GlobalAppSettings features — ordered by code. Each: { code, name, description?, source, enabledByDefault, enabledForCurrentUser }. Response: { items, hasMore } — page with skip while hasMore is true. Per-user/role overrides of one feature: get-feature. See get-guide: feature-toggle-guide.
Inputs: top, skip, search, source, +1 more.
list-record-filesList a record's attachmentsARead-only
Files and links attached to one record, from both places Creatio keeps them (the object's File table and SysFile), newest first. Response: { files: [{ id, name, kind: "file" | "link" | "object-link", size, createdOn, storage, downloadUrl? (files), url? (links) }], hasMore }. Metadata only — the content is never read. downloadUrl works in the user's signed-in Creatio browser session: give it to the user, you cannot fetch it.
Inputs: id (required), entity (required), top.
query-sys-settingsRead system settingsARead-only
Current values and metadata of system settings by code. Response: the platform's answer — a success flag, a values map by code (each with its value) and notFoundSettings for unknown codes. See get-guide: sys-settings-guide.
Inputs: sysSettingCodes (required).
readRead recordsARead-only
Query records of one entity: filter, pick columns, sort, page, count. Find the entity first if unsure (dataforge-similar-tables, global-search, list-entities) and check its columns with describe-entity. select also takes related columns by path (Account.Name); a lookup column (Account) returns { value, displayValue }. filters take a column, a lookup id (OwnerId = a GUID) or a related column (Account.Name). top defaults to 50; page with skip + a stable orderBy; count: true adds the total of all matches ({ total, value }) to any page — top: 1 with orderBy gives the total and the first row in one call, top: 0 the total alone. Response: an array of rows; a missing value is null (text may be ""); a date/time is in the user's Creatio time zone with its offset ("2026-11-10T15:00:00+02:00"), a Date column "YYYY-MM-DD". An unknown entity or column fails as "unknown_column:Emial (Contact). Did you mean: Email?" — retry with the suggestion. Example: { entity: "Opportunity", select: ["Title", "Amount", "Stage"], filters: { all: [{ field: "OwnerId", op: "eq", value: "" }] }, orderBy: "Amount desc", top: 10 }. Date filter values follow the same zone ("2026-11-01" = the user's midnight). More patterns: get-guide: query-guide; dates: get-guide: datetime-guide.
Inputs: entity (required), top, skip, count, +3 more.
refresh-feature-cacheRefresh the feature-toggle cacheAIdempotent
Make Creatio re-read feature-toggle states for all users. set-feature-state already does this; use it after changing Feature / AdminUnitFeatureState rows with create / update / delete. See get-guide: feature-toggle-guide.
Inputs: featureCode.
set-admin-operation-granteeGrant or deny a system operationADestructiveIdempotent
Allow or deny a system operation for users/roles. Repeating it for the same operation and user/role updates the existing grant instead of adding another. See get-guide: admin-operation-guide.
Inputs: canExecute (required), adminUnitIds (required), adminOperationId (required).
set-feature-stateTurn a feature toggle on or offADestructiveIdempotent
Change a feature's default state, or override it for one user/role, for features from any source. The first change to a web.config / metadata feature gives it a DB row, which then takes precedence over that source (the Creatio feature page behaves the same). Returns the feature as in get-feature plus cacheCleared. "feature_state_not_applied:" means Creatio did not save it. cacheCleared: false means it IS saved but the instance could not refresh its cache (seen on .NET 8), so it may take effect later — tell the user. See get-guide: feature-toggle-guide.
Inputs: code (required), state (required), adminUnitId.
set-sys-settings-valueSet system setting valuesADestructiveIdempotent
Set the values of one or more existing system settings in one request; returns the platform's answer. System settings can change how the whole instance behaves — confirm the change with the user.
Inputs: sysSettingsValues (required).
updateUpdate a recordADestructiveIdempotent
Change columns of one record by id; columns you leave out keep their values. Resolve lookup ids instead of guessing them (e.g. a new StatusId from ActivityStatus via read); owner/user lookups take a contact id (get-guide: contactid-guide). Example: { entity: "Activity", id: "", data: { StartDate: "2026-03-02T12:00:00", DueDate: "2026-03-02T12:30:00" } } (the user's Creatio time zone).
Inputs: id (required), data (required), entity (required).
update-sys-setting-definitionChange a system setting definitionADestructiveIdempotent
Change a setting's metadata (name, description, value type, cache / personal flags, lookup schema) — not its value (use set-sys-settings-value). See get-guide: sys-settings-guide.
Inputs: id (required), definition (required).
upsert-admin-operationCreate or update a system operationADestructiveIdempotent
Create a system operation (SysAdminOperation) — omit id — or update one by id. The platform blocks the generic create/update tools for this table; reading it works with read. Returns the operation id. See get-guide: admin-operation-guide.
Inputs: code (required), name (required), id, description.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Tool purposes are mostly cleanly separated by resource: generic record CRUD, feature toggles, system settings, admin operations, and processes each form a distinct group. A few near-overlaps remain — delete vs. delete-admin-operation (generic blocked, explained), and refresh-feature-cache vs. set-feature-state (which already clears the cache) — but descriptions disambiguate them well enough.
Everything is uniformly kebab-case with a verb-first pattern (list-entities, describe-entity, set-feature-state, delete-admin-operation-grantee), which is easy to scan. Minor deviation: the generic record tools use bare verbs (read, create, update, delete) while every other tool carries a resource noun, slightly breaking the parallel structure.
24 tools is on the heavy side, but the server covers several genuinely distinct sub-domains (records, processes, files, system settings, feature toggles, admin operations), and each group needs its few operations. No obvious filler except refresh-feature-cache, which is largely a fallback for direct data edits.
Record CRUD, schema discovery, filtering/paging/counting, process execution, feature toggles, system settings, and admin-operation grants are all covered end to end with guides for multi-step work. Gaps are minor: no system-setting deletion, file attachments are list-only (no upload/attach), and feature overrides are removed only via raw record CRUD rather than a dedicated tool.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server enabling AI agents to manage Bitrix24 features via standardized protocol
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that provides AI assistants with direct access to FileMaker databases via OData v4 API, enabling CRUD operations, script execution, and schema introspection.196MIT
- AlicenseAqualityDmaintenanceMCP server for Microsoft Dynamics 365 Business Central that enables AI assistants to query and manage Business Central data via full CRUD operations.61,934 npmMIT
- FlicenseAqualityCmaintenanceMCP server that provides an AI assistant with access to Odoo business data, enabling read operations and human-approved record creation.3-
- AlicenseBqualityDmaintenanceMCP server for Microsoft Dynamics 365 Business Central, enabling AI assistants to perform CRUD operations, query data, and retrieve schemas via Business Central API v2.0.61,934 npmMIT