Skip to content

Tools Apps

Ryan James edited this page Aug 17, 2026 · 2 revisions

Apps tools

This page is generated from the code by scripts/gen_wiki_tools.py — do not edit by hand.

10 tools · category token apps · enable with DATAVERSE_TOOLS=apps (unset enables every category)

Tool-Index · Home

Write tools additionally require DATAVERSE_ALLOW_WRITE=true; delete tools require DATAVERSE_ALLOW_DELETE=true.


dataverse_add_app_components

Write · non-idempotent · category apps

Add components (tables, forms, views, charts, BPFs) to a model-driven app.

Each component specifies a type and either an id (GUID) or logical_name (for tables). Table components are resolved to their MetadataId automatically. Publishes automatically — no separate publish needed. Use dataverse_get_app first to check the current component list. Requires DATAVERSE_ALLOW_WRITE=true.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app to add components to. (min_len=36, max_len=36)
components list[AppComponentSpec] yes Components to add. Each has type and either id (GUID) or logical_name (for tables). Use dataverse_get_app to see current components before adding. (min_len=1)

Returns {"added": ..., "app_id": ..., "component_count": ..., "published": ...}. Errors return {"error": true, "message": "..."}.


dataverse_assign_app_role

Delete · idempotent · category apps

Associate or disassociate a Dataverse security role with a model-driven app.

action='add' grants users in the role access to the app; action='remove' revokes it. Use dataverse_query_table against the 'roles' entity set to find role IDs. Requires DATAVERSE_ALLOW_WRITE=true. The remove path (action='remove') issues a DELETE and additionally requires DATAVERSE_ALLOW_DELETE=true.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app. (min_len=36, max_len=36)
role_id str yes GUID of the security role to associate or disassociate. (min_len=36, max_len=36)
action str yes 'add' to grant the role access to the app; 'remove' to revoke it.

Returns {"action": ..., "app_id": ..., "role_id": ..., "success": ...}. Errors return {"error": true, "message": "..."}.


dataverse_create_app

Write · non-idempotent · category apps

Create a new model-driven app (AppModule) in a Dataverse environment.

When tables is provided, auto-generates a sitemap and adds the entity components. Validates and publishes automatically by default — pass validate=false or publish=false to skip. Always provide tables: an app without a sitemap fails validation and cannot be published. Requires DATAVERSE_ALLOW_WRITE=true.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
name str yes Display name of the app (e.g. 'My Operations App'). (min_len=1, max_len=100)
unique_name str yes Unique name for the app. Dataverse auto-prepends the publisher prefix (e.g. 'new_'). Use only English letters, digits, and underscores. (min_len=1, max_len=100)
description str | None no None Optional description for the app.
tables list[str] | None no None Logical names of tables to add as entity components and include in the auto-generated sitemap (e.g. ['account', 'contact']). Strongly recommended — apps without a sitemap fail validation and cannot be published.
run_validate bool no True Run ValidateApp after creating. If validation errors exist, publish is skipped unless publish_anyway=true.
publish bool no True Publish the app after creation (and successful validation).
publish_anyway bool no False Publish even when validation errors are present. Use with caution.

Returns {"created": ..., "app_id": ..., "name": ..., "sitemap_id": ..., "components_added": ..., "failed_tables": ..., "validation": ..., "published": ...} or {"created": ..., "app_id": ..., "name": ..., "sitemap_id": ..., "components_added": ..., "failed_tables": ..., "validation": ..., "published": ..., "message": ...}. Errors return {"error": true, "message": "..."}.


dataverse_get_app

Read · idempotent · category apps

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.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app (appmoduleid) to retrieve. (min_len=36, max_len=36)

Returns {"app_id": ..., "app_id_unique": ..., "name": ..., "unique_name": ..., "description": ..., "is_published": ..., "state": ..., "client_type": ..., "components": ..., "component_count": ...}. Errors return {"error": true, "message": "..."}.


dataverse_list_apps

Read · idempotent · category apps

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.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
include_unpublished bool no False When true, uses RetrieveUnpublishedMultiple to include apps that have not yet been published. Defaults to false (published apps only).
top int no 50 Maximum number of records to return. (ge=1, le=5000)

Returns {"apps": ..., "count": ..., "has_more": ...}. Errors return {"error": true, "message": "..."}.


dataverse_publish_app

Write · idempotent · category apps

Publish a model-driven app to make it visible to users.

Unpublished changes remain invisible until this is called. Use dataverse_validate_app first to catch errors before publishing. Requires DATAVERSE_ALLOW_WRITE=true.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app to publish. (min_len=36, max_len=36)

Returns {"published": ..., "app_id": ...}. Errors return {"error": true, "message": "..."}.


dataverse_remove_app_components

Write · idempotent · category apps

Remove components from a model-driven app.

Uses the same component spec format as dataverse_add_app_components. Use object_id values from dataverse_get_app to identify components to remove. Publishes automatically — no separate publish needed. Requires DATAVERSE_ALLOW_WRITE=true.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app to remove components from. (min_len=36, max_len=36)
components list[AppComponentSpec] yes Components to remove. Use object_id values from dataverse_get_app. Each has type and either id (GUID) or logical_name (for tables). (min_len=1)

Returns {"removed": ..., "app_id": ..., "component_count": ..., "published": ...}. Errors return {"error": true, "message": "..."}.


dataverse_set_app_sitemap

Write · idempotent · category apps

Create or replace the navigation sitemap for a model-driven app.

Provide tables (flat list — auto-generates Area/Group) or areas (structured). Validates the generated XML before writing. Publishes automatically — no separate publish needed. Returns sitemapxml_backup (prior XML or null) for rollback. Requires DATAVERSE_ALLOW_WRITE=true.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app whose sitemap to create or update. (min_len=36, max_len=36)
tables list[str] | None no None Flat list of table logical names — auto-generates one Area with one Group. Mutually exclusive with areas. Example: ['account', 'contact', 'opportunity'].
areas list[dict] | None no None Structured sitemap as a list of area dicts. Each area: {title: str, id?: str, groups: [{title: str, id?: str, subareas: [{entity?: str, url?: str, title?: str, id?: str}]}]}. Mutually exclusive with tables.
area_title str no 'Main' Title for the auto-generated area (only used when tables is provided).
group_title str no 'Workspace' Title for the auto-generated group (only used when tables is provided).

Returns {"updated": ..., "app_id": ..., "sitemap_id": ..., "sitemap_created": ..., "published": ..., "sitemapxml_backup": ...}. Errors return {"error": true, "message": "..."}.


dataverse_update_app

Write · idempotent · category apps

Update a model-driven app's name or description.

To add or remove components use dataverse_add_app_components / dataverse_remove_app_components. To replace navigation use dataverse_set_app_sitemap. Requires DATAVERSE_ALLOW_WRITE=true.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app to update. (min_len=36, max_len=36)
name str | None no None New display name for the app. (min_len=1, max_len=100)
description str | None no None New description for the app.

Returns JSON. Errors return {"error": true, "message": "..."}.


dataverse_validate_app

Read · idempotent · category apps

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.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
app_id str yes GUID of the app to validate. (min_len=36, max_len=36)

Returns JSON. Errors return {"error": true, "message": "..."}.


Clone this wiki locally