LiveVariant
Qué hace este MCP
Builds and evaluates adaptive multi-variant A/B tests, including priors, conversion statistics, domains, assets, and test registration.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': "A label for your own reference, and the one field worth spending a merge tag on in a recurring ESP template: it is part of the test's identity, so n={{campaign_name}} mints a separate, separately readable test per campaign, and the name is what list_tests searches."}, 'slots': {'type': 'object', 'description': 'Multi-element test: variants per element, keyed by a short name like "hero" or "cta". The test serves and learns combinations.', 'propertyNames': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,31}$'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Destination for redirect serving.'}, 'html': {'type': 'string', 'description': 'Inline HTML, served by the SDK.'}, 'name': {'type': 'string', 'minLength': 1, 'description': 'Shown in stats and in the utm stamp. Defaults to v1, v2, …'}, 'text': {'type': 'string', 'description': 'Inline text, served by the SDK.'}, 'image': {'type': 'string', 'format': 'uri', 'description': 'Image URL, for email variants.'}, 'markdown': {'type': 'string', 'description': 'Inline markdown, served by the SDK.'}, 'redirectUrl': {'type': 'string', 'format': 'uri', 'description': 'Where a click on this variant lands, if it differs per variant.'}}}, 'maxItems': 64, 'minItems': 1}}, 'region': {'enum': ['wnam', 'enam', 'sam', 'weur', 'eeur', 'apac', 'oc', 'afr', 'me', 'eu'], 'type': 'string', 'description': 'Where the test\'s state lives. A placement hint (wnam, enam, sam, weur, eeur, apac, oc, afr, me) or "eu" for the EU jurisdiction (state guaranteed created and kept inside the EU). Defaults to the creator\'s own region when the host can tell; without any, state is born wherever the FIRST request comes from, which in email is routinely a mail provider\'s US datacenter.'}, 'context': {'type': 'array', 'items': {'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'minLength': 1, 'description': 'Dimension name, e.g. country. Becomes ?c_<key>= on serve URLs.'}, 'from': {'enum': ['country', 'continent', 'region', 'city', 'timezone', 'device', 'language', 'organization', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'], 'type': 'string', 'description': 'Fill this dimension from a signal the server derives, so the caller never sends it. Network signals (country, device, …) are guessed from the connection and are suppressed for proxied email fetches; utm_* are read off the link and survive a proxy intact, which makes them the reliable choice for email.'}, 'values': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 2, 'description': 'Allowed values, when they are enumerable. Anything else is rejected at serving time, which is what stops a crafted URL inventing buckets. It also makes the results readable: bucket keys are one-way hashes, and a declared list is what lets stats recover "country=nl" from one. Worth passing even for a `from` dimension, and worth getting right the first time, since `ctx` is inside the test identity and adding values later starts a new test.'}}}, 'maxItems': 8, 'description': 'Dimensions to learn a separate winner for.'}, 'variants': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Destination for redirect serving.'}, 'html': {'type': 'string', 'description': 'Inline HTML, served by the SDK.'}, 'name': {'type': 'string', 'minLength': 1, 'description': 'Shown in stats and in the utm stamp. Defaults to v1, v2, …'}, 'text': {'type': 'string', 'description': 'Inline text, served by the SDK.'}, 'image': {'type': 'string', 'format': 'uri', 'description': 'Image URL, for email variants.'}, 'markdown': {'type': 'string', 'description': 'Inline markdown, served by the SDK.'}, 'redirectUrl': {'type': 'string', 'format': 'uri', 'description': 'Where a click on this variant lands, if it differs per variant.'}}}, 'maxItems': 64, 'minItems': 2, 'description': 'Single-element test: two or more variants. The first is the control.'}, 'redirectUrl': {'type': 'string', 'format': 'uri', 'description': 'Where clicks land when a variant does not say.'}, 'variantParam': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Stamp the served combination into this parameter on redirect, e.g. "utm_content", so the test shows up in the customer\'s own analytics.'}, 'slotRedirects': {'type': 'object', 'description': "Where clicks on ONE element land, when elements point at different pages (a hero leading to the campaign landing page, a CTA below it to pricing). Keyed like `slots`. Falls back to `redirectUrl`; a variant's own redirectUrl still wins over both. Setting any of these means every click link must name its slot, which slotLinks does for you.", 'propertyNames': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,31}$'}, 'additionalProperties': {'type': 'string', 'format': 'uri'}}, 'publishableKey': {'type': 'string', 'pattern': '^pk_[a-z0-9]{24}$', 'description': "Registers the new test to the organization identified by a publishable key the user provides for an organization they administer. Result access stays tied to this test's stats secret. Only works on account-enabled deployments; elsewhere a warning says so and the test still works."}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId', 'config', 'statsSecret', 'slots', 'combinations', 'region', 'urls', 'warnings'], 'properties': {'urls': {'type': 'object', 'required': ['serve', 'click', 'pixel', 'manage', 'serveNoAutoContext', 'clickNoAutoContext'], 'properties': {'click': {'type': 'string'}, 'pixel': {'type': 'string'}, 'serve': {'type': 'string'}, 'manage': {'type': 'string', 'description': "Opening this URL shows live results, and signed-in users can click 'Add to my account' to claim the test into their dashboard. It contains the stats secret in its #fragment, so share it only with people authorized to see results."}, 'clickNoAutoContext': {'type': 'string'}, 'serveNoAutoContext': {'type': 'string'}}, 'additionalProperties': False}, 'slots': {'type': 'array', 'items': {'type': 'object', 'required': ['slot', 'variants'], 'properties': {'slot': {'type': 'string'}, 'variants': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'description': 'Canonical slot order with variant names, as stats reports them.'}, 'config': {'type': 'string', 'description': 'The encoded config: this is the test.'}, 'region': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': "Where the test's state will live; null means first-request placement."}, 'testId': {'type': 'string'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'slotLinks': {'type': 'object', 'description': 'Multi-slot tests only: the serve/click URL per element. The bare urls.serve returns 400 for these tests, because a serve must say which element it renders. The bare urls.click works when the destination is uniform (a config redirectUrl or ?to=); per-slot clicks matter as soon as an element carries its own destination, via slotRedirects or a variant redirectUrl.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['serve', 'click'], 'properties': {'click': {'type': 'string'}, 'serve': {'type': 'string'}}, 'additionalProperties': False}}, 'statsSecret': {'type': 'string', 'description': 'Shown once. Store it now.'}, 'combinations': {'type': 'number', 'description': 'How many distinct combinations the test chooses between.'}, 'destinations': {'type': 'array', 'items': {'type': 'object', 'required': ['host', 'verified'], 'properties': {'host': {'type': 'string'}, 'verified': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': "Redirect destinations and whether each is a verified domain. Unverified means visitors see a 'Redirecting you to…' continue screen before landing; relay the verification warning to the user when present."}, 'registeredTo': {'type': 'string', 'description': 'The organization the test was registered to, when a publishableKey was given and accepted.'}, 'emailTemplate': {'type': 'object', 'description': "Query-parameter spelling per slot for an ESP template: wire it once, then campaign managers fill only the merge fields. All links share one identical config string (names, ctx dims, kh and the landing r=/sr= included, so serve and click stay ONE test); image links add &slot= per element. The click link needs no slot unless the test sets slotRedirects, in which case each element's click link carries its own. Absent when a variant has inline content or its own redirectUrl, which the parameter form cannot express.", 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['imageSrc', 'linkHref'], 'properties': {'imageSrc': {'type': 'string'}, 'linkHref': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'oneOf': [{'required': ['test']}, {'required': ['config']}], '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['beliefs'], 'properties': {'test': {'type': 'string', 'minLength': 1, 'description': 'The test: an encoded config, or any LiveVariant URL containing one (serve, click, pixel, manage), or a query-parameter serve URL. Paste whatever you have.'}, 'when': {'type': 'object', 'description': 'Context this belief is limited to, as dimension key to value (e.g. {"color": "blauw"}). The keys must be dimensions the test declares. Omit it for a belief about every visitor.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'config': {'type': 'string', 'minLength': 1, 'description': 'Alias for `test`: the same value under the name build_test returns it as (`config`). Pass one or the other.'}, 'beliefs': {'type': 'array', 'items': {'type': 'object', 'required': ['variant', 'rate'], 'properties': {'rate': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Your estimate of its conversion rate, e.g. 0.04 for 4%.'}, 'slot': {'type': 'string', 'description': 'Which slot the variant belongs to. Optional for single-slot tests.'}, 'variant': {'anyOf': [{'type': 'string'}, {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}], 'description': 'Variant name or index within its slot.'}}}, 'minItems': 1}, 'confidence': {'anyOf': [{'enum': ['low', 'medium', 'high'], 'type': 'string'}, {'type': 'number', 'exclusiveMinimum': 0}], 'default': 'medium', 'description': 'How much your guess is worth in observations. low=5, medium=15, high=30, or give a number directly. Higher means the test trusts you for longer before the data takes over.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId', 'config', 'manageUrl', 'priors', 'washesOutAfter', 'notes'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}}, 'config': {'type': 'string'}, 'priors': {'type': 'array', 'items': {'type': 'object', 'required': ['slot', 'variant', 'mean', 'strength'], 'properties': {'mean': {'type': 'number'}, 'slot': {'type': 'string'}, 'variant': {'type': 'string'}, 'strength': {'type': 'number'}}, 'additionalProperties': False}}, 'testId': {'type': 'string'}, 'manageUrl': {'type': 'string'}, 'washesOutAfter': {'type': 'number', 'description': 'Roughly this many real visitors per variant and your guess stops mattering.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'oneOf': [{'required': ['test']}, {'required': ['config']}], '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'test': {'type': 'string', 'minLength': 1, 'description': 'The test: an encoded config, or any LiveVariant URL containing one (serve, click, pixel, manage), or a query-parameter serve URL. Paste whatever you have.'}, 'config': {'type': 'string', 'minLength': 1, 'description': 'Alias for `test`: the same value under the name build_test returns it as (`config`). Pass one or the other.'}, 'statsSecret': {'type': 'string', 'description': 'Omit when passing a manage URL that carries it in the fragment.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId', 'totalAssignments', 'combinations', 'slots', 'decision', 'contextBuckets', 'bySignal', 'excluded'], 'properties': {'slots': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'pulls', 'conversions', 'conversionRate'], 'properties': {'name': {'type': 'string'}, 'pulls': {'type': 'number'}, 'conversions': {'type': 'number'}, 'conversionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'testId': {'type': 'string'}, 'bySignal': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['pulls', 'conversions'], 'properties': {'pulls': {'type': 'number'}, 'conversions': {'type': 'number'}}, 'additionalProperties': False}}}, 'decision': {'type': 'object', 'required': ['leader', 'canStop', 'expectedLossIfStoppingNow', 'relativeLoss', 'advice'], 'properties': {'advice': {'type': 'string'}, 'leader': {'type': 'string'}, 'canStop': {'type': 'boolean'}, 'relativeLoss': {'type': 'number'}, 'expectedLossIfStoppingNow': {'type': 'number'}}, 'additionalProperties': False}, 'excluded': {'type': 'object', 'required': ['total', 'bySource', 'byWindow'], 'properties': {'total': {'type': 'number'}, 'bySource': {'type': 'number'}, 'byWindow': {'type': 'number'}}, 'additionalProperties': False}, 'combinations': {'type': 'array', 'items': {'type': 'object', 'required': ['choice', 'pulls', 'conversions', 'conversionRate', 'probabilityBest'], 'properties': {'pulls': {'type': 'number'}, 'choice': {'type': 'array', 'items': {'type': 'string'}}, 'conversions': {'type': 'number'}, 'conversionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'probabilityBest': {'type': 'number'}}, 'additionalProperties': False}}, 'contextBuckets': {'type': 'number'}, 'totalAssignments': {'type': 'number'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'oneOf': [{'required': ['test']}, {'required': ['config']}], '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'test': {'type': 'string', 'minLength': 1, 'description': 'The test: an encoded config, or any LiveVariant URL containing one (serve, click, pixel, manage), or a query-parameter serve URL. Paste whatever you have.'}, 'config': {'type': 'string', 'minLength': 1, 'description': 'Alias for `test`: the same value under the name build_test returns it as (`config`). Pass one or the other.'}, 'statsSecret': {'type': 'string', 'description': 'Omit when passing a manage URL that carries it in the fragment.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId', 'claimed', 'org', 'destinations'], 'properties': {'org': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': "The claiming organization's name; null when unclaimed."}, 'testId': {'type': 'string'}, 'claimed': {'type': 'boolean', 'description': 'Whether the test is registered to an organization.'}, 'destinations': {'type': 'array', 'items': {'type': 'object', 'required': ['host', 'verified'], 'properties': {'host': {'type': 'string'}, 'verified': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Every host this test can redirect a visitor to. verified: false means the continue screen shows before landing there.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', 'oneOf': [{'required': ['test']}, {'required': ['config']}], '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'test': {'type': 'string', 'minLength': 1, 'description': 'The test: an encoded config, or any LiveVariant URL containing one (serve, click, pixel, manage), or a query-parameter serve URL. Paste whatever you have.'}, 'config': {'type': 'string', 'minLength': 1, 'description': 'Alias for `test`: the same value under the name build_test returns it as (`config`). Pass one or the other.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId', 'slots', 'combinations', 'region', 'context', 'resultsReadable', 'findings'], 'properties': {'name': {'type': 'string'}, 'slots': {'type': 'array', 'items': {'type': 'object', 'required': ['slot', 'variants'], 'properties': {'slot': {'type': 'string'}, 'variants': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'formats', 'servesByRedirect'], 'properties': {'name': {'type': 'string'}, 'formats': {'type': 'array', 'items': {'type': 'string'}}, 'servesByRedirect': {'type': 'boolean'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'region': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'testId': {'type': 'string'}, 'context': {'type': 'array', 'items': {'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string'}, 'from': {'type': 'string'}, 'values': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'findings': {'type': 'array', 'items': {'type': 'object', 'required': ['level', 'message'], 'properties': {'level': {'enum': ['error', 'warning', 'note'], 'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'combinations': {'type': 'number'}, 'resultsReadable': {'type': 'boolean', 'description': 'False when the config has no stats key, which is permanent.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'q': {'type': 'string', 'maxLength': 200, 'description': 'Case-insensitive substring filter on the test name'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'cursor': {'type': 'string', 'description': "Opaque cursor from a previous page's nextCursor"}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tests', 'nextCursor'], 'properties': {'tests': {'type': 'array', 'items': {'type': 'object', 'required': ['testId', 'name', 'encoded', 'region', 'addedAt'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'region': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'testId': {'type': 'string'}, 'addedAt': {'type': 'number'}, 'encoded': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'nextCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['config', 'statsSecret', 'publishableKey'], 'properties': {'config': {'type': 'string', 'minLength': 1, 'description': 'The encoded test config (from build_test or any test URL).'}, 'statsSecret': {'type': 'string', 'minLength': 1, 'description': "The test's stats secret, exactly as build_test returned it."}, 'publishableKey': {'type': 'string', 'pattern': '^pk_[a-z0-9]{24}$', 'description': 'A publishable key for the target organization, provided by a user authorized to register tests there.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['registered', 'org', 'testId'], 'properties': {'org': {'type': 'string', 'description': 'The organization that now owns the test.'}, 'testId': {'type': 'string'}, 'registered': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'contentType'], 'properties': {'data': {'type': 'string', 'maxLength': 8000000, 'minLength': 1, 'description': 'The image bytes, base64-encoded (plain base64, not a data: URL).'}, 'contentType': {'enum': ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/avif'], 'type': 'string', 'description': "The image's actual type; the server stores and serves it as this."}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['assetId', 'url', 'previewUrl', 'size', 'contentType'], 'properties': {'url': {'type': 'string', 'description': "Use this as the variant's image/url. 403s without a signature, by design."}, 'size': {'type': 'number'}, 'assetId': {'type': 'string', 'description': 'sha256 of the bytes; the id inside the URL.'}, 'previewUrl': {'type': 'string', 'description': 'Signed for one hour, to verify the upload.'}, 'contentType': {'type': 'string'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['goal', 'channel', 'format'], 'properties': {'goal': {'type': 'string', 'minLength': 1, 'description': "What the test should improve, e.g. 'more demo bookings'."}, 'count': {'type': 'integer', 'default': 2, 'maximum': 10, 'minimum': 2}, 'format': {'enum': ['image', 'text', 'html', 'url'], 'type': 'string', 'description': 'What each variant will be.'}, 'channel': {'enum': ['email', 'web'], 'type': 'string'}, 'audience': {'type': 'string', 'description': 'Who sees it, if that shapes the copy.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['goal', 'variantCount', 'specs', 'rules', 'hosting', 'nextStep'], 'properties': {'goal': {'type': 'string'}, 'rules': {'type': 'array', 'items': {'type': 'string'}}, 'specs': {'type': 'array', 'items': {'type': 'string'}}, 'hosting': {'type': 'string'}, 'nextStep': {'type': 'string'}, 'variantCount': {'type': 'number'}}, 'additionalProperties': False}
Cambios recientes en herramientas
Servidores MCP similares
SharksAPI.AI
Provides marketing analytics and actions across GA4, Search Console, Google Ads, social channels, SEO, WordPress, and marketing p…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
Stratalize Intelligence
Provides vendor, market, SaaS, workforce, government contract, public company, regulatory, competitive, and AI-brand intelligence…
captapi
Retrieves social media profiles, posts, engagement metrics, comments, marketplace listings, events, and Meta advertising data acr…
CorpusIQ
Connects authenticated users to business systems such as CRM, ecommerce, advertising, analytics, email marketing, SEO, calendars,…
Rahul D Sarker: Marketing & RevOps Tools
Provides marketing, revenue operations, sales, advertising, SaaS, and conversion calculators, along with article search and consu…
Trillboards DOOH Advertising
Manages digital out-of-home advertising campaigns and media buys across screens, with edge-AI audience sensing, impression tracki…