Skip to main content
Glama
Blazemeter

BlazeMeter Service Virtualization MCP Server

Official
by Blazemeter

virtual_services_test_data

Create, list, read, and update test data datasets for virtual services, using schema-based generators or CSV files to supply request variables.

Instructions

    Operations on TDM (Test Data Manager) datasets for virtual services.

    Dataset variables are referenced in transaction DSLs using ${fieldName} syntax (not Handlebars).
    Matcher name rules — MUST follow these exactly or matching will fail:
      - URL path with ${fieldName}: matcherName MUST be "equals_url". Never use "matches_url" with variables.
        Example: path "/users/${id}", matcherName "equals_url", matchingValue "/users/${id}"
      - Headers, query params, cookies: matcherName must be "equals" or "equals_insensitive".
        "contains", "matches", "not_matches" do NOT work with dataset variables.
      - Body (plain text): matcherName "equals"
      - Body (JSON): matcherName "equals_json" (variables embedded as JSON values e.g. {"id": "${id}"})
        or "matches_json" with equalTo() helper e.g. [[$.field, equalTo(${id})]]
      - Body (XML): matcherName "equals_xml" or "matches_xml" with matching() helper
      - Response content: base64-encoded string containing ${fieldName} — variables resolve at runtime.
    Additional rules:
      - If the same variable appears multiple times in one transaction (e.g. /test/${id}/${id}?q=${id}),
        ALL occurrences must match the SAME value in the incoming request.
      - Variables not defined in the dataset are treated as literal strings — the request must contain
        the exact text "${varName}" to match.
    Note: Handlebars ({{...}}) is separate — it is for dynamic response templating, not dataset substitution.

    Actions:
    - create_from_schema: Create a dataset by defining entities with field names and generator
        expressions. Supported generators include sequenceGenerator(start), randInt(min,max),
        randText(minLen,maxLen), randDate(min,max), guid(), regExp(pattern), and 80+ others.
        See https://help.blazemeter.com/docs/guide/test-data-generator-functions.html
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory. Used in package/asset naming.
            entities (list): Mandatory. Each entry:
                name (str): entity name.
                fields (list): each {name: str, generator: str}.
                repeat (int, default=1000): rows to generate.
            global_variables (dict, optional): flat str→str map of global variables.

    - create_from_csv: Create a dataset from a local CSV file. Column headers become field names;
        the entity name is derived as "{stem}_csv" (e.g. accounts.csv → entity "accounts_csv").
        Generators use valueOfCSV("{filename}", "{field}") — values are sampled from CSV rows at runtime.
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.
            csv_file_path (str): Mandatory. Absolute local path to the CSV file.
            global_variables (dict, optional): flat str→str map of global variables.

    - list: List data-model assets in a workspace (TDM assets endpoint, type=data-model).
        args(dict):
            workspace_id (int): Mandatory.
            limit (int, default=50): max results.
            offset (int, default=0): skip count.

    - read: Read a data-model asset by service. Fetches with full content (withData=true).
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.

    - update: Update an existing schema-based data-model by replacing its entities/fields. Use this
        when the dataset was created with create_from_schema.
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.
            entities (list): Mandatory. Full new entity list (same format as create_from_schema).
            global_variables (dict, optional): flat str→str map of global variables.

    - update_from_csv: Update an existing CSV-based data-model from a local CSV file. Use this
        when the dataset was created with create_from_csv. Rebuilds the entity with valueOfCSV
        generators. Optionally renames entity fields via field_mappings (e.g. when the entity field
        name should differ from the CSV column name).
        By default only the data-model JSON is updated (field rename / mapping change).
        Set upload_csv=true only when the CSV file content itself has changed.
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.
            csv_file_path (str): Mandatory. Absolute local path to the CSV file (used for headers).
            field_mappings (list, optional): rename CSV columns to different entity field names.
                Each entry: {name: str (entity field name), csv_column: str (CSV column name)}.
                Example: [{"name": "account_name2", "csv_column": "account_name"}]
            upload_csv (bool, default=false): set true to re-upload the CSV file content.
            global_variables (dict, optional): flat str→str map of global variables.

    TdmAsset Schema:
    {'additionalProperties': True, 'properties': {'id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset id (UUID)', 'title': 'Id'}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset name', 'title': 'Name'}, 'displayName': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset display name', 'title': 'Displayname'}, 'type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset type: data-model, mock-svc, global-entity', 'title': 'Type'}, 'packageId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Package id this asset belongs to', 'title': 'Packageid'}, 'content': {'anyOf': [{}, {'type': 'null'}], 'default': None, 'description': 'Parsed data-model content (present when withData=true)', 'title': 'Content'}}, 'title': 'TdmAsset', 'type': 'object'}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argsYes
actionYes
Behavior5/5

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

With no annotations provided, the description carries the full burden of disclosure and does so thoroughly. It reveals that matcher names must follow exact rules or matching fails, repeated variables must resolve to the same value, undefined variables are treated as literals, and update_from_csv only updates the data-model JSON unless upload_csv=true. These are critical behavioral traits that affect correct usage.

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 description is lengthy but extremely well-structured: it starts with a high-level overview, then matcher rules, additional rules, and each action with arg details. It front-loads the most critical constraints (matcher naming, variable resolution) before diving into actions. Some redundant phrases like 'Mandatory' appear in every list, but overall every sentence provides necessary operational detail.

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?

Given the tool's high complexity (six actions, intricate matcher rules, free-form args), the description is remarkably complete. It documents all actions, parameters, defaults, caveats, and even includes the TdmAsset response schema inline. Since there is no output schema, this is a significant bonus for understanding return values.

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?

The input schema is minimal, with only action and args as a free-form object, so schema coverage is 0%. The description compensates by documenting each action's parameters with types, mandatory flags, defaults (e.g., repeat default=1000, limit=50), and examples such as field_mappings entries with {name, csv_column}. This is far beyond what the schema provides.

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?

The description clearly states the tool's purpose: 'Operations on TDM (Test Data Manager) datasets for virtual services.' It enumerates six distinct actions (create_from_schema, create_from_csv, list, read, update, update_from_csv), which distinguishes it from sibling tools that handle HTTP transactions, messaging, or asset management.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use specific actions based on dataset creation method, e.g., 'Use this when the dataset was created with create_from_schema' for update and 'Use this when the dataset was created with create_from_csv' for update_from_csv. It also clarifies that Handlebars is separate, but it does not explicitly compare this tool against sibling tools.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Blazemeter/sv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server