Viomba MCP Server
Connect AI agents and coding assistants to Viomba’s 360° Attentive Campaign Intelligence — the only platform that combines instant human-centric high-attention ad creation, human-centric media attention scoring, granular benchmarks, ad-on-domain inventory curation, in-flight campaign optimisation, and real-time outcome reporting. Predict attention KPIs, generate gaze heatmaps, and score ad creatives against 500M+ Tobii infrared eye-tracking data points — all through the Model Context Protocol.
Overview
Viomba MCP Server exposes Viomba’s AI-powered ad analytics capabilities to any Model Context Protocol-compatible AI client. Connect the AI tools you already use to powerful creative intelligence — no custom integrations required.
Key Features
- Works with any MCP-compatible AI client — Claude, Cursor, VS Code, and more
- Powered by Viomba’s infrared eye-tracking AI — 500M+ real fixation-level gaze samples from Tobii hardware, not modelled or simulated attention
- Predicts Seen % and Viewtime (ms) per ad creative, format, and device — before a single impression is served
- Returns gaze heatmaps as inline images directly in your AI client
- Simple invite-based onboarding — get started in minutes
- Secure OAuth 2.1 authentication — no static API keys to manage
- Built-in usage history and analytics tools included with every account
Compatible AI Clients
Viomba MCP works with any MCP-compatible AI client or agent framework:
What Can You Do With Viomba MCP?
Layer 1 — Ad creative intelligence
- Ask an AI assistant to predict the attention KPIs of a display ad creative before it goes live — Seen % and expected Viewtime against real infrared eye-tracking benchmarks
- Generate gaze heatmaps across multiple ad variants and compare them side-by-side directly in your AI client
- Slice an animated HTML5 or DCO ad into timed frames and feed them into a creative prediction pipeline automatically
Layer 2 — Media Attention scoring
- Score any ad creative against Viomba’s 500M+ Tobii infrared benchmark database — by format (display, social, video), device (mobile, desktop), and placement context
- Understand precisely where human eyes are predicted to fixate, how long they will hold, and how your creative ranks against category benchmarks
- Choose between
mobile_display,desktop_display,mobile_display_context, anddesktop_display_contextmodel variants for placement-aware scoring
Layers 3–5 — Inventory curation, campaign optimisation, and outcome reporting
- Available on Growth, Scale, and Enterprise tiers — domain attention analysis, DSP line item packaging, AttN Pulse publisher tools, and real-time campaign outcome reporting
- Contact mcp@viomba.com to discuss access
System intelligence
- Query your tool usage history, latency breakdowns, and per-tool analytics without leaving your chat interface
- Automate creative evaluation by integrating Viomba tools into AI workflows at any scale
Setup Instructions
Prerequisites
- An MCP-compatible AI client
- An invite link from a Viomba administrator
Getting Started
Redeem your invite
Open your invite link in a browser. Enter a name for your client application and your
desired OAuth redirect URI (e.g. https://vscode.dev/redirect for VS Code or
http://localhost for local tools), then click Register.
Save your credentials
Copy your client_id and client_secret — the secret is shown
only once and cannot be retrieved later.
Configure your MCP client
Add the server to your client configuration using the OAuth 2.1 flow with your credentials. Most MCP clients support OAuth as a first-class connection type.
VS Code / GitHub Copilot
Add the following to your VS Code settings.json (or your workspace
.vscode/mcp.json):
{
"mcp": {
"servers": {
"viomba": {
"type": "http",
"url": "https://mcp.viomba.com/mcp"
}
}
}
}
VS Code will open the OAuth flow automatically on first use.
Claude Desktop
Add the following block to your claude_desktop_config.json:
{
"mcpServers": {
"viomba": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.viomba.com/mcp",
"--client-id", "<your-client-id>",
"--client-secret", "<your-client-secret>"
]
}
}
}
Cursor / Windsurf
In Cursor go to Settings → MCP Servers → Add Server and enter:
- Server URL:
https://mcp.viomba.com/mcp - Auth type: OAuth 2.0
- Client ID / Secret: your registered credentials
client_secret — no manual intervention needed.
Manual OAuth Flow (CLI / custom clients)
For headless or custom clients, complete the standard Authorization Code + PKCE exchange:
# 1. Generate a PKCE code verifier and challenge code_verifier=$(openssl rand -base64 64 | tr -d '=+/' | head -c 96) code_challenge=$(echo -n "$code_verifier" | openssl sha256 -binary | base64 | tr '+/' '-_' | tr -d '=') # 2. Open the authorization URL in your browser open "https://mcp.viomba.com/oauth/authorize\ ?response_type=code\ &client_id=<client_id>\ &redirect_uri=<redirect_uri>\ &scope=tools:read+tools:execute\ &code_challenge=$code_challenge\ &code_challenge_method=S256\ &state=random_state" # 3. Exchange the code for tokens curl -X POST https://mcp.viomba.com/oauth/token \ -d "grant_type=authorization_code" \ -d "code=<code>" \ -d "redirect_uri=<redirect_uri>" \ -d "client_id=<client_id>" \ -d "client_secret=<client_secret>" \ -d "code_verifier=$code_verifier"
Available Tools
The tools currently available on all tiers cover Layers 1 and 2 of Viomba’s 360° Attentive Campaign Intelligence pipeline — ad creative slicing, attention KPI prediction, and gaze heatmap generation. All three tools are powered by Viomba’s proprietary AI, trained on fixation-level infrared eye-tracking samples collected at 250,000 samples per week from real panellists using Tobii infrared hardware across Finland, Denmark, Germany, France, Poland, and the United Kingdom.
Tools available to you depend on your account tier. Call viomba_my_usage to see your full list of enabled tools.
Dekaani — Ad Intelligence
The first step in the Viomba attention pipeline. Slices any ad creative — live URL or raw HTML — into timed PNG frames and stores them in S3. Returns the S3 URL of each frame together with a perceptual hash of the creative.
Frames produced by dekaani_ad_slicer feed directly into dekaani_creative_prediction and dekaani_heatmap_prediction. For animated or DCO creatives, slicing into chronological frames allows attention scoring across the full creative timeline — not just the first frame. This is particularly important for video and HTML5 ad formats where attention performance varies significantly between opening frames and mid-creative content.
| Parameter | Type | Description |
|---|---|---|
| pageUrl | string (URL) | HTTPS URL of the ad page to slice. Mutually exclusive with htmlTag. |
| htmlTag | string | Raw HTML string of the ad creative. Mutually exclusive with pageUrl. |
| width | number | CSS pixel width of the creative (required when auto-sizing). |
| height | number | CSS pixel height of the creative (required when auto-sizing). |
| x | number | Horizontal offset from the top-left of the document (default 0). |
| y | number | Vertical offset from the top-left of the document (default 0). |
| locale | string | Accept-Language header sent to the ad server (default en-US). |
| use_webhook | boolean | Use webhook delivery instead of polling (faster; requires public SERVER_BASE_URL). |
| timeout_seconds | number | Max seconds to wait for the task (default 120, max 300). |
Predicts attention KPIs for a display ad creative using Viomba’s AI model — built on 500M+ empirical Tobii infrared eye-tracking observations from real panellists across open-web media environments.
Returns predicted Seen % (share of impressions where a human gaze fixation is expected to occur) at multiple dwell-time thresholds, and expected average Viewtime in milliseconds. These are the same metrics that underpin Viomba’s live campaign aCPM optimisation — giving you pre-launch creative intelligence before any media spend is committed.
Provide frames in chronological order for animated creatives. Use mobile_display_context or desktop_display_context model variants when placement context is available — these produce placement-aware scores benchmarked against the specific domain and section context, and will return more accurate predictions than the generic display variants for contextualised campaign planning.
| Parameter | Type | Description |
|---|---|---|
| urls | string[] | Image URLs of the creative frames (S3 URLs from dekaani_ad_slicer work directly). |
| model_type | enum | mobile_display, desktop_display, mobile_display_context, or desktop_display_context. |
| use_webhook | boolean | Use webhook delivery instead of polling. |
| timeout_seconds | number | Max seconds to wait (default 120, max 300). |
Predicts a gaze heatmap for a display ad creative and returns it as a base64-encoded image rendered inline by your AI client. Shows where human eyes are predicted to fixate across the creative — distinguishing between attention (broad gaze distribution) and fixation (high-precision point of focus) colour targets.
Gaze heatmaps are generated from Viomba’s infrared eye-tracking model — the same model that powers attention scoring across Viomba’s live campaign platform. Use alongside dekaani_creative_prediction to understand not just whether an ad will be seen, but which specific creative elements are driving or suppressing fixation. This is particularly useful for iterative creative optimisation — comparing heatmaps across multiple variants before committing to final asset production.
Overlay label options (seen_rate, view_time, none) control which attention metric is annotated on the returned heatmap image.
| Parameter | Type | Description |
|---|---|---|
| urls | string[] | Image URLs of the creative frames. |
| model_type | enum | mobile_display, desktop_display, mobile_display_context, or desktop_display_context. |
| label | enum | Heatmap overlay label: none, seen_rate, or view_time. |
| target | enum | Colour target: attention or fixation. |
| use_webhook | boolean | Use webhook delivery instead of polling. |
| timeout_seconds | number | Max seconds to wait (default 120, max 300). |
System Tools
Platform management and analytics tools included with every account tier.
Returns API usage statistics for your client: requests today, requests in the last
minute, a daily summary for the past N days, and your full list of enabled tools.
Accepts a days parameter (default 7, max 90).
Returns paginated tool-call history for your client. Optionally filter by tool name
or status (ok, error, rate_limited).
Set include_payload to true to see full request and response payloads.
Returns the full request and result detail for a single tool-call record by its ID. Includes tool name, module, status, latency, timestamp, and both the raw request and result payloads.
Returns per-tool call counts, error counts, and average latency for your client over the past N days (default 7, max 90). Useful for identifying high-latency or error-prone tools.
Fetches any public image URL and returns it as base64 for visual inspection directly
in your AI client. Useful for previewing creative frames returned by
dekaani_ad_slicer before running predictions.
Authentication
Viomba MCP uses OAuth 2.1 — the current industry standard for secure delegated access. No static API keys are stored or transmitted. Access tokens expire after 15 minutes and are refreshed automatically by all supported MCP clients.
Viomba MCP uses OAuth 2.1. All /mcp
requests require a valid bearer token in the Authorization header.
Token Format
Authorization: Bearer <access_token>
OAuth Endpoints
- Authorization:
https://mcp.viomba.com/oauth/authorize - Token:
https://mcp.viomba.com/oauth/token - Revocation:
https://mcp.viomba.com/oauth/revoke
Token Lifetimes
- Access token: 15 minutes
- Refresh token: 30 days
API Endpoints
| Endpoint | Method | Auth | Description |
|---|---|---|---|
| /health | GET | — | Liveness check. Returns { status: "ok" }. |
| / | GET | — | This documentation page (also redirects from /docs). |
| /oauth/authorize | GET | — | Authorization endpoint — redirects to consent page. |
| /oauth/token | POST | — | Token endpoint: authorization code & refresh token grants. |
| /oauth/revoke | POST | — | Token revocation. |
| /invite/:token | GET / POST | — | Invite redemption flow. |
| /mcp | POST | Bearer | Initialize session or send JSON-RPC message. |
| /mcp | GET | Bearer | Open SSE stream (requires Mcp-Session-Id). |
| /mcp | DELETE | Bearer | Terminate session. |
Troubleshooting
Authentication Failures
- Verify your access token is included as
Authorization: Bearer <token> - Tokens expire after 15 minutes — ensure your client is refreshing them automatically
- Check that your
client_idandclient_secretare correct - Confirm your redirect URI exactly matches what was registered during invite redemption
Tool Not Available
- Call
viomba_my_usageto see your full list of enabled tools - Tools are gated by tier — contact Viomba support if you need access to additional tools
Dekaani Tool Errors
- Always call
dekaani_ad_slicerfirst — the other Dekaani tools require S3 image URLs as input - Ensure
pageUrlorhtmlTagis provided (not both, not neither) - For auto-sizing creatives, always provide explicit
widthandheight - Increase
timeout_secondsfor large or complex ads (max 300) - Enable
use_webhookif polling times out — requires the server to be publicly reachable
Rate Limiting
- Call
viomba_my_usageto check your current usage - If you are being rate limited, wait a moment and retry — your client should handle this automatically
- Contact Viomba support if you need higher limits for your use case
Understanding attention scores
- Seen % represents the predicted probability that a human gaze fixation (200ms+ fixation event) will occur on the ad creative in the specified format and device context — not just that the ad was technically viewable
- Viewtime (ms) represents the predicted average gaze dwell time on the ad across fixating impressions — distinct from technical viewable time
mobile_display_contextanddesktop_display_contextmodel variants produce placement-aware scores — use these when scoring against a specific publisher domain or section context for more accurate campaign-level predictions- Scores are benchmarked against Viomba’s empirical database of 500M+ Tobii infrared eye-tracking observations — not modelled, simulated, or webcam-estimated attention
- A preview attention score is returned for standalone creative evaluations. A full attention score — including placement-level prediction and full benchmark comparison — is available when the creative is linked to an active Viomba campaign activation