Skip to main content
Glama

Costory: Your Finops MCP

create_virtual_dimension_draft

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" } }] }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new virtual dimension
slugNoOrganization slug. Omit to auto-detect from your account (fails if you belong to multiple orgs).
rulesNoOrdered rules with conditionCel and allocation
tagNamesNoTag names to attach (created if missing)
descriptionNoOptional longer description (default empty).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / rules / items / properties / allocation / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "dimensionValue",
      -        "type": "string"
      -      },
      -      "dimensionValue": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "dimensionValue"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "existingColumn",
      -        "type": "string"
      -      },
      -      "existingColumn": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "existingColumn"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "splitCost",
      -        "type": "string"
      -      },
      -      "reAllocationParams": {
      -        "discriminator": {
      -          "propertyName": "type"
      -        },
      -        "oneOf": [
      -          {
      -            "properties": {
      -              "partitions": {
      -                "items": {
      -                  "properties": {
      -                    "label": {
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "weight": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "label",
      -                    "weight"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "type": {
      -                "const": "custom",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "partitions"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "reAllocationParams"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "telemetry",
      -        "type": "string"
      -      },
      -      "datasource": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "externalMetric": {
      -        "properties": {
      -          "aggregator": {
      -            "enum": [
      -              "SUM",
      -              "AVG",
      -              "MAX",
      -              "MIN"
      -            ],
      -            "type": "string"
      -          },
      -          "conditions": {
      -            "type": "string"
      -          },
      -          "dateColumn": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "gapFillingMethod": {
      -            "enum": [
      -              "ZERO",
      -              "FORWARD_FILL",
      -              "LINEAR_INTERPOLATION",
      -              "SPREAD"
      -            ],
      -            "type": "string"
      -          },
      -          "groupByFields": {
      -            "default": [],
      -            "items": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "maxItems": 7,
      -            "type": "array"
      -          },
      -          "integrationId": {
      -            "description": "External metric integration ID from list_metrics(includeExternal: true).",
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "metricColumn": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "metricName": {
      -            "default": "",
      -            "type": "string"
      -          },
      -          "provider": {
      -            "enum": [
      -              "tsuga",
      -              "bigquery",
      -              "datadog",
      -              "cloudwatch",
      -              "s3",
      -              "amplitude",
      -              "snowflake",
      -              "cloudmonitoring"
      -            ],
      -            "type": "string"
      -          },
      -          "query": {
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "provider",
      -          "integrationId"
      -        ],
      -        "type": "object"
      -      },
      -      "mappingParams": {
      -        "properties": {
      -          "mapping": {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "propertyNames": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "mapping"
      -        ],
      -        "type": "object"
      -      },
      -      "mappingType": {
      -        "enum": [
      -          "mapping",
      -          "regexMapping",
      -          "identity"
      -        ],
      -        "type": "string"
      -      },
      -      "regexTransformation": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "mappingType",
      -      "mappingParams"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "dimensionValue",
      +        "type": "string"
      +      },
      +      "dimensionValue": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "dimensionValue"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "existingColumn",
      +        "type": "string"
      +      },
      +      "existingColumn": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "existingColumn"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "splitCost",
      +        "type": "string"
      +      },
      +      "reAllocationParams": {
      +        "discriminator": {
      +          "propertyName": "type"
      +        },
      +        "oneOf": [
      +          {
      +            "properties": {
      +              "partitions": {
      +                "items": {
      +                  "properties": {
      +                    "label": {
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "weight": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "label",
      +                    "weight"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "type": {
      +                "const": "custom",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type",
      +              "partitions"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "reAllocationParams"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "telemetry",
      +        "type": "string"
      +      },
      +      "datasource": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "externalMetric": {
      +        "properties": {
      +          "aggregator": {
      +            "enum": [
      +              "SUM",
      +              "AVG",
      +              "MAX",
      +              "MIN"
      +            ],
      +            "type": "string"
      +          },
      +          "conditions": {
      +            "type": "string"
      +          },
      +          "dateColumn": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "gapFillingMethod": {
      +            "enum": [
      +              "ZERO",
      +              "FORWARD_FILL",
      +              "LINEAR_INTERPOLATION",
      +              "SPREAD"
      +            ],
      +            "type": "string"
      +          },
      +          "groupByFields": {
      +            "default": [],
      +            "items": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 7,
      +            "type": "array"
      +          },
      +          "integrationId": {
      +            "description": "External metric integration ID from list_metrics(includeExternal: true).",
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "metricColumn": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "metricName": {
      +            "default": "",
      +            "type": "string"
      +          },
      +          "provider": {
      +            "enum": [
      +              "tsuga",
      +              "bigquery",
      +              "datadog",
      +              "cloudwatch",
      +              "s3",
      +              "amplitude",
      +              "snowflake",
      +              "cloudmonitoring",
      +              "push"
      +            ],
      +            "type": "string"
      +          },
      +          "query": {
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "provider",
      +          "integrationId"
      +        ],
      +        "type": "object"
      +      },
      +      "mappingParams": {
      +        "properties": {
      +          "mapping": {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "mapping"
      +        ],
      +        "type": "object"
      +      },
      +      "mappingType": {
      +        "enum": [
      +          "mapping",
      +          "regexMapping",
      +          "identity"
      +        ],
      +        "type": "string"
      +      },
      +      "regexTransformation": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "mappingType",
      +      "mappingParams"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / rules / items / properties / allocation / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "dimensionValue",
      -        "type": "string"
      -      },
      -      "dimensionValue": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "dimensionValue"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "existingColumn",
      -        "type": "string"
      -      },
      -      "existingColumn": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "existingColumn"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "splitCost",
      -        "type": "string"
      -      },
      -      "reAllocationParams": {
      -        "discriminator": {
      -          "propertyName": "type"
      -        },
      -        "oneOf": [
      -          {
      -            "properties": {
      -              "partitions": {
      -                "items": {
      -                  "properties": {
      -                    "label": {
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "weight": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "label",
      -                    "weight"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "type": {
      -                "const": "custom",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "partitions"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "reAllocationParams"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "telemetry",
      -        "type": "string"
      -      },
      -      "datasource": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "externalMetric": {
      -        "properties": {
      -          "aggregator": {
      -            "enum": [
      -              "SUM",
      -              "AVG",
      -              "MAX",
      -              "MIN"
      -            ],
      -            "type": "string"
      -          },
      -          "conditions": {
      -            "type": "string"
      -          },
      -          "dateColumn": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "gapFillingMethod": {
      -            "enum": [
      -              "ZERO",
      -              "FORWARD_FILL",
      -              "LINEAR_INTERPOLATION",
      -              "SPREAD"
      -            ],
      -            "type": "string"
      -          },
      -          "groupByFields": {
      -            "default": [],
      -            "items": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "maxItems": 7,
      -            "type": "array"
      -          },
      -          "integrationId": {
      -            "description": "External metric integration ID from list_metrics(includeExternal: true).",
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "metricColumn": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "metricName": {
      -            "default": "",
      -            "type": "string"
      -          },
      -          "provider": {
      -            "enum": [
      -              "tsuga",
      -              "bigquery",
      -              "datadog",
      -              "cloudwatch",
      -              "s3",
      -              "amplitude",
      -              "snowflake"
      -            ],
      -            "type": "string"
      -          },
      -          "query": {
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "provider",
      -          "integrationId"
      -        ],
      -        "type": "object"
      -      },
      -      "mappingParams": {
      -        "properties": {
      -          "mapping": {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "propertyNames": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "mapping"
      -        ],
      -        "type": "object"
      -      },
      -      "mappingType": {
      -        "enum": [
      -          "mapping",
      -          "regexMapping",
      -          "identity"
      -        ],
      -        "type": "string"
      -      },
      -      "regexTransformation": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "mappingType",
      -      "mappingParams"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "dimensionValue",
      +        "type": "string"
      +      },
      +      "dimensionValue": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "dimensionValue"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "existingColumn",
      +        "type": "string"
      +      },
      +      "existingColumn": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "existingColumn"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "splitCost",
      +        "type": "string"
      +      },
      +      "reAllocationParams": {
      +        "discriminator": {
      +          "propertyName": "type"
      +        },
      +        "oneOf": [
      +          {
      +            "properties": {
      +              "partitions": {
      +                "items": {
      +                  "properties": {
      +                    "label": {
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "weight": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "label",
      +                    "weight"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "type": {
      +                "const": "custom",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type",
      +              "partitions"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "reAllocationParams"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "telemetry",
      +        "type": "string"
      +      },
      +      "datasource": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "externalMetric": {
      +        "properties": {
      +          "aggregator": {
      +            "enum": [
      +              "SUM",
      +              "AVG",
      +              "MAX",
      +              "MIN"
      +            ],
      +            "type": "string"
      +          },
      +          "conditions": {
      +            "type": "string"
      +          },
      +          "dateColumn": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "gapFillingMethod": {
      +            "enum": [
      +              "ZERO",
      +              "FORWARD_FILL",
      +              "LINEAR_INTERPOLATION",
      +              "SPREAD"
      +            ],
      +            "type": "string"
      +          },
      +          "groupByFields": {
      +            "default": [],
      +            "items": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 7,
      +            "type": "array"
      +          },
      +          "integrationId": {
      +            "description": "External metric integration ID from list_metrics(includeExternal: true).",
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "metricColumn": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "metricName": {
      +            "default": "",
      +            "type": "string"
      +          },
      +          "provider": {
      +            "enum": [
      +              "tsuga",
      +              "bigquery",
      +              "datadog",
      +              "cloudwatch",
      +              "s3",
      +              "amplitude",
      +              "snowflake",
      +              "cloudmonitoring"
      +            ],
      +            "type": "string"
      +          },
      +          "query": {
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "provider",
      +          "integrationId"
      +        ],
      +        "type": "object"
      +      },
      +      "mappingParams": {
      +        "properties": {
      +          "mapping": {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "mapping"
      +        ],
      +        "type": "object"
      +      },
      +      "mappingType": {
      +        "enum": [
      +          "mapping",
      +          "regexMapping",
      +          "identity"
      +        ],
      +        "type": "string"
      +      },
      +      "regexTransformation": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "mappingType",
      +      "mappingParams"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / rules / items / properties / allocation / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "dimensionValue",
      -        "type": "string"
      -      },
      -      "dimensionValue": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "dimensionValue"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "existingColumn",
      -        "type": "string"
      -      },
      -      "existingColumn": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "existingColumn"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "splitCost",
      -        "type": "string"
      -      },
      -      "reAllocationParams": {
      -        "discriminator": {
      -          "propertyName": "type"
      -        },
      -        "oneOf": [
      -          {
      -            "properties": {
      -              "partitions": {
      -                "items": {
      -                  "properties": {
      -                    "label": {
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "weight": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "label",
      -                    "weight"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "type": {
      -                "const": "custom",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "partitions"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "reAllocationParams"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "allocationType": {
      -        "const": "telemetry",
      -        "type": "string"
      -      },
      -      "datasource": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "externalMetric": {
      -        "properties": {
      -          "aggregator": {
      -            "enum": [
      -              "SUM",
      -              "AVG",
      -              "MAX",
      -              "MIN"
      -            ],
      -            "type": "string"
      -          },
      -          "conditions": {
      -            "type": "string"
      -          },
      -          "dateColumn": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "gapFillingMethod": {
      -            "enum": [
      -              "ZERO",
      -              "FORWARD_FILL",
      -              "LINEAR_INTERPOLATION",
      -              "SPREAD"
      -            ],
      -            "type": "string"
      -          },
      -          "groupByFields": {
      -            "default": [],
      -            "items": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "maxItems": 7,
      -            "type": "array"
      -          },
      -          "integrationId": {
      -            "description": "External metric integration ID from list_metrics(includeExternal: true).",
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "metricColumn": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "metricName": {
      -            "default": "",
      -            "type": "string"
      -          },
      -          "provider": {
      -            "enum": [
      -              "tsuga",
      -              "bigquery",
      -              "datadog",
      -              "cloudwatch",
      -              "s3",
      -              "amplitude"
      -            ],
      -            "type": "string"
      -          },
      -          "query": {
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "provider",
      -          "integrationId"
      -        ],
      -        "type": "object"
      -      },
      -      "mappingParams": {
      -        "properties": {
      -          "mapping": {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "propertyNames": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "mapping"
      -        ],
      -        "type": "object"
      -      },
      -      "mappingType": {
      -        "enum": [
      -          "mapping",
      -          "regexMapping",
      -          "identity"
      -        ],
      -        "type": "string"
      -      },
      -      "regexTransformation": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "allocationType",
      -      "mappingType",
      -      "mappingParams"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "dimensionValue",
      +        "type": "string"
      +      },
      +      "dimensionValue": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "dimensionValue"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "existingColumn",
      +        "type": "string"
      +      },
      +      "existingColumn": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "existingColumn"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "splitCost",
      +        "type": "string"
      +      },
      +      "reAllocationParams": {
      +        "discriminator": {
      +          "propertyName": "type"
      +        },
      +        "oneOf": [
      +          {
      +            "properties": {
      +              "partitions": {
      +                "items": {
      +                  "properties": {
      +                    "label": {
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "weight": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "label",
      +                    "weight"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "type": {
      +                "const": "custom",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type",
      +              "partitions"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "reAllocationParams"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "allocationType": {
      +        "const": "telemetry",
      +        "type": "string"
      +      },
      +      "datasource": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "externalMetric": {
      +        "properties": {
      +          "aggregator": {
      +            "enum": [
      +              "SUM",
      +              "AVG",
      +              "MAX",
      +              "MIN"
      +            ],
      +            "type": "string"
      +          },
      +          "conditions": {
      +            "type": "string"
      +          },
      +          "dateColumn": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "gapFillingMethod": {
      +            "enum": [
      +              "ZERO",
      +              "FORWARD_FILL",
      +              "LINEAR_INTERPOLATION",
      +              "SPREAD"
      +            ],
      +            "type": "string"
      +          },
      +          "groupByFields": {
      +            "default": [],
      +            "items": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 7,
      +            "type": "array"
      +          },
      +          "integrationId": {
      +            "description": "External metric integration ID from list_metrics(includeExternal: true).",
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "metricColumn": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "metricName": {
      +            "default": "",
      +            "type": "string"
      +          },
      +          "provider": {
      +            "enum": [
      +              "tsuga",
      +              "bigquery",
      +              "datadog",
      +              "cloudwatch",
      +              "s3",
      +              "amplitude",
      +              "snowflake"
      +            ],
      +            "type": "string"
      +          },
      +          "query": {
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "provider",
      +          "integrationId"
      +        ],
      +        "type": "object"
      +      },
      +      "mappingParams": {
      +        "properties": {
      +          "mapping": {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "mapping"
      +        ],
      +        "type": "object"
      +      },
      +      "mappingType": {
      +        "enum": [
      +          "mapping",
      +          "regexMapping",
      +          "identity"
      +        ],
      +        "type": "string"
      +      },
      +      "regexTransformation": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "allocationType",
      +      "mappingType",
      +      "mappingParams"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate readOnlyHint false / destructiveHint false, so the description carries the burden and delivers extensively: 'Rejects invalid payloads — nothing persisted unless validation passes', success includes 'draftPersisted: true' and 'draftValidation: { ok: true }', rule ids are 'generated on save', leftoverRule is 'auto-added', and 'bqName … is immutable'. Side effects and validation behavior are fully disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is front-loaded with the core purpose, then organized into lifecycle guidance, allocation details, constraints, response shape, and an example before the schema. However, it is extremely dense and contains redundancy — the BigQuery/S3 dateColumn/metricColumn/gapFillingMethod requirement is stated twice ('For BigQuery/S3, also set…' and 'For BigQuery/S3, dateColumn, metricColumn, and gapFillingMethod are required…').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no separate output schema, the description enumerates the full success response ('virtualDimensionId, bqName, name, description, tags, values, rules with generated ids, leftoverRule, draftValidation: { ok: true }, draftPersisted: true'), covers failure behavior, advanced allocation semantics, required prerequisite skill, following tool, and a worked example — complete for a tool with this much nested logic and many relevant siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema already covers all 5 parameters, the description adds substantial meaning beyond it: 'virtualDimensionId in inputs equals id from list/get/search', 'bqName … is set once from name at create', rules must not send 'id (generated on save) or values (derived)', the four allocation types are spelled out, and BigQuery/S3 requirements (dateColumn/metricColumn from list_metrics schema, default gapFillingMethod FORWARD_FILL) go far beyond the bare property definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opening phrase 'Create a new virtual dimension draft without publishing' names a specific verb, resource, and lifecycle state, distinguishing it from the sibling publish_virtual_dimension_draft. The embedded EXAMPLE ('Draft an Environment VDIM with a prod rule') makes the intent unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs prerequisites ('Call get_skill with skillId: "virtual-dimensions" first'), next steps ('Use preview_virtual_dimension_draft next'), and exclusions ('Do not set datasource on new reallocations', 'Do not include catch-all/leftover in rules', 'Does not publish or refresh BigQuery'). It also explains the relationship to query after publish ('Use returned bqName for groupBy/filterCel in query after publish').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources