| Warning
|
This page describes a function that has not yet been publicly released, or has been released in beta / preview quality. Subject to change.
|
Resco Agents (https://agent.resco.net/) 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.
What's an MCP server anyway?
Wikipedia has an article on a similar subject:
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
- Go to the Resco Agents website and connect to your organization using your Microsoft account.
- Add the MCP server to your favorite AI tool, including GitHub Copilot, Claude Desktop, Cursor, or ChatGPT. Include
Authorization: Bearer <your-token> in the header.
- Start a conversation — the AI will have access to your project's live configuration and all 45 tools listed below.
Exact configuration steps vary by AI tool. Tools have slightly different MCP configuration UIs — see each tool's documentation for instructions on adding a custom MCP server.
Available tools
As of April 2, 2026, Resco MCP includes 45 tools (includes 4 session-init tools that must be called before their toolgroup)
> Authentication: Every tool runs over an authenticated MCP HTTP connection using Authorization: Bearer <token>.
> "Requires org?" — Yes means the tool reaches into your live Dynamics 365 / Dataverse organization or Resco Mobile project to fetch data. No means it works entirely from data you pass in or from bundled server-side content.
Documentation
| Tool |
Description |
Requires org?
|
| searchJsBridgeDocumentation |
Lets you ask a question or enter a keyword and searches the full JSBridge API documentation to find relevant functions, event handlers, and usage examples — useful when building or debugging offline HTML/JS customizations. |
No
|
Workflows
| Tool |
Description |
Requires org?
|
| workflowToolsInit |
Call this first before using any workflow tool. Loads the Resco workflow system context (how events, branches, conditions, and actions are structured) into the session and returns an _initKey that all other workflow tools require. |
No
|
| explainWorkflow |
Give it any raw Workflow XML string (e.g. copied from a form's OnLoad property) and it returns a plain-English, branch-by-branch explanation of what the workflow does — including conditions, actions, and JavaScript references. 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. You can also pass in a list of hypothetical changes to validate before actually applying them. |
Yes
|
| getWorkflowEditorModel |
Returns the internal tree structure (AST) of a workflow with precise path addresses (_pointer) for every node. Use this to understand exactly where in the workflow tree a change needs to be made before calling mutateWorkflow. |
Yes
|
| getFormWorkflows |
Shows all automation logic attached to a Resco entity form — OnLoad, OnSave, OnChange, button commands, etc. — with a human-readable summary of conditions and actions for each event. |
Yes
|
| getViewWorkflows |
Shows all rule handlers attached to a Resco entity view — row template selection rules, on-change/save rules, button and cell click rules — with a plain-English summary of each. |
Yes
|
Forms
| Tool |
Description |
Requires org?
|
| formToolsInit |
Call this first before using any form tool. Loads the Resco form architecture context (tab structure, field types, XML format) into the session and returns an _initKey that all other form tools require. |
No
|
| getFormStructure |
Returns the complete layout of a Resco entity form: every tab, every field (with its position, style, and type), separators, action buttons, grids, layout settings (flexi/fullscreen), and which workflow events are active. |
Yes
|
| getFormFieldDetails |
Look up a single field by its schema name (e.g. telephone1) and find out exactly where it lives on the form — which tab, what position, whether it is read-only, its visual style, and which lookup views it uses. |
Yes
|
| listFormFields |
Returns a simple flat list of every field schema name on a form, plus a breakdown per tab. Useful as a quick inventory before adding, removing, or repositioning fields. |
Yes
|
Lists, views
| Tool |
Description |
Requires org?
|
| getListStructure |
Returns the full definition of a Resco entity list (the mobile record list screen): which columns are shown, filters, related-entity joins, sort order, row template bindings (what each row cell displays), swipe button actions, and list-level settings. |
Yes
|
| getListColumns |
Returns a simple list of columns shown in a Resco entity list, identifying each column's field name and whether it comes from the main entity or a related (linked) entity. |
Yes
|
| getListFilter |
Shows what filter is applied to a Resco entity list — explained in plain English (e.g. "active records where status is Open") plus the raw FetchXML condition tree if you need the technical detail. |
Yes
|
Home screen and UI artifacts
| Tool |
Description |
Requires org?
|
| getHomeScreen |
Returns the full structure of the Resco app home screen: every tile and shortcut visible to users (entities, dashboards, calendars, maps, iframes), how they are grouped into folders, and a summary count by type. |
Yes
|
| getDashboardStructure |
Returns the layout and content of a Resco dashboard: the grid dimensions, and for every tile — what entity list or chart it shows, its position and span, display options, and iframe URLs. |
Yes
|
| listDashboards |
Lists every dashboard configured in the project with its name, grid size (e.g. 2×2), number of tiles, and which entities are referenced — useful for a quick inventory. |
Yes
|
| getCalendarStructure |
Returns the full setup of a Resco calendar: which entities populate it, how events are colored, business hours and days, which view modes (Day/Week/Month/Agenda) are enabled, and date range limits. |
Yes
|
| getMapStructure |
Returns the configuration of a Resco global map: which entities are plotted on it, which view and coordinate fields are used, the default center and zoom level, and pin clustering settings. |
Yes
|
| getRoutePlanStructure |
Returns the full setup of a Resco route plan: the activity entity and date fields, source views, scheduling settings (start hour, duration, optimization), available menu actions, and which workflow events are active. |
Yes
|
| getTheme |
Returns the app's visual theme from AppStyle.rtheme — all color slots resolved to hex values, Material Design 3 light/dark tokens, the image pack in use, and the brand color. Returns exists: false if no theme file is set. |
Yes
|
| getStyles |
Returns all named style presets from Styles.rstyle (e.g. TextCell, Row, ImageCell) with their properties and resolved color values. Returns exists: false if no styles file exists. |
Yes
|
Dataverse metadata and statistics
| Tool |
Description |
Requires org?
|
| listDataverseEntities |
Lists all tables (entities) available in your Dataverse environment — not just the ones the Resco project uses. Supports filtering by name pattern and result limits to avoid large responses. |
Yes
|
| getDataverseEntityDetails |
Returns detailed technical metadata for one Dataverse table: display name, primary key, ownership type, and optionally all fields (with their types and requirements) and related tables. |
Yes
|
| dataverse_get_record_counts |
Returns the approximate number of records in one or more Dataverse tables. Counts are from a snapshot taken within the last 24 hours, so useful for sizing and monitoring but not real-time. |
Yes
|
| dataverse_get_table_stats |
Returns comprehensive statistics for a single Dataverse table: record count, metadata, indexes, and Dataverse Search indexing status — all in one call. |
Yes
|
| dataverse_get_search_statistics |
Returns Dataverse Search usage stats for your org: total storage used (bytes and MB) and total number of indexed documents. |
Yes
|
| dataverse_get_search_status |
Returns whether Dataverse Search is turned on in your org, lockbox and Customer-Managed Key (CMK) status, and the current indexing status for each entity that is enrolled in search. |
Yes
|
Project and configuration
| Tool |
Description |
Requires org?
|
| listProjects |
Lists all Resco Mobile CRM projects available in your Dataverse org (root/canonical projects only, not duplicates or variants). |
Yes
|
| getProject |
Returns full details for one Resco project: which user roles it is assigned to, user type, sync priority, and optionally a manifest of all configured entities. |
Yes
|
| listConfigurationFiles |
Lists every configuration file in a Resco project (forms, views, dashboards, calendars, maps, etc.) grouped by entity and type, with file-level stats — useful for auditing what is configured. |
Yes
|
| getEntityConfiguration |
Shows a summarized view of everything configured for a single entity in the project: how many tabs and fields each form has, what columns and filters each view has, and which charts exist. |
Yes
|
| getProjectOverview |
Generates a readable Markdown report of the whole project: what file types exist, which entities are configured, and a detailed breakdown of the top 10 most heavily configured entities. |
Yes
|
| listEnabledEntities |
Lists only the entities (tables) that are switched on in this Resco project's configuration — the subset the mobile app actually works with, not all tables in Dataverse. |
Yes
|
| listEntityDetails |
Returns the enabled entity/field list for the project, enriched with Dataverse display names, descriptions, field types, and requirement levels — the full picture of what the mobile app can see. |
Yes
|
| listProjectFiles |
Lists all Offline HTML, JavaScript, and CSS files deployed to the project's www\ folder in Dataverse — the custom web resources used in the mobile app. |
Yes
|
| getProjectFile |
Reads the content of one deployed www\ file from Dataverse. Automatically reassembles chunked files. Returns text as UTF-8; binary files can be returned as base64 using forceRead. |
Yes
|
Sync filters
| Tool |
Description |
Requires org?
|
| syncFilterToolsInit |
Call this first before using any sync filter tool. Loads sync filter architecture context (incremental vs. full sync, linked sync, optimization guidance) into the session and returns an _initKey. |
No
|
| listSyncFilters |
Lists every sync filter defined in the project's SyncFilter.xml, showing the FetchXML query for each entity — i.e. exactly what records each entity will download to the mobile device. |
Yes
|
| getSyncFilter |
Returns the sync filter (FetchXML query) for a specific entity, showing what records will be synced to the device, plus optional entity-level sync settings (incremental sync, linked sync, disabled). |
Yes
|
Sync logs
| Tool |
Description |
Requires org?
|
| syncLogToolsInit |
Call this first before using any sync log tool. Loads sync log architecture context (log format, section meanings, analysis patterns) into the session and returns an _initKey. |
No
|
| fetchSyncLogs |
Retrieves a list of recent sync sessions from Dataverse — who synced, when, the result (success/failure), timings, errors, and device configuration summary. Use this to find the record ID for a session you want to investigate deeper. |
Yes
|
| getSyncLogDetail |
Returns the full, detailed sync log body for one specific sync session — all phases, entity-level counts, error messages, and diagnostic data. Run fetchSyncLogs first to identify the record ID. |
Yes
|
Questionnaires
| Tool |
Description |
Requires org?
|
| getAllTemplates |
Returns a list of all questionnaire templates defined in Dynamics 365 — their IDs and names (latest published version of each). Use this to discover available templates before fetching one in detail. |
Yes
|
| getTemplate |
Returns the full definition of one questionnaire template by ID, including its decompressed JSON content — questions, sections, field types, and logic. |
Yes
|
Quick reference: tools that work without org access
These 6 tools do not read from 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
|
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
|