Resco Wiki

Resco MCP server

Resco MCP server connects your AI assistant directly to your Resco Mobile CRM project. Instead of describing what you want and hoping the AI guesses correctly, it gives the AI precise access to your real configuration — forms, views, workflows, sync filters, sync logs, Dataverse metadata, and JSBridge documentation — so it can understand, explain, and help you modify your app with confidence.

image-20260907-120415.png

What's an MCP server anyway?

An MCP server, based on the Model Context Protocol, is a program that provides AI models (like LLMs) with secure, standardized access to external tools, data, and actions to extend their capabilities beyond their training data.

Who is it for?

  • Are you configuring or maintaining a Resco Mobile CRM project (forms, views, home screen, dashboards)?

  • Are you developing JavaScript Bridge solutions and need accurate API references?

  • Are you troubleshooting sync problems and want your AI to read and interpret the actual sync logs?

  • Do you want your AI to understand your exact project — its entities, fields, and relationships — instead of guessing?

How does it work?

Your AI assistant's knowledge is enhanced with:

  • Complete JSBridge API documentation — for accurate offline HTML/JS code generation

  • Your project's data model — entities, fields, types, and relationships from your live Dataverse organization

  • Your project's full configuration — forms, views, dashboards, home screen, calendars, maps, and route plans

  • Workflow logic — your actual workflow XML, explained and validated in plain English

  • Sync configuration and logs — what records sync to devices, and why sync sessions succeed or fail

  • Questionnaire templates — defined in your Dynamics 365 organization

The AI doesn't guess — it reads your actual live configuration before answering.

