[BUG] Dataverse MCP connector — all write operations fail with JObject does not match expected type 'String' for item parameter

Open 💬 6 comments Opened Jun 8, 2026 by arraayyy

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

All write operations through the Dataverse Tracking MCP connector (create_record, update_record) fail with the same error on every attempt, regardless of payload. Read operations (read_query, describe_table, list_tables) work normally. The failure happens before the request reaches Dataverse — confirmed by an empty plugin trace log — which points to a payload-serialization defect in the connector's write path: the "item" parameter is being sent as a JObject when the Dataverse API expects a String. Content, length, and formatting of the data were all ruled out as causes (plain strings, braces, base64, and full JSON all failed identically). Notably, a couple of writes succeeded early in the session, then all subsequent writes failed with no configuration change, suggesting a connector/session-state or platform-side issue.

What Should Happen?

The "item" parameter should be serialized correctly and accepted by the Dataverse Web API, creating or updating the row. A create_record on cr9bb_dailyreport with valid field values should return the new record's GUID, the same way read operations succeed against the same environment and tables.

Error Messages/Logs

Error returned on every write attempt:
Input field type 'JObject' does not match expected type 'String' for field 'item'
Plugin Trace Log: enabled and set to "All," then a fresh failing write was attempted. No Create/Update trace entry appeared for the target table (only unrelated msdyn_FormPredictAgent Microsoft AI plugin entries), confirming the request never reached Dataverse server-side processing.
Dataverse correlation IDs (for Microsoft cross-reference):
8247d6dc-bfd4-4b00-a814-e6473df8374d
2f3c87b8-4edd-4b7b-805c-46c1beefa9f7
b18e5d3d-cfbc-45bc-8118-1bbcb40f03ad
ffd287f6-fc1f-4362-967e-7514d13ba2f8
Anthropic request IDs (for connector-side investigation):
req_011Cbr72LA5mSNyhLTDaGxfT
req_011Cbr5ykBznEmHxyrgtpA9i
req_011Cbr4uf6vsLvKtwMWrXund

Steps to Reproduce

Steps to reproduce

  1. Connect the Dataverse MCP connector (https://tracking-srct.crm.dynamics.com/api/mcp) to the environment.
  2. Confirm reads work: run a read_query (e.g. SELECT TOP 1 cr9bb_reportname FROM cr9bb_dailyreport) — succeeds.
  3. Attempt a write: create_record on cr9bb_dailyreport with {"cr9bb_reportname": "TEST_nameonly_create"}.
  4. Observe the error: Input field type 'JObject' does not match expected type 'String' for field 'item'.
  5. Retry with different payloads (plain string, braces, base64, full JSON) and with update_record — all fail identically.
  6. (Optional confirmation) Enable Plugin Trace Log = All, repeat step 3, check the trace log table — no entry for the attempted write appears.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.146

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

_No response_

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