The most complete MCP server for Microsoft Dataverse. 81 production-ready tools for AI agents: OData & FetchXML queries, CRUD, metadata, solutions, audit, batch operations, schema write, record access and more. Device code, client credentials, and managed
Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.
dataverse_whoamiReturns the current authenticated user context from Dataverse WhoAmI: userId, businessUnitId, organizationId, organizationName, and environmentUrl. Use this to verify authentication is working, retrieve the current user context, or obtain IDs needed for subsequent operations. WHEN TO USE: Verifying…Returns the current authenticated user context from Dataverse WhoAmI: userId, businessUnitId, organizationId, organizationName, and environmentUrl. Use this to verify authentication is working, retrieve the current user context, or obtain IDs needed for subsequent operations. WHEN TO USE: Verifying…
No input schema was published for this tool.
dataverse_list_tablesLists all Dataverse tables. By default returns ONLY custom (non-system) tables. Set includeSystemTables=true to include all ~1700+ system tables.Lists all Dataverse tables. By default returns ONLY custom (non-system) tables. Set includeSystemTables=true to include all ~1700+ system tables.
No input schema was published for this tool.
dataverse_get_table_metadataReturns full schema metadata for a Dataverse table: all attribute (column) logical names, display names, data types, required levels, and lookup target entities. Use this before writing queries or creating/updating records to confirm correct field names and types. Set includeAttributes=false if you…Returns full schema metadata for a Dataverse table: all attribute (column) logical names, display names, data types, required levels, and lookup target entities. Use this before writing queries or creating/updating records to confirm correct field names and types. Set includeAttributes=false if you…
No input schema was published for this tool.
dataverse_get_relationshipsReturns all relationship definitions (1:N, N:1, N:N) for a Dataverse table, including relationship schema names, referenced/referencing entity names, and lookup attribute names. Use to determine the correct relationshipName for dataverse_associate/dataverse_disassociate, or to map lookup fields bef…Returns all relationship definitions (1:N, N:1, N:N) for a Dataverse table, including relationship schema names, referenced/referencing entity names, and lookup attribute names. Use to determine the correct relationshipName for dataverse_associate/dataverse_disassociate, or to map lookup fields bef…
No input schema was published for this tool.
dataverse_list_global_option_setsLists all global (shared) option sets defined in the Dataverse environment, returning their names and metadata IDs. Use this to discover available option sets before calling dataverse_get_option_set to retrieve their values. Prefer this over dataverse_get_table_metadata when you need to find option…Lists all global (shared) option sets defined in the Dataverse environment, returning their names and metadata IDs. Use this to discover available option sets before calling dataverse_get_option_set to retrieve their values. Prefer this over dataverse_get_table_metadata when you need to find option…
No input schema was published for this tool.
dataverse_get_option_setReturns all option labels and their integer values for a named global option set. Use this to look up the numeric code for a picklist value before filtering records (e.g., statecode or statuscode equivalents), or to populate dropdowns with correct option values.Returns all option labels and their integer values for a named global option set. Use this to look up the numeric code for a picklist value before filtering records (e.g., statecode or statuscode equivalents), or to populate dropdowns with correct option values.
No input schema was published for this tool.
dataverse_get_entity_keyReturns all alternate key definitions for a Dataverse table. Useful before using dataverse_upsert to know which fields serve as alternate keys, their index status (Active/InProgress/Failed), and whether they are customizable.Returns all alternate key definitions for a Dataverse table. Useful before using dataverse_upsert to know which fields serve as alternate keys, their index status (Active/InProgress/Failed), and whether they are customizable.
No input schema was published for this tool.
dataverse_get_attribute_option_setReturns all option labels and integer values for a table-specific attribute (Picklist, MultiSelectPicklist, Status, or State field). Use to look up the numeric codes for a column's choices before filtering or updating records.Returns all option labels and integer values for a table-specific attribute (Picklist, MultiSelectPicklist, Status, or State field). Use to look up the numeric codes for a column's choices before filtering or updating records.
No input schema was published for this tool.
dataverse_update_entityUpdates configuration flags on an existing Dataverse entity definition — enables or disables Notes (HasNotes), Change Tracking, and Audit. Requires System Customizer or System Administrator privileges. WHEN TO USE: Enabling notes/attachments support, change tracking, or audit on a table. BEST PRACT…Updates configuration flags on an existing Dataverse entity definition — enables or disables Notes (HasNotes), Change Tracking, and Audit. Requires System Customizer or System Administrator privileges. WHEN TO USE: Enabling notes/attachments support, change tracking, or audit on a table. BEST PRACT…
No input schema was published for this tool.
dataverse_set_table_iconNo description publishedThis tool published no description. Forge does not invent one.
dataverse_resolve_entity_nameNo description publishedThis tool published no description. Forge does not invent one.
dataverse_queryNo description publishedThis tool published no description. Forge does not invent one.
dataverse_execute_fetchxmlNo description publishedThis tool published no description. Forge does not invent one.
dataverse_retrieve_multiple_with_pagingNo description publishedThis tool published no description. Forge does not invent one.
dataverse_getRetrieves a single Dataverse record by its GUID. Use when you already know the exact record ID and want specific fields — faster and more precise than dataverse_query with a GUID filter. Specify select to limit returned columns and reduce payload size. WHEN TO USE: You have the exact record GUID an…Retrieves a single Dataverse record by its GUID. Use when you already know the exact record ID and want specific fields — faster and more precise than dataverse_query with a GUID filter. Specify select to limit returned columns and reduce payload size. WHEN TO USE: You have the exact record GUID an…
No input schema was published for this tool.
dataverse_createNo description publishedThis tool published no description. Forge does not invent one.
dataverse_updateUpdates an existing Dataverse record using PATCH semantics — only the fields provided in data are changed, all other fields remain unchanged. Requires the record GUID. Use dataverse_upsert instead if you want to create-or-update using an alternate key without knowing the GUID upfront. WHEN TO USE:…Updates an existing Dataverse record using PATCH semantics — only the fields provided in data are changed, all other fields remain unchanged. Requires the record GUID. Use dataverse_upsert instead if you want to create-or-update using an alternate key without knowing the GUID upfront. WHEN TO USE:…
No input schema was published for this tool.
dataverse_deleteprivilegedPermanently deletes a Dataverse record by its GUID. This operation is irreversible — you MUST set confirm=true to proceed. Use dataverse_list_dependencies to check if the record is referenced by workflows, plugins, or other components before deleting shared or configuration records. WHEN TO USE: Pe…Permanently deletes a Dataverse record by its GUID. This operation is irreversible — you MUST set confirm=true to proceed. Use dataverse_list_dependencies to check if the record is referenced by workflows, plugins, or other components before deleting shared or configuration records. WHEN TO USE: Pe…
No input schema was published for this tool.
dataverse_upsertNo description publishedThis tool published no description. Forge does not invent one.
dataverse_assignAssigns a Dataverse record to a different user or team owner. Sets the ownerid lookup field using the OData bind syntax. WHEN TO USE: Changing the owner of a record to a different user or team. BEST PRACTICES: Use dataverse_list_users or dataverse_list_teams to find valid owner GUIDs first. WORKFLO…Assigns a Dataverse record to a different user or team owner. Sets the ownerid lookup field using the OData bind syntax. WHEN TO USE: Changing the owner of a record to a different user or team. BEST PRACTICES: Use dataverse_list_users or dataverse_list_teams to find valid owner GUIDs first. WORKFLO…
No input schema was published for this tool.
dataverse_associateCreates an association between two Dataverse records via a named N:N or 1:N relationship. Requires the relationship schema name obtainable from dataverse_get_relationships. Use for N:N relationships or to link records without modifying a lookup field directly — for simple 1:N lookups, setting the l…Creates an association between two Dataverse records via a named N:N or 1:N relationship. Requires the relationship schema name obtainable from dataverse_get_relationships. Use for N:N relationships or to link records without modifying a lookup field directly — for simple 1:N lookups, setting the l…
No input schema was published for this tool.
dataverse_associate_bulkAssociates one source record with multiple related records at once via a named relationship, executing all associations in parallel. Unlike dataverse_associate (one pair at a time), this accepts an array of related IDs and runs them concurrently. Uses Promise.allSettled semantics — individual failu…Associates one source record with multiple related records at once via a named relationship, executing all associations in parallel. Unlike dataverse_associate (one pair at a time), this accepts an array of related IDs and runs them concurrently. Uses Promise.allSettled semantics — individual failu…
No input schema was published for this tool.
dataverse_disassociateRemoves an existing association between two Dataverse records on a named relationship. For N:N relationships, provide relatedId and relatedEntitySetName to build the correct $id URL. For 1:N relationships, relatedId and relatedEntitySetName are optional. Use dataverse_get_relationships to find the…Removes an existing association between two Dataverse records on a named relationship. For N:N relationships, provide relatedId and relatedEntitySetName to build the correct $id URL. For 1:N relationships, relatedId and relatedEntitySetName are optional. Use dataverse_get_relationships to find the…
No input schema was published for this tool.
dataverse_query_associationsReads existing N:N associations for a record by querying through a navigation property. Returns the related records — use to verify what's already linked before calling dataverse_associate or dataverse_disassociate. Use $select to return only needed columns; set $top to limit results.Reads existing N:N associations for a record by querying through a navigation property. Returns the related records — use to verify what's already linked before calling dataverse_associate or dataverse_disassociate. Use $select to return only needed columns; set $top to limit results.
No input schema was published for this tool.
dataverse_execute_actionExecutes a global (unbound) Dataverse action that is not tied to a specific record — for example WinOpportunity, SendEmail, or custom process actions. Use dataverse_execute_bound_action when the action must operate on a particular record. Actions differ from functions in that they are state-changin…Executes a global (unbound) Dataverse action that is not tied to a specific record — for example WinOpportunity, SendEmail, or custom process actions. Use dataverse_execute_bound_action when the action must operate on a particular record. Actions differ from functions in that they are state-changin…
No input schema was published for this tool.
dataverse_execute_functionExecutes a global (unbound) Dataverse OData function that is read-only and returns data without side effects — for example RetrieveTotalRecordCount or InitializeFrom. Use dataverse_execute_action for state-changing operations. Use dataverse_execute_bound_action when the function/action requires a s…Executes a global (unbound) Dataverse OData function that is read-only and returns data without side effects — for example RetrieveTotalRecordCount or InitializeFrom. Use dataverse_execute_action for state-changing operations. Use dataverse_execute_bound_action when the function/action requires a s…
No input schema was published for this tool.
dataverse_execute_bound_actionExecutes a Dataverse action bound to a specific record instance, passing the entity set name and record GUID as context (e.g., QualifyLead on a lead, or a custom action scoped to an account). The actionName should not include the Microsoft.Dynamics.CRM namespace prefix. Use dataverse_execute_action…Executes a Dataverse action bound to a specific record instance, passing the entity set name and record GUID as context (e.g., QualifyLead on a lead, or a custom action scoped to an account). The actionName should not include the Microsoft.Dynamics.CRM namespace prefix. Use dataverse_execute_action…
No input schema was published for this tool.
dataverse_retrieve_dependencies_for_deleteprivilegedChecks what solution components would block deletion of a specific component. Provide the Dataverse component type code (1=Entity, 2=Attribute, 26=SavedQuery, 29=Workflow, 92=PluginAssembly) and the component GUID. Use before deleting shared Dataverse customization components.Checks what solution components would block deletion of a specific component. Provide the Dataverse component type code (1=Entity, 2=Attribute, 26=SavedQuery, 29=Workflow, 92=PluginAssembly) and the component GUID. Use before deleting shared Dataverse customization components.
No input schema was published for this tool.
dataverse_execute_bound_functionNo description publishedThis tool published no description. Forge does not invent one.
dataverse_list_dependenciesNo description publishedThis tool published no description. Forge does not invent one.
dataverse_batch_executeNo description publishedThis tool published no description. Forge does not invent one.
dataverse_change_detectionNo description publishedThis tool published no description. Forge does not invent one.
dataverse_publish_customizationsNo description publishedThis tool published no description. Forge does not invent one.
dataverse_impersonateNo description publishedThis tool published no description. Forge does not invent one.
dataverse_list_custom_actionsNo description publishedThis tool published no description. Forge does not invent one.
dataverse_list_plugin_stepsNo description publishedThis tool published no description. Forge does not invent one.
dataverse_set_workflow_stateNo description publishedThis tool published no description. Forge does not invent one.
dataverse_list_connection_referencesNo description publishedThis tool published no description. Forge does not invent one.
dataverse_get_environment_variableNo description publishedThis tool published no description. Forge does not invent one.
dataverse_set_environment_variableNo description publishedThis tool published no description. Forge does not invent one.
21 of 40 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
The most complete MCP server for Microsoft Dataverse. 81 production-ready tools for AI agents: OData & FetchXML queries, CRUD, metadata, solutions, audit, batch operations, schema write, record access and more. Device code, client credentials, and managed
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
The crawl stopped at the 60-package limit. The rest of the tree was never resolved.
36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)
62 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.
+50 more not listed. The counts by reason above cover all of them.
Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.