Get started

  1. Go to Resco Studio website (https://studio.resco.net/) and connect to your workplace using your Microsoft account.

  2. Add the MCP server to your favorite AI tool, including GitHub Copilot, Claude Desktop, Cursor, or ChatGPT. The endpoint is https://mcp.studio.resco.net/mcp.

  3. Start a conversation — the AI will have access to your project's live configuration and all the tools listed below.

Exact configuration steps vary by AI tool. Each tool has slightly different MCP configuration interfaces — see each tool's documentation for instructions on adding a custom MCP server.

Have you been using the old experience of Resco MCP server via Resco Agents (https://agent.resco.net/) with a different authentication mechanism (Bearer authentication)? Transition to Resco Studio; we will be shutting down this server in early October 2026.

Available tools

As of September 7, 2026, Resco MCP includes 84 tools (includes 4 session-init tools that must be called before their toolgroup, and 3 interactive selector/confirmation tools that open a UI rather than fetching data directly).

  • Authentication: Every tool runs over an authenticated MCP HTTP connection.

  • "Requires org?"Yes means the tool reads or writes your live Dynamics 365 / Dataverse / Resco Mobile project data (or an active session tied to it). No means it works entirely from data you pass in or from bundled server-side content. Interactive means the tool opens a selector or confirmation UI rather than fetching or writing data directly.

Documentation

Tool

Description

Requires org?

searchJsBridgeDocumentation

Searches the bundled, version-controlled JSBridge API documentation for relevant functions, event handlers, and usage examples — useful when building or debugging offline HTML/JS customizations.

No

Connections & workspace selection

Tool

Description

Requires org?

getAllConnections

Lists the active Dataverse and Resco Cloud connections the signed-in user can access. Call this first — pass the returned id as connectionId to every other tool.

Yes

selectRescoWorkspace

Opens an interactive Studio connection selector. Use scope connection for connection-scoped work (including creating a new questionnaire); use scope project for project-scoped work such as Woodford.

Interactive

selectQuestionnaireTemplate

Opens an interactive selector for an authorized Studio connection and a specific existing questionnaire template. Call this before acting on an existing questionnaire; not needed when creating a new one.

Interactive

Workflows

Tool

Description

Requires org?

workflowToolsInit

Call this first before using any workflow tool. Returns the acknowledgement key (_initKey) required by the read-only workflow tools.

No

explainWorkflow

Deterministically explains bounded raw Workflow XML you provide (e.g. copied from a form's OnLoad property) — branch-by-branch, in plain English. Does not need to connect to your org.

No

validateWorkflow

Checks a workflow for a specific form or view event and reports structural errors and warnings without saving anything; can also validate hypothetical changes before they are applied.

Yes

getWorkflowEditorModel

Returns a read-only, normalized workflow AST with JSON Pointer addresses for every node — use this to find exactly where a change belongs before calling mutateWorkflow.

Yes

getFormWorkflows

Reads and parses all workflow events (OnLoad, OnSave, OnChange, button commands, etc.) attached to a form, with a plain-English summary of each.

Yes

getViewWorkflows

Reads and parses all workflow rules attached to a list view — row template selection, on-change/save rules, button and cell click rules.

Yes

initializeWorkflowEvent

Initializes a workflow event on a form, view, calendar, or route plan target. Defaults to dryRun=true; set dryRun=false to persist.

Yes

clearWorkflowEvent

Clears a workflow event from a form, view, calendar, or route plan target. Defaults to dryRun=true; set dryRun=false to persist.

Yes

mutateWorkflow

Applies structural edits (add/remove/move branches, conditions, steps, if-blocks) to a workflow via an ordered list of operations. Defaults to dryRun=true; set dryRun=false to persist.

Yes

Forms

Tool

Description

Requires org?

formToolsInit

Call this first before using any form or list tool. Loads the Resco form/list architecture context into the session.

No

getFormStructure

Parses a Resco entity form into its tabs, fields, settings, and active workflow events.

Yes

getFormFieldDetails

Finds one field by schema name and returns its tab, position, style, and grid placement.

Yes

listFormFields

Lists every field schema name on a form, globally and per tab.

Yes

createForm

Creates a new form, optionally cloned from an existing one. Defaults to dryRun=true.

Yes

addFormTab

Adds a tab (detail, associated, iframe, or map) to a form. Defaults to dryRun=true.

Yes

removeFormTab

Removes a tab from a form. Defaults to dryRun=true.

Yes

addFormField

Adds a field to a form tab or grid. Defaults to dryRun=true.

Yes

removeFormField

Removes a field from a form. Defaults to dryRun=true.

Yes

reorderFormField

Repositions a field on a form, optionally moving it to a different tab or grid cell. Defaults to dryRun=true.

Yes

addFormButton

Adds a command button to a form tab. Defaults to dryRun=true.

Yes

addFormSeparator

Adds a visual separator to a form tab. Defaults to dryRun=true.

Yes

addFormGrid

Adds a layout grid to a form tab. Defaults to dryRun=true.

Yes

Lists, views

Tool

Description

Requires org?

getListStructure

Parses a Resco entity list's structure and FetchXML configuration — columns, filters, joins, sort order, row templates, swipe actions.

Yes

getListColumns

Returns the primary and linked (related-entity) columns shown in a list.

Yes

getListFilter

Returns a list's filter, explained in plain English, plus the raw FetchXML condition tree.

Yes

createList

Creates a new list, optionally cloned from an existing one. Defaults to dryRun=true.

Yes

addListColumn

Adds a column to a list. Defaults to dryRun=true.

Yes

removeListColumn

Removes a column from a list. Defaults to dryRun=true.

Yes

updateListFilter

Adds, replaces, or removes filter conditions on a list. Defaults to dryRun=true.

Yes

updateListSort

Sets a list's sort field and direction. Defaults to dryRun=true.

Yes

updateListAllowedFields

Sets which fields a list allows for user-driven filtering and sorting. Defaults to dryRun=true.

Yes

Home screen and UI artifacts

Tool

Description

Requires org?

getHomeScreen

Reads the app home screen structure — every tile/shortcut, how they are grouped, and a summary count by type.

Yes

getDashboardStructure

Parses a named dashboard's grid layout and tile bindings.

Yes

listDashboards

Lists every dashboard with its grid size, tile count, and referenced entities.

Yes

getCalendarStructure

Reads a calendar's entities, event coloring, business hours, view modes, and date range limits.

Yes

getMapStructure

Reads a global map's plotted entities, view/coordinate fields, default center/zoom, and clustering settings.

Yes

getRoutePlanStructure

Reads a route plan's activity entity, date fields, source views, scheduling settings, and active workflow events.

Yes

getTheme

Reads the app's visual theme (AppStyle.rtheme) — resolved color slots, Material Design 3 tokens, image pack, brand color. Returns exists: false if none is set.

Yes

getStyles

Reads named style presets from Styles.rstyle. Returns exists: false if none exist.

Yes

addHomeScreenGroup

Adds a folder/group to the home screen. Defaults to dryRun=true.

Yes

addHomeScreenItem

Adds a tile (entity, dashboard, calendar, map, route plan, iframe, etc.) to the home screen. Defaults to dryRun=true.

Yes

removeHomeScreenGroup

Removes a home screen group. Defaults to dryRun=true.

Yes

removeHomeScreenItem

Removes a home screen tile. Defaults to dryRun=true.

Yes

reorderHomeScreenItem

Repositions a home screen tile, optionally into a different group. Defaults to dryRun=true.

Yes

Dataverse metadata and statistics

Tool

Description

Requires org?

listDataverseEntities

Lists all tables in your Dataverse environment — not just the ones the Resco project uses.

Yes

getDataverseEntityDetails

Returns detailed metadata for one Dataverse table: display name, primary key, ownership type, and optionally fields and related tables.

Yes

dataverse_get_record_counts

Returns approximate record counts (24-hour snapshot) for up to 50 tables.

Yes

dataverse_get_table_stats

Returns record count, metadata, indexes, and Dataverse Search indexing status for one table in a single call.

Yes

dataverse_get_search_statistics

Returns Dataverse Search storage size and indexed document count for the org.

Yes

dataverse_get_search_status

Returns whether Dataverse Search is enabled, lockbox/CMK status, and per-entity indexing status.

Yes

Project and configuration

Tool

Description

Requires org?

listProjects

Lists active root Resco Mobile CRM projects available in Dataverse.

Yes

getProject

Returns one project's details — assigned roles, user type, sync priority, and optionally its entity manifest.

Yes

listConfigurationFiles

Lists every configuration file in a project, grouped by entity and type, with file-level stats.

Yes

getEntityConfiguration

Summarizes everything configured for one entity — tabs/fields per form, columns/filters per view, and charts.

Yes

getProjectOverview

Generates a Markdown report of the whole project's configuration, including a breakdown of the top 10 most-configured entities.

Yes

listEnabledEntities

Lists the entities switched on in the project's configuration — the subset the mobile app actually uses.

Yes

listEntityDetails

Returns the enabled entity/field list enriched with Dataverse display names, descriptions, types, and requirement levels.

Yes

patchEntityConfig

Patches entity, field, permission, conflict, and sync settings in resco.xcrm. Defaults to dryRun=true.

Yes

publishProject

Opens a human-confirmation widget for publishing a project. Never starts publication itself.

Interactive

liveSession

Starts or stops the signed-in user's live preview session for a project.

Yes

remoteConsoleLogs

Reads temporary remote-device console logs from a six-character Resco Pulse slot.

Yes

Project files

Tool

Description

Requires org?

listProjectFiles

Lists deployed Offline HTML/JS/CSS files under the project's www folder.

Yes

getProjectFile

Reads one deployed www file, reassembling chunked files automatically; binary files need forceRead and come back as base64.

Yes

initFileUpload

Creates a one-time, 120-second ticket for a bounded raw project-file upload.

Yes

writeProjectFile

Writes bounded UTF-8 or base64 content directly to a project file under www.

Yes

uploadOfflineHtmlFiles

Opens an interactive, confirmed uploader for local Offline HTML files; file bytes bypass the model context.

Interactive

Sync filters

Tool

Description

Requires org?

syncFilterToolsInit

Call this first before using any sync filter tool. Loads sync filter architecture context.

No

listSyncFilters

Lists every sync filter in the project's SyncFilter.xml, showing the FetchXML query per entity.

Yes

getSyncFilter

Returns the sync filter for one entity, plus optional entity-level sync settings.

Yes

Sync logs

Tool

Description

Requires org?

syncLogToolsInit

Call this first before using any sync log tool. Loads sync log format and analysis guidance.

No

fetchSyncLogs

Lists recent sync sessions — user, timing, result, errors, device configuration summary.

Yes

getSyncLogDetail

Returns the full sync log body (or just its Summary XML) for one session.

Yes

analyzeRawSyncLogs

Runs bounded, deterministic query matching and severity analysis on sync-log text you provide directly. Does not read from your org.

No

Questionnaires

Tool

Description

Requires org?

listQuestionnaireTemplates

Lists the latest version and status of every questionnaire template in the selected connection. (Replaces the retired getAllTemplates tool.)

Yes

getTemplate

Returns one questionnaire template's full definition, including its decompressed JSON content.

Yes

createQuestionnaireTemplate

Creates a new blank, editable questionnaire template. No Resco project required.

Yes

createQuestionnaireTemplateDraft

Returns the selected Draft/Staged template, reuses an editable latest version, or creates a new Draft.

Yes

modifyQuestionnaireTemplate

Atomically applies an ordered batch of edits (groups, questions, static components) to a template, then saves once.

Yes

createQuestionnairePreview

Creates a one-hour browser preview link for one questionnaire record; the preview reflects saved changes live.

Yes

initQuestionnaireScriptUpload

Creates a one-time, 120-second ticket for uploading raw customization JavaScript to a Draft/Staged template.

Yes

Quick reference: tools that work without org access

These 7 tools do not read from or write to your Dynamics 365 organization or Resco project — they work from data you provide or from bundled server content:

Tool

What it works on

searchJsBridgeDocumentation

Bundled JSBridge API documentation

explainWorkflow

Raw Workflow XML string you provide

analyzeRawSyncLogs

Raw sync-log text you provide

formToolsInit

Bundled Resco form architecture knowledge

workflowToolsInit

Bundled Resco workflow architecture knowledge

syncFilterToolsInit

Bundled Resco sync filter architecture knowledge

syncLogToolsInit

Bundled Resco sync log architecture knowledge

Resco Public Test MCP

The Resco Public Test MCP provides AI tools with access to bundled Resco developer knowledge without requiring access to a customer organization. The public endpoint for Resco documentation tools, resources, and prompts without signing in is https://mcp.studio.resco.net/mcp/public.

Public tools

The MCP exposes a documentation search tool for Resco JSBridge.

It can be used to:

  • Search Resco JSBridge documentation

  • Explain JSBridge APIs and concepts

  • Find relevant code examples

  • Help build or troubleshoot JavaScript integrations

  • Work with topics such as:

    • MobileCRM.UI.EntityForm

    • onSave / onChange

    • FetchXml

    • DynamicEntity

    • Metadata

    • form validation

    • custom HTML / React integrations

    • data access from Resco Mobile CRM

Limitations

The public MCP does not provide access to a customer's Resco environment or Dataverse organization.

It cannot currently:

  • List organizations

  • List or open Resco projects

  • Inspect project configuration

  • List enabled entities or tables

  • Read forms, views, or sync configuration from a real project

  • Modify or publish projects

  • Query customer Dataverse data

In short:

Public Test MCP = Resco/JSBridge knowledge for AI

Authenticated Resco Studio MCP = customer organization and real Resco project access

 

Last updated: