Create a new virtual dimension draft without publishing. `virtualDimensionId` in inputs equals `id` from list/get/search. Call get_skill with skillId: "virtual-dimensions" first — see skill for allocation shapes, CEL rules, and full workflow. For a new `telemetry` allocation, discover a live integration metric via list_metrics with includeExternal: true and a specific search term, then persist inline `externalMetric` { provider, integrationId, metricName, aggregator, groupByFields }. For BigQuery/S3, also set dateColumn and metricColumn from the returned `schema` (first DATE / first NUMERIC) and gapFillingMethod (default FORWARD_FILL). Catalog-complete providers (Tsuga, Datadog, CloudWatch, Amplitude, Google Cloud Monitoring) do not need those fields. Do not set `datasource` on new reallocations. `bqName` (BigQuery/CEL query field, e.g. Environment → virtual_environment) is set once from `name` at create and is immutable. Ordered `rules` use `conditionCel` + `allocation` — do not send rule `id` (generated on save) or `values` (derived). Do not include catch-all/leftover in `rules` — `leftoverRule` is auto-added. Rejects invalid payloads — nothing persisted unless validation passes. On success: `virtualDimensionId`, `bqName`, `name`, `description`, `tags`, `values`, rules with generated ids, `leftoverRule`, `draftValidation: { ok: true }`, `draftPersisted: true`. Use preview_virtual_dimension_draft next. Use returned `bqName` for groupBy/filterCel in query after publish. Does not publish or refresh BigQuery. Clerk MCP only.
EXAMPLE: "Draft an Environment VDIM with a prod rule" → { name: "Environment", tagNames: ["finops"], rules: [{ name: "Production", conditionCel: "cos_environment in [\"prod\"]", allocation: { allocationType: "dimensionValue", dimensionValue: "prod" } }] }
ConnectorOAuth