MCP tool
prove_it
Run a matched-market geo-lift test on a campaign’s geo-tagged conversions: power analysis first (the engine REFUSES underpowered tests and says why), then diff-in-diff lift vs matched control markets. Returns status completed (with lift + confidence) or refused (with the power readout).
Input
Pass fields from this schema as the tool arguments. Runtime ownership, product scope and readiness checks still apply.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"description": "campaign id"
},
"testMarket": {
"description": "test market key (default \"london\")",
"type": "string"
},
"expectedLiftPct": {
"description": "expected lift % for power analysis (default 15)",
"type": "number",
"exclusiveMinimum": 0
},
"exposureStart": {
"description": "exposure start date; defaults to the campaign start",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"campaignId"
]
}REST mapping and authority
The tool wraps this REST endpoint. The mapping identifies path/query/body transformations and approval or idempotency headers.
{
"method": "POST",
"path": "/api/v1/campaigns/{campaignId}/prove-it",
"pathFields": [
"campaignId"
],
"pathSchema": {
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"description": "campaign id"
}
},
"additionalProperties": false,
"required": [
"campaignId"
]
},
"pathEncoding": "encodeURIComponent for each path field",
"governedAction": null,
"headers": {},
"bodySchema": {
"type": "object",
"properties": {
"testMarket": {
"description": "test market key (default \"london\")",
"type": "string"
},
"expectedLiftPct": {
"description": "expected lift % for power analysis (default 15)",
"type": "number",
"exclusiveMinimum": 0
},
"exposureStart": {
"description": "exposure start date; defaults to the campaign start",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"additionalProperties": false
},
"responseMapping": "REST JSON is returned as MCP structuredContent and a compatibility text block; privacy-sensitive tools validate their output schema."
}Output
This is the registered MCP output envelope. Nested fields are only modeled where the schema explicitly defines them.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proveIt": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"proveIt"
],
"additionalProperties": {}
}Safety annotations
{
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
}Annotations help a client present the tool. The API independently enforces authorization and exact action approvals. Error and retry guidance →