Skip to content
advardeDeveloper docs
v1.0

Save creative experiment

Loading server catalog…. Download catalog

POSThttps://app.advarde.com/mcp
Write

Available subject to your connection’s permissions.

Description: Save a supplied hypothesis, fixed comparison window and disjoint ad groups. Planning only: no traffic randomization or statistical/causal claims, and no live ad changes.

Method: tools/call · ads_save_creative_experiment

Output: Tool data is returned in result.structuredContent and as JSON text in result.content. Inspect result.isError before using the result. Individual output fields depend on the operation.

Access: Requires the applicable write scopes, workspace role, and account permissions.

Authentication

Use an MCP access token from MCP connections, or connect through OAuth. Send your token in the Authorization: Bearer header.

For full protocol initialization and tool discovery, use an MCP client. These examples show individual JSON-RPC requests.

Tool arguments

Send these fields inside params.arguments. The tool name is sent as params.name.

account_idstringrequired
format: "uuid"
experiment_idstringoptional
format: "uuid"
expected_revisionintegeroptional
minimum: 1
namestringrequired
minLength: 1maxLength: 200
hypothesisstringrequired
minLength: 1maxLength: 3000
primary_metricenumrequired
enum: ["ctr","cpc","cpa","roas"]
outcome_sourcestringoptional
pattern: "^[A-Za-z0-9_-]{1,255}$"
outcome_attributionstringoptional
minLength: 1maxLength: 1000
minimum_impressionsintegerrequired
minimum: 1maximum: 1000000000
minimum_conversionsintegerrequired
minimum: 1maximum: 1000000
sincestringrequired
format: "date"
untilstringrequired
format: "date"
variantsarrayrequired
minItems: 2maxItems: 20
EXPAND VARIANTS

Each array item

namestringrequired
minLength: 1maxLength: 100
ad_idsarrayrequired
minItems: 1maxItems: 100
EXPAND AD_IDS

Each array item

{
  "type": "string",
  "pattern": "^[A-Za-z0-9_-]{1,255}$"
}
Full JSON Schema
{
  "type": "object",
  "properties": {
    "account_id": {
      "type": "string",
      "format": "uuid"
    },
    "experiment_id": {
      "type": "string",
      "format": "uuid"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "hypothesis": {
      "type": "string",
      "minLength": 1,
      "maxLength": 3000
    },
    "primary_metric": {
      "enum": [
        "ctr",
        "cpc",
        "cpa",
        "roas"
      ]
    },
    "outcome_source": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,255}$"
    },
    "outcome_attribution": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "minimum_impressions": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000000
    },
    "minimum_conversions": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    },
    "since": {
      "type": "string",
      "format": "date"
    },
    "until": {
      "type": "string",
      "format": "date"
    },
    "variants": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "ad_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{1,255}$"
            },
            "minItems": 1,
            "maxItems": 100
          }
        },
        "required": [
          "name",
          "ad_ids"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 20
    }
  },
  "required": [
    "account_id",
    "name",
    "hypothesis",
    "primary_metric",
    "minimum_impressions",
    "minimum_conversions",
    "since",
    "until",
    "variants"
  ],
  "additionalProperties": false
}

Responses

200Successful protocol response

Inspect result.isError for tool-level failures, even when the HTTP status is 200.

202Notification accepted

MCP notifications return no JSON-RPC response body.

400Invalid request

Check the JSON-RPC envelope, parameters, and protocol version.

406Not acceptable

Accept must include application/json and text/event-stream.

429Rate limited

Wait for the Retry-After interval before making another request.

401Unauthorized

A valid, unexpired MCP bearer token is required.

403Access denied

Your connection needs access to this workspace and the requested operation.

Advarde MCP API v1.0