An app folder is described by platformdtc.app.toml at its root, and each extension by a platformdtc.extension.toml in its own folder. The CLI validates both before it calls the partner API, and dtc app config push / dtc app deploy send them as an app update plus a new version. The format follows shopify.app.toml, so a Shopify app’s config maps over key for key where the concept exists.

platformdtc.app.toml

Top level

The client_secret never goes in this file. dtc app config link writes it to .env as PLATFORMDTC_API_SECRET; keep .env out of version control.

[access_scopes]

[access_scopes.justifications] is required: one non-empty string per scope in scopes, keyed by the scope. The merchant reads this text on the consent screen, and review checks it (scope_justifications_complete, see App Store listing).

[auth]

[webhooks]

Each [[webhooks.subscriptions]] entry has a uri and either topics or compliance_topics. Two platform rules:
  • One endpoint for events. Every non-compliance topic of an app is delivered to one endpoint (the app’s webhook_endpoint_url), so all topics subscriptions must resolve to the same URL. Different URLs are a validation error.
  • Compliance topics may each have their own URL. Public apps must declare all three compliance topics.

[app_proxy]

Serves a path on the merchant’s storefront domain from your app: https://<store domain>/<prefix>/<subpath>/* is forwarded to url with a signed query string. Links shown under your app in the merchant dashboard sidebar. Embedded apps only; at most 10.

[extensions]

[skill]

For type = "skill" only. See Skill apps.

[build]

platformdtc.extension.toml

When a merchant uninstalls the app, its theme app blocks render nothing.

Agent tools

A folder with type = "agent_tools" declares the tools the merchant’s AI assistant can call on your app (see Agent tools). It has no bundle: it takes type, handle, name and tools only, and an app has at most one. Each tool in the file:
extensions/assistant/platformdtc.extension.toml
extensions/assistant/tools.json

Complete example

platformdtc.app.toml

How the file maps to the API

App fields change with PATCH /partner/apps/{id}. Everything in the version column creates a new version, and a new version needs a new review before merchants can install it.