Skip to content

First Steps

Ryan James edited this page Aug 17, 2026 · 1 revision

Five minutes, four prompts. Type these into your AI client after finishing Client-Setup. Nothing here writes to Dataverse — the default configuration registers read-only tools only.

Have your environment URL to hand (https://yourorg.crm.dynamics.com). Include it in the first prompt; most clients carry it through the rest of the conversation.

1. Confirm who you are

Using the Dataverse tools, tell me who I am in https://yourorg.crm.dynamics.com.

This calls dataverse_whoami and triggers the first sign-in — a browser window under interactive auth. It returns exactly three fields:

{
  "UserId": "00000000-0000-0000-0000-000000000000",
  "BusinessUnitId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000"
}

Three GUIDs back means auth, network, URL validation and Dataverse privileges are all working. If instead you get {"error": true, ...}, go to Troubleshooting.

Don't know the URL? Ask "list the Power Platform environments I can administer"dataverse_list_environments returns an instance_url per environment, which is the dataverse_url every other tool wants.

2. List tables

List the custom tables in that environment.

dataverse_list_tables with filter: "IsCustomEntity eq true". Each entry carries the two names you need later — LogicalName for metadata calls, EntitySetName for record queries:

{
  "tables": [
    { "LogicalName": "new_project", "EntitySetName": "new_projects", "IsCustomEntity": true, "IsManaged": false }
  ],
  "count": 1,
  "has_more": false
}

(trimmed — the real response also carries SchemaName and a localised DisplayName object)

3. Query records

Show me the 10 most recently modified active accounts — name and city only.

dataverse_query_table with entity_set_name: "accounts", select: ["name", "address1_city"], filter: "statecode eq 0", orderby: ["modifiedon desc"], top: 10. Records come back under records, with count and has_more.

Always say which columns you want. Left to itself the tool selects only createdon and modifiedon.

For joins, aggregation or anything OData $filter cannot express, ask for FetchXML instead — dataverse_execute_fetchxml.

4. Inspect a solution

What's in the MyApp solution?

dataverse_get_solution resolves it by unique name, then dataverse_list_solution_components lists what it contains with the component type codes resolved to names.

Follow-ups that work well: "what depends on the new_status global choice?" (dataverse_analyze_dependencies), "show me the forms on new_project", "why did last night's import job fail?" (dataverse_get_import_job_results).

Next

  • Tool-Index — all 200 tools, searchable.
  • Safety-and-Permissions — before you ask an agent to change anything. Write and delete tools are not registered until you opt in, and that is the guardrail worth understanding first.
  • Tool-Categories — if your client is struggling with 200 tools loaded at once.

Clone this wiki locally