Skip to content

Full Capabilities Reference ​

Version: 0.7.5 | API Version: Dataverse Web API v9.2 | Transport: stdio · HTTP/SSE

79 tools · 4 resources · 5 prompts across 27 categories for full Dataverse lifecycle management.

For detailed input/output examples, see the Use Cases section.


Tool Summary ​

#CategoryCountTools
1Auth1whoami
2Metadata9list_tables, get_table_metadata, get_relationships, list_global_option_sets, get_option_set, get_entity_key, get_attribute_option_set, update_entity, resolve_entity_name
3Query3query, execute_fetchxml, retrieve_multiple_with_paging
4CRUD6get, create, update, delete, upsert, assign
5Relations4associate, associate_bulk, disassociate, query_associations
6Actions & Functions6execute_action, execute_function, execute_bound_action, execute_bound_function, list_dependencies, retrieve_dependencies_for_delete
7Batch1batch_execute
8Change Tracking1change_detection
9Solutions2publish_customizations, create_sitemap
10Impersonation1impersonate
11Customization4list_custom_actions, list_plugin_steps, set_workflow_state, list_connection_references
12Environment4get_environment_variable, set_environment_variable, create_environment_variable, environment_capabilities
13Trace2get_plugin_trace_logs, get_workflow_trace_logs
14Search1search
15Audit1get_audit_log
16Quality1detect_duplicates
17Annotations2get_annotations, create_annotation
18Users2list_users, get_user_roles
19RBAC7list_roles, assign_role_to_user, remove_role_from_user, assign_role_to_team, get_role_privileges, add_role_privileges, replace_role_privileges
20Views1list_views
21Files2upload_file_column, download_file_column
22Org2list_business_units, list_teams
23Workflows4list_workflows, get_workflow, list_guides, get_guide
24Assistance2suggest_tools, list_tool_tags
25Attributes4create_attribute, update_attribute, delete_attribute, create_lookup_attribute
26Schema (write)2create_table, create_relationship
27Record Access4check_record_access, grant_access, revoke_access, merge_records
Total79

All tool names are prefixed with dataverse_ (e.g., dataverse_query, dataverse_create).


Architecture Overview ​

MCP Dataverse Server (79 tools · 4 resources · 5 prompts · 27 categories)
├── 🔑 Auth (1)
├── 📋 Metadata (9)
├── 🔍 Query (3)
├── ✏️ CRUD (6)
├── 🔗 Relations (4)
├── ⚡ Actions & Functions (6)
├── 📦 Batch (1)
├── 🔄 Change Tracking (1)
├── 🧩 Solutions (2)
├── 👤 Impersonation (1)
├── 🔧 Customization (4)
├── ⚙️ Environment (4)
├── 🔎 Trace (2)
├── 🔍 Search (1)
├── 📜 Audit (1)
├── ✅ Quality (1)
├── 📝 Annotations (2)
├── 👥 Users (2)
├── 🛡️ RBAC (7)
├── 👁️ Views (1)
├── 📁 Files (2)
├── 🏢 Org (2)
├── ⚙️ Workflows (4)
├── 🤖 Assistance (2)
├── 🏗️ Attributes (4)
├── 📐 Schema (2)
├── 🔐 Record Access (4)
├── 📂 Resources (4)   ← MCP Resources (static + templates)
└── 💬 Prompts (5)    ← MCP Prompts

All tool handlers validate inputs with Zod before calling the Dataverse Web API. Auth tokens are cached and refreshed proactively; transient errors (429, 503, 504) are retried with exponential backoff.


MCP Resources ​

Four read-only MCP resources provide direct contextual data to AI clients that support the MCP Resources spec (Claude Desktop, Cursor). Each returns JSON or plain text without requiring a tool call.

URITypeMIME TypeDescription
dataverse://tablesStaticapplication/jsonLists all tables in the environment (LogicalName, DisplayName, EntitySetName)
dataverse://server/instructionsStatictext/plainAgent best practices and tool usage guidelines
dataverse://tables/{tableName}/schemaTemplateapplication/jsonAll columns, types, requirement levels, and constraints for a table
dataverse://tables/{tableName}/relationshipsTemplateapplication/jsonAll 1:N, N:1, and N:N relationships for a table

Client support: Resources are fully supported in Claude Desktop and Cursor. GitHub Copilot VS Code and Codex CLI support MCP Tools only; use dataverse_list_tables + dataverse_get_table_metadata as substitutes.


MCP Prompts ​

Five built-in prompt templates guide AI agents through complex multi-step Dataverse workflows. Each prompt composes tools in a recommended sequence and returns a structured report.

Prompt nameRequired argsOptional argsPurpose
analyze-org-health(none)(none)Full org health: table count, roles, workflows summary
data-quality-checktableNamesampleSize (default: 50, max: 500)Nullity rates, duplicate detection, completeness score
schema-reviewtableName(none)Schema best practices for naming, types, relations, views
security-audit(none)(none)Over-privileged users, empty teams, orphaned role assignments
analyze-workflow(none)workflowName (substring filter), statusFilter (active/inactive/all, default: active)Workflow health, error rates, ownership

Key Features ​

Structured Outputs ​

Every tool returns a consistent structure:

json
{
  "summary": "Human-readable summary of the result",
  "data": {},
  "suggestions": ["Next steps the AI agent can take"]
}

When an error has a well-known root cause, tools also include an errorCategory field to enable programmatic error handling:

ValueMeaning
ENV_LIMITATIONFeature not enabled or unavailable in this environment
PERMISSIONSInsufficient privileges for the operation
SCHEMA_MISMATCHInput conflicts with the table’s metadata schema

Guardrails ​

  • Destructive operations (delete, update_entity) require confirm: true
  • Query guardrails warn about missing $select, missing $filter, and large result sets
  • RBAC operations are idempotent — assigning an already-assigned role returns "already_assigned" instead of an error

ETag Support ​

dataverse_update accepts an optional etag parameter for optimistic concurrency control. When provided, the update only succeeds if the record hasn't been modified since the ETag was obtained.

Impersonation ​

Any tool can be executed on behalf of another user via dataverse_impersonate, using the MSCRMCallerId header. Requires prvActOnBehalfOfAnotherUser privilege.


Error Handling & Retry ​

StatusBehaviorAttempts
401Invalidate token, retry with fresh token1
429 / 503 / 504Exponential backoff (2^attempt × 1000 ms)maxRetries (default 3)
OtherThrow immediately with actionable message0

Security ​

FeatureDetails
Token encryptionAES-256-GCM cached credentials at ~/.mcp-dataverse/
OData injectionesc() utility for single-quote escaping
File column safetycolumnName validated against /^[a-zA-Z0-9_]+$/
Impersonation cleanupMSCRMCallerId cleaned in finally block
No secrets in logsPAT, tokens, and headers never appear in tool responses

Limitations ​

AreaLimitation
Transportstdio (default) and HTTP. Server must be spawned or run as HTTP service.
Single environmentOne Dataverse environment per server instance
No streamingResponses are complete JSON; large result sets may exceed AI context limits
$top maxdataverse_query caps at 5 000 per call; use retrieve_multiple_with_paging for more
Paging maxretrieve_multiple_with_paging caps at 50 000 records
Batch max1 000 operations per $batch request
No $<Content-ID>Cross-referencing created entities within a changeset not supported
Token expiryRefresh tokens expire after ~90 days of inactivity

For the complete technical reference with parameter tables, see CAPABILITIES.md on GitHub.