Dataverse MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DATAVERSE_URL | No | Fallback org URL used when a tool call omits dataverse_url | |
| DATAVERSE_AUTH_TYPE | No | Authentication method: azure_cli or interactive | azure_cli |
| DATAVERSE_ALLOW_WRITE | No | Set to true to register create, update, associate, merge, and schema mutation tools | false |
| DATAVERSE_ALLOW_DELETE | No | Set to true to register delete and disassociate tools | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dataverse_list_environmentsA | List Power Platform environments available to the authenticated user. Uses the Power Platform admin API — no dataverse_url required. Returns instance_url for each environment, which is the dataverse_url for all other tools. Use this to discover environments before calling environment-specific Dataverse tools. |
| dataverse_whoamiA | Return the authenticated caller's identity from the Dataverse WhoAmI endpoint. Returns UserId, BusinessUnitId, and OrganizationId. Call at session start to confirm authentication and get the caller's UserId for privilege checks. |
| dataverse_get_entity_setsA | List OData EntitySet names from the Dataverse service document. Use this to discover the correct entity_set_name for a table before querying records (e.g., 'account' → 'accounts', 'systemuser' → 'systemusers'). Faster and smaller than fetching $metadata. Filter with contains. |
| dataverse_retrieve_user_privilegesA | Retrieve all security privileges assigned to a system user via their roles. Returns RolePrivilege objects with PrivilegeName and Depth. Use dataverse_whoami to get the caller's UserId for checking your own privileges. |
| dataverse_retrieve_principal_accessA | Return the access rights a system user has to a specific Dataverse record. Returns the AccessRights bitmask and named rights (ReadAccess, WriteAccess, DeleteAccess, etc.). Use before delegating an operation to confirm the user can act on the record. |
| dataverse_list_solutionsA | List solutions in the Dataverse environment with name, version, and managed status. Use filter to narrow results (e.g., "ismanaged eq false"). Use dataverse_get_solution for full details on a specific solution. |
| dataverse_get_solutionA | Retrieve a single Dataverse solution by its unique name or GUID. Returns full details including version, publisher, and managed status. Provide solution_unique_name or solution_id — not both. |
| dataverse_list_solution_componentsA | List components within a Dataverse solution, with human-readable type names. Use component_type to filter by type code (1=Entity, 61=Web Resource, 300=Canvas App, 91=Plugin Assembly, 92=SDK Message Processing Step). |
| dataverse_get_solution_historyA | Retrieve a single solution history record by its GUID. Returns import/upgrade/export operation details including result, timing, error messages, and publisher information from msdyn_solutionhistories. The msdyn_suboperation field distinguishes operation sub-types:
|
| dataverse_list_solution_historiesA | List solution history records from msdyn_solutionhistories. Tracks import, upgrade, and export operations on solutions. Optionally filter by solution_id or solution_unique_name (mutually exclusive). solution_id is resolved to the solution unique name first, then used to filter history records via msdyn_name. Omit both to list all. The msdyn_suboperation field distinguishes operation sub-types:
Use msdyn_suboperation to determine whether a history record represents a standard update or a true upgrade with component deletion. |
| dataverse_get_cloud_flowsA | List cloud flows in the Dataverse environment, optionally scoped to a solution. Returns workflow records with statecode, statuscode, and category. Scope to a specific solution with solution_id or solution_unique_name. |
| dataverse_list_processesA | List classic processes (workflows, business rules, actions, BPFs) from the workflow entity. Classic process categories: 0=Workflow, 1=Dialog, 2=Business Rule, 3=Action, 4=Business Process Flow. Use the category parameter to filter by a specific category. Cloud flows (category 5) are excluded by default unless you explicitly set category=5. By default returns only type=1 (definition) records to avoid duplicate activation/template rows. Set type=None to return both types. Use filter for additional OData conditions (e.g., "statecode eq 1" for activated processes only, or "primaryentity eq 'account'"). |
| dataverse_export_solutionA | Export a Dataverse solution as a base64-encoded zip. Calls the ExportSolution unbound action. Large solutions (>~3 MB base64) must be saved to disk via output_path — supply a local filesystem path and the server writes the decoded .zip there, returning metadata only (no base64 in the response). Small solutions are returned inline when output_path is omitted. This tool is read-only for the org (no mutations); writing a local .zip when output_path is set is local I/O only and does not require DATAVERSE_ALLOW_WRITE. |
| dataverse_get_import_jobA | Retrieve a single importjob record by its GUID to check import progress. Returns progress (0–100), completedon, solutionname, and other tracking fields. The large result XML ('data' column) is excluded by default; set include_data=true to fetch it when diagnosing failures. Use dataverse_import_solution or dataverse_stage_and_upgrade_solution to start an operation and obtain the import_job_id. When include_data=true, the 'data' result XML contains component-level detail for all import phases, including the DeleteComponents phase of an upgrade. Error code 0x8004F037 (image-column dependency failures) and other component-level errors from the deletion phase appear in this XML. |
| dataverse_list_import_jobsA | List importjob records, optionally filtered by solution unique name. The large result XML ('data' column) is excluded from all records by default. Results are ordered by createdon descending (most recent first). |
| dataverse_query_tableA | Query records from a Dataverse table with OData filtering, ordering, and expansion. For a single record by GUID use dataverse_get_record. For just a count use dataverse_count_records. For group-by aggregation use dataverse_aggregate_table. To create, update, or delete records use dataverse_create_record, dataverse_update_record, or dataverse_delete_record. Always specify select to limit returned columns and keep payloads small. |
| dataverse_execute_fetchxmlA | Execute a FetchXML query against a Dataverse table and return matching records. FetchXML supports complex joins (link-entity), aggregation, and queries that OData $filter cannot express. Use dataverse_query_table for simple OData queries. Use dataverse_get_entity_sets to discover entity_set_name; the entity_set_name must match the root logical name's collection name. FetchXML uses paging cookies (not @odata.nextLink). This tool returns one page plus paging metadata (has_more, paging_cookie) so the caller can page if needed. |
| dataverse_get_recordA | Retrieve a single Dataverse record by its GUID. For multiple records with filtering use dataverse_query_table. Use dataverse_query_table first to find record IDs if you do not have one. |
| dataverse_count_recordsA | Count records in a table (optionally filtered) and return only the integer total. Use this instead of dataverse_query_table when you need a number, not rows. For per-group counts (e.g. count by status) use dataverse_aggregate_table. The total is capped at 5,000 by Dataverse. |
| dataverse_aggregate_tableA | Group and aggregate Dataverse records with an OData $apply expression. Use this for per-group questions (e.g. count by status, sum revenue by region). For a single total count use dataverse_count_records; for raw rows use dataverse_query_table. Works on up to 50,000 records. See the apply parameter for expression examples. |
| dataverse_execute_batchA | Execute bulk or atomic multi-operation reads and writes via the OData $batch endpoint. Use this for bulk record operations or when multiple writes must succeed or fail together. For single-record writes use dataverse_create_record / dataverse_update_record / dataverse_delete_record instead. For metadata/schema changes use the dataverse_create_*/update_*/delete_* metadata tools. POST/PUT/PATCH operations require DATAVERSE_ALLOW_WRITE=true; DELETE operations require DATAVERSE_ALLOW_DELETE=true. Group operations with the same change_set_id to run them atomically (all-or-nothing, up to 1,000 operations per request). Returns per-operation results [{index, status_code, body}]. |
| dataverse_list_tablesA | List tables (entities) in the Dataverse environment with their logical names and display names. Use filter to narrow results (e.g., "IsCustomEntity eq true" for custom tables only). Use dataverse_get_table_metadata for full schema details on one table. Use dataverse_get_entity_sets to discover OData collection names for record queries. |
| dataverse_get_table_metadataA | Get schema details for a single Dataverse table by logical name. Returns the entity set name, primary key attribute, and primary name attribute. Use dataverse_list_tables to discover available table logical names. |
| dataverse_list_columnsA | List column (attribute) definitions for a Dataverse table. Use attribute_type to narrow by column type (e.g., 'Lookup', 'Picklist'). For full metadata on a single column use dataverse_get_column. For Picklist/MultiSelectPicklist option values use dataverse_list_choice_column_options. |
| dataverse_get_columnA | Get full metadata for a single column on a Dataverse table, including type-specific properties. Returns all properties including MaxLength, Precision, RequiredLevel, Format, and IsValidForCreate. Use before updating a column — pass the returned object as full_definition to dataverse_update_column. For Picklist/MultiSelectPicklist option values use dataverse_list_choice_column_options. |
| dataverse_list_choice_column_optionsA | Get option values and labels for a Picklist or MultiSelectPicklist column's LOCAL option set. Use this before filtering records with choice columns — the integer value is required for OData filter expressions (e.g., "statuscode eq 1"). For GLOBAL choices shared across tables use dataverse_get_choice instead. Handles both Picklist and MultiSelectPicklist automatically. |
| dataverse_list_relationshipsA | List relationship definitions for a table (OneToMany, ManyToOne, ManyToMany) or the whole environment. Use the returned SchemaName with dataverse_get_relationship for full cascade and navigation property details. Navigation property names from the results are required for OData $expand queries and for dataverse_associate_records. |
| dataverse_get_relationshipA | Get full metadata for a single relationship by schema name — cascade configuration and navigation properties. Schema names are case-sensitive; use the exact SchemaName from dataverse_list_relationships. Use this to fetch the full definition before updating with dataverse_update_relationship. |
| dataverse_list_choicesA | List GLOBAL choice (option set) definitions in the Dataverse environment. Option values and labels are not returned here — use dataverse_get_choice to retrieve the full option set for a specific choice. $filter is not supported by this endpoint; top is applied client-side. |
| dataverse_get_choiceA | Get one GLOBAL choice (option set) — all option values, codes, and labels — by name or MetadataId. For the options of a specific column's LOCAL choice use dataverse_list_choice_column_options instead. Provide either name or metadata_id; name takes precedence when both are given. |
| dataverse_check_relationship_eligibilityA | Pre-validate whether a table supports a specific relationship role before creating a relationship. Only call this immediately before dataverse_create_one_to_many_relationship or dataverse_create_many_to_many_relationship — do not use for general queries or data reads. Returns eligible (bool) for the requested check_type (see check_type field for valid values). |
| dataverse_list_alternate_keysA | List alternate keys (EntityKeyMetadata) defined on a Dataverse table. Alternate keys let integration tools upsert records by business values instead of GUIDs. Returns SchemaName, LogicalName, KeyAttributes, and EntityKeyIndexStatus (which tracks async index build progress). Use the LogicalName with dataverse_delete_alternate_key to remove a key. |
| dataverse_list_formsA | List model-driven app forms registered in the Dataverse environment. Returns form metadata: id, name, type, activation state, and default flag. Filter by table_logical_name and/or form_type (2=Main, 4=Quick View, 5=Quick Create, 9=Card). Use dataverse_get_form to inspect a form's layout. |
| dataverse_get_formA | Get a single Dataverse form's layout parsed as a structured JSON object. Parses raw FormXml into a readable tabs → sections → controls tree so agents don't need to work with raw XML. Also returns formxml_backup (the raw XML string). Use dataverse_list_forms to discover form IDs. |
| dataverse_validate_formxmlA | Validate FormXml against structural rules derived from the FormXml XSD. Two modes: pass formxml to validate a string directly (dry-run before dataverse_set_formxml), or omit formxml to fetch and validate the live form. Returns valid=true + control list, or valid=false + full error list. All write tools run this validation automatically before every PATCH. |
| dataverse_list_viewsA | List saved views (savedqueries) registered in the Dataverse environment. Returns metadata: id, name, querytype, isdefault, statecode. Filter by table_logical_name and/or query_type (0=Main Grid, 1=Advanced Find, 2=Associated, 4=Quick Find, 64=Lookup). Use dataverse_get_view for layout. |
| dataverse_get_viewA | Get a single Dataverse view's layout as structured JSON. Parses FetchXml and LayoutXml into readable columns, sort, and filter lists. Returns fetchxml_backup and layoutxml_backup for reference. quick_find_fields is populated for Quick Find views (querytype=4). Use dataverse_list_views to discover view IDs. |
| dataverse_validate_viewA | Validate a Dataverse view's FetchXml and LayoutXml against 16 structural rules. Fetches the live XML and checks FetchXml structure (rules 1-8), LayoutXml structure (rules 9-15), and column cross-reference (rule 16). Layout rules are skipped when layoutxml is null. Write tools run this automatically before every PATCH — use this for a standalone pre-check. |
| dataverse_list_appsA | List model-driven apps (AppModule records) in a Dataverse environment. Returns appmoduleid, name, uniquename, description, publish state, and statecode. Set include_unpublished=true to also return draft apps not yet visible to users. Use dataverse_get_app to inspect a single app's components. |
| dataverse_get_appA | Get a model-driven app's properties and its current component list. Returns app metadata and components grouped by type (Entity, View, Form, Sitemap, etc.) via RetrieveAppComponents. Use dataverse_list_apps to find app IDs. Call this before any write to confirm current component state. |
| dataverse_validate_appA | Validate a model-driven app and return all errors and warnings. Uses the ValidateApp function to check for missing required components (sitemap, etc.). An app with validation errors cannot be published. Run this before calling dataverse_publish_app to catch errors early. |
| dataverse_list_plugin_type_statisticsA | List runtime performance statistics for Dataverse plug-in types. Returns execution counts, failure rates, crash metrics, and worker-process termination contribution percentages per plug-in type. Records are populated by Dataverse within 30–60 minutes of plug-in execution; all fields are read-only. Filter to a specific plug-in type with plugin_type_id, or omit to return statistics for all plug-in types. Set include_plugin_type_details=true to expand each row with the plug-in type name, typename, and assemblyname. Use this to identify slow, high-failure, or crash-prone plug-ins before investigating further with the Power Platform Admin Center analytics dashboard. |
| dataverse_get_plugin_trace_log_settingA | Get the current plug-in trace log setting for the Dataverse organization. Returns the verbosity level: off (0), exception (1), or all (2). This setting controls whether Dataverse records plug-in execution traces in the plugintracelog entity. Use dataverse_set_plugin_trace_log_setting to change the setting, and dataverse_list_plugin_trace_logs to read the logs. |
| dataverse_list_plugin_trace_logsA | List plug-in trace log records with optional filters. Returns trace and exception information generated by plug-ins and custom workflow activities. Records are ordered newest-first. Useful filters:
Plug-in trace logging must be enabled via dataverse_set_plugin_trace_log_setting before logs will be generated. Use dataverse_get_plugin_trace_log_setting to check the current setting. |
| dataverse_list_connection_referencesA | List connection references in the Dataverse environment. Returns connectionreferenceid, logical name, display name, connector ID, connection ID (empty string if not yet assigned), status, and managed state. Filter by connector_id to find all references for a specific connector type. Filter by statecode=0 to show only active references. Use the connection_id field to identify which references still need a connection assigned — an empty connectionid means the flow or app using it will fail at runtime. |
| dataverse_get_connection_referenceA | Get a single connection reference by GUID or logical name. Returns the full record including the assigned connection ID, connector ID, status, and managed state. An empty connectionid means no connection has been wired up yet — use dataverse_update_connection_reference to assign one. |
| dataverse_get_plugin_assemblyA | Retrieve a single plug-in assembly record by its GUID. The 'content' column contains the base64-encoded DLL and is very large — exclude it from select unless you specifically need it. |
| dataverse_list_plugin_assembliesA | List plug-in assemblies registered in the environment, optionally filtered. Results ordered newest-modified first. Use package_id to scope to one plug-in package. The prerequisite chain is: assembly (or package) → plug-in type → processing step → step image. |
| dataverse_get_plugin_packageA | Retrieve a single plug-in package record by its GUID. Packages are an alternative to raw assemblies — Dataverse extracts the contained assemblies automatically on upload. |
| dataverse_list_plugin_packagesA | List NuGet-based plug-in packages registered in the environment. Results ordered newest-modified first. Packages are an alternative to raw assemblies as the first step in the prerequisite chain. |
| dataverse_get_plugin_typeA | Retrieve a single plug-in type record by its GUID. Plug-in types represent individual .NET classes within an assembly. Use dataverse_list_plugin_types to browse types in a given assembly. |
| dataverse_list_plugin_typesA | List plug-in types (.NET classes) registered in the environment. Use assembly_id to scope to one assembly. Results ordered by typename ascending. Types are the second step in the prerequisite chain: assembly → type → step → image. |
| dataverse_get_sdk_messageA | Resolve an SDK message (e.g. 'Create', 'Update', 'Delete') to its sdkmessageid. Call this to get the message_id required by dataverse_create_plugin_step. Provide message_name OR message_id — exactly one required. |
| dataverse_list_sdk_messagesA | List SDK messages — the catalog of operations plug-in steps can intercept. Use to discover valid message names (e.g. 'Create', 'Update', 'Assign') before calling dataverse_get_sdk_message to resolve message_id for a step. |
| dataverse_get_sdk_message_filterA | Resolve the filter that scopes an SDK message to one entity — returns the sdkmessagefilterid. Call this to get the filter_id required by dataverse_create_plugin_step when you want to scope a step to a specific entity (e.g. 'contact'). Provide filter_id alone, or message_id + primary_entity together. |
| dataverse_list_sdk_message_filtersA | List SDK message filters showing which entities support each message. Use message_id to scope to one message, or primary_entity to see all messages supported by one table. Use dataverse_get_sdk_message_filter to resolve a specific filter_id for dataverse_create_plugin_step. |
| dataverse_get_plugin_stepA | Retrieve a single SDK message processing step record by its GUID. Steps are the third node in the prerequisite chain: assembly → type → step → image. |
| dataverse_list_plugin_stepsA | List SDK message processing steps registered in the environment. Use plugin_type_id to scope to one plug-in type, or message_id to scope to one message. Results ordered by name ascending. |
| dataverse_get_plugin_step_imageA | Retrieve a single plug-in step image record by its GUID. Step images are pre/post entity snapshots passed to the plug-in context. They are the leaf node in the chain: assembly → type → step → image. |
| dataverse_list_plugin_step_imagesA | List plug-in step images (pre/post entity snapshots) registered against steps. Use step_id to scope to one processing step. |
| dataverse_get_environment_variablesA | List environment variable definitions with their current values. Each record includes the definition fields (schemaname, displayname, type, defaultvalue, description, ismanaged) plus the current value from the linked environmentvariablevalue record. The value field is null when no value record exists — fall back to defaultvalue in that case. Provide name (schemaname or displayname) to look up a single definition. Schema name is tried first; display name is the fallback. name cannot be combined with solution_id or solution_unique_name. Scope results to a specific solution with solution_id or solution_unique_name (componenttype 380 solutioncomponents query). Omit both to list all definitions in the environment. |
| dataverse_get_environment_variable_valuesA | Get environment variable value record(s). Provide exactly one targeting path:
Returns a list shape (records, count, has_more) in all cases for a consistent calling convention, even when a single record is expected. When no value record exists for a definition the list will be empty. |
| dataverse_list_security_rolesA | List security roles in the Dataverse environment. Returns roleid, name, businessunitid, managed status, and modifiedon. Use filter to narrow results (e.g., "ismanaged eq false"). Use dataverse_get_security_role for full details on a specific role. |
| dataverse_get_security_roleA | Retrieve a single Dataverse security role by its GUID. Returns full role details including name, business unit, and managed status. |
| dataverse_list_teamsA | List teams in the Dataverse environment. Returns teamid, name, teamtype, businessunitid, and modifiedon. Use filter to narrow results (e.g., "teamtype eq 0" for owner teams). Use dataverse_get_team for full details on a specific team. |
| dataverse_get_teamA | Retrieve a single Dataverse team by its GUID. Returns full team details including name, type, and business unit. |
| dataverse_list_usersA | List system users (systemusers) in the Dataverse environment. Returns systemuserid, fullname, domainname, email, disabled flag, and businessunitid. Use filter to narrow results (e.g., "isdisabled eq false", "domainname eq 'user@contoso.com'"). Use dataverse_get_user for full details on a specific user. |
| dataverse_get_userA | Retrieve a single Dataverse system user by their GUID. Returns full user details including fullname, domainname, email, and disabled status. Use dataverse_whoami to get the current caller's UserId. |
| dataverse_list_business_unitsA | List business units in the Dataverse environment. Returns businessunitid, name, parent business unit, disabled flag, and modifiedon. Use filter to narrow results (e.g., "isdisabled eq false"). |
| dataverse_audit_user_accessA | Return a composite access report for a Dataverse system user. Gathers in one call: user identity, direct security roles, team memberships (with each team's roles), and optionally effective privileges and record-level access rights. Resolves all type codes to human-readable names. Provide either user_id (GUID) or user_domain_name (e.g. 'user@contoso.com'). Optionally provide target_entity_set_name + target_record_id to include a record-level access check. |
| dataverse_retrieve_record_change_historyA | Retrieve the full audit change history for a specific record. Calls the unbound RetrieveRecordChangeHistory function which returns an AuditDetailCollection. Each AuditDetail is polymorphic — the most common subtype is AttributeAuditDetail (OldValue, NewValue per changed field). All subtypes include an AuditRecord navigation property with the audit metadata (who, when, what operation). Note: requires auditing enabled on the org and the target table. If auditing is disabled, Dataverse returns an HTTP error — check the error message for audit configuration guidance. URL form: GET /api/data/v9.2/RetrieveRecordChangeHistory(Target=@p1) ?@p1={'@odata.id':'()'} |
| dataverse_get_audit_detailsA | Retrieve full details from a single audit record. Calls the bound RetrieveAuditDetails function on the audit entity, returning a polymorphic AuditDetail. The most common subtype is AttributeAuditDetail which includes OldValue and NewValue (each containing the changed attribute values keyed by logical name) plus InvalidNewValueAttributes. Common AuditDetail subtypes (identified by @odata.type):
Note: requires auditing enabled on the org. If auditing is disabled, Dataverse returns an HTTP error — check the error message for guidance. URL form: GET /api/data/v9.2/audits()/Microsoft.Dynamics.CRM.RetrieveAuditDetails |
| dataverse_list_auditA | Query the audit table with optional OData filters. Returns audit records from the 'audits' entity set. Common columns:
Use dataverse_get_audit_details to fetch full before/after values for a specific audit record. Note: requires auditing enabled on the org. If auditing is disabled, Dataverse may return an empty result set or an HTTP error. |
| dataverse_list_async_operationsA | List asyncoperation (system job) records in the Dataverse environment. Returns asyncoperationid, name, operationtype, statecode, statuscode, message, friendlymessage, startedon, completedon, createdon, modifiedon, and _regardingobjectid_value. Also includes statecode_label and statuscode_label for human readability. Filter by state_code (0=Ready,1=Suspended,2=Locked,3=Completed), status_code (0=WaitingForResources,10=Waiting,20=InProgress,21=Pausing, 22=Canceling,30=Succeeded,31=Failed,32=Canceled), or operation_type (raw int). Use dataverse_get_async_operation for full details on a specific job. |
| dataverse_get_async_operationA | Retrieve a single asyncoperation (system job) record by its GUID. Returns the full record including name, operationtype, statecode, statuscode, message, friendlymessage, startedon, completedon, and _regardingobjectid_value. Also includes statecode_label and statuscode_label for human readability. |
| dataverse_list_web_resourcesA | List webresource records in the Dataverse environment. Returns webresourceid, name, displayname, webresourcetype (+ label), description, languagecode, ismanaged, iscustomizable, createdon, modifiedon. Content is excluded from list results (it can be very large); use dataverse_get_web_resource with include_content=true to retrieve it. Filter by web_resource_type (1=HTML, 2=CSS, 3=JScript, 4=XML, 5=PNG, 6=JPG, 7=GIF, 8=XAP, 9=XSL, 10=ICO, 11=SVG, 12=RESX) and/or name_contains for a case-sensitive substring match on the name field. After creating or updating a web resource, call dataverse_publish_customizations to make changes live. |
| dataverse_get_web_resourceA | Retrieve a single webresource record by its GUID. Returns webresourceid, name, displayname, webresourcetype (+ label), description, languagecode, ismanaged, iscustomizable, createdon, modifiedon. Set include_content=true to also retrieve the base64-encoded content field (may be large for images and script bundles — a 5 MB cap applies). IMPORTANT: this returns the PUBLISHED version of the web resource. Edits made via dataverse_update_web_resource are saved to the unpublished draft and will NOT appear here until you call dataverse_publish_customizations for this web resource. (The Dataverse RetrieveUnpublished message — not exposed by this server — is what tooling uses to read the draft before publishing.) |
| dataverse_list_custom_apisA | List Custom API records in the Dataverse environment. Returns customapiid, uniquename, name, displayname, bindingtype, isfunction, isprivate, and allowedcustomprocessingsteptype for each record. Use the optional filter parameter to narrow results with an OData $filter expression (e.g., "isprivate eq false", "isfunction eq true"). bindingtype: 0=Global, 1=Entity, 2=EntityCollection. allowedcustomprocessingsteptype: 0=None, 1=AsyncOnly, 2=SyncAndAsync. Use dataverse_get_custom_api to fetch expanded request parameters and response properties for a specific Custom API. |
| dataverse_get_custom_apiA | Retrieve a single Custom API record by its GUID, including expanded request parameters and response properties. Returns all default columns plus:
|
| dataverse_list_custom_api_request_parametersA | List request parameter records for a Custom API. Filters by custom_api_id (GUID) to return only parameters belonging to that Custom API. Returns customapirequestparameterid, uniquename, name, displayname, type, isoptional for each record. Type enum: 0=Boolean, 1=DateTime, 2=Decimal, 3=Entity, 4=EntityCollection, 5=EntityReference, 6=Float, 7=Integer, 8=Money, 9=Picklist, 10=String, 11=StringArray, 12=Guid. An optional OData filter expression can further narrow results. |
| dataverse_list_custom_api_response_propertiesA | List response property records for a Custom API. Filters by custom_api_id (GUID) to return only properties belonging to that Custom API. Returns customapiresponsepropertyid, uniquename, name, displayname, type for each record. Type enum: 0=Boolean, 1=DateTime, 2=Decimal, 3=Entity, 4=EntityCollection, 5=EntityReference, 6=Float, 7=Integer, 8=Money, 9=Picklist, 10=String, 11=StringArray, 12=Guid. An optional OData filter expression can further narrow results. |
| dataverse_analyze_dependenciesA | Analyze dependencies for a Dataverse solution component. Exposes three directions via the direction parameter:
Use component_type integer codes (1=Entity, 2=Attribute, 61=WebResource, etc.) and the component's metadata GUID for component_id. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryanmichaeljames/dataverse-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server