Define external assets in your Dagster code location using the external_asset_from_spec helper or by creating AssetSpec objects with external=True; this tells Dagster to track the asset without owning its computation
Obtain a Dagster+ user token or agent token from the Tokens section of your Dagster+ organization settings; store it as an environment variable
Send a POST request to your Dagster deployment's REST API endpoint /api/event-streaming/external-assets/batch-report-materialization with headers Authorization: Bearer YOUR_TOKEN and a JSON body listing asset keys and optional metadata
Verify the materialization was recorded by querying GET /api/asset-materializations?assetKey=... or by checking the asset page in the Dagster UI, where the latest materialization timestamp should update
Pair the external asset with an asset sensor or AutomationCondition so that downstream Dagster assets auto-materialize in response to the external event
Known gotchas
External assets declared without external=True will be treated as internal assets that Dagster expects to own; triggering them via the external API may conflict with internal scheduling
The batch-report endpoint path may differ between Dagster OSS and Dagster+; verify the exact route in the version of the dagster package you have deployed before building integrations
Materialization events are append-only; there is no patch or delete operation, so incorrect metadata emitted to an external asset persists in the event log until overwritten by a subsequent materialization report
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp