Resco Agents

From Resco's Wiki
Jump to navigation Jump to search
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.

resco agents

What's an MCP server anyway?

Wikipedia logo
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

  1. Go to the Resco Agents website and connect to your organization using your Microsoft account.
  2. 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.
  3. 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