Google Search Console integration for Model Context Protocol (MCP)
Trillboards DOOH Advertising is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
757,000+ screens reachable through Trillboards and 29,000+ screens registered on our own network.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http trillboards-dooh-advertising-mcp https://api.trillboards.com/mcp
# 2 — ask your agent for something these tools do
# import_feedback_creative, configure_feedback_brand, create_creative_experiment and 90 more
Trillboards DOOH Advertising costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http trillboards-dooh-advertising-mcp https://api.trillboards.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
Nothing is required, but it can take Authorization header (Partner API key (Bearer trb_partner_xxxxx). Optional for unauthenticated tools like get_pricing and register_partner.) if you want to set it.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
93 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Import an AI model’s image through native bytes, moderation and brand review. Provide exactly one of asset_url, source_creative_id or image_base64. Inline bytes require content_type. PNG, JPEG and WebP are staged through native ownership, actual MIME, byte-hash, brand review and moderation. The existing data_api/api_calls tariff applies.
Takes no parameters.
Configure your native brand profile and enable its booked reactive campaign. Uses your authenticated native buyer and existing funded placement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
| brand_name | string | yes | Advertiser brand name for the experiment’s native campaign. |
| brand_rules | object | yes | Native brand colours, typography, voice, products and required or prohibited elements. |
| brand_assets | array | no | Native brand reference assets used by creative generation. |
| brand_intent_text | string/null | no | Optional brand intent supplied to the native creative generator. |
| stance | string | no | Native reactive relationship used to generate or stage this creative. |
| profile_id | string | no | Optional existing brand profile owned by this advertiser and advertisement. |
Create an experiment on a funded native media-buy placement. Uses your authenticated native buyer and existing funded placement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Name for this funded creative feedback experiment. |
| media_buy_id | string | yes | Your funded native AdCP media buy ID. |
| package_id | string | yes | Native package ID within that media buy. |
| objective | string | yes | Measured objective: gaze share 0–1, gaze overlap milliseconds, or capped mean dwell milliseconds. |
| idempotency_key | string | yes | Caller-owned key for this exact operation; do not reuse for changed inputs. |
| expected_policy_version | string | no | Exact decimal policy version; zero enrolls an unclaimed native policy. |
Read your native experiment, policy and latest 500 owned creative recovery records. Uses your authenticated native buyer and existing funded placement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
Register approved native generated creative variants. Uses your authenticated native buyer and existing funded placement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
| expected_version | string | yes | Exact decimal policy version from the latest experiment; stale updates return 409. |
| variants | array | yes | Approved native variants; identity and bytes remain immutable. |
Replace native creative weights at the expected policy version. Uses your authenticated native buyer and existing funded placement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
| expected_version | string | yes | Exact decimal policy version from the latest experiment; stale updates return 409. |
| weights | array | yes | Replacement weights for registered variants; omitted variants are inactive. |
Read a metered page of latest measured native play states. Read actual latest native plays with NULL preserved. Dates are YYYY-MM-DD, max 31 days. Poll with the returned cursor; canonical_key plus reward_revision_id identify logical changes; build_stamp is provenance. Each page uses the published data_api/api_calls tariff.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
| from | string | yes | Inclusive first play date, YYYY-MM-DD; date range is at most 31 days. |
| to | yes | Inclusive last play date, YYYY-MM-DD; date range is at most 31 days. | |
| limit | integer | no | Maximum native play states returned on this metered page. |
| cursor | string | no | Opaque next_cursor from this same date scope; rewind after scan_complete. |
| idempotency_key | string | yes | Unique caller-owned billing key for this page; committed retries return the receipt, not another read. |
Stop the native experiment at the expected policy version. Uses your authenticated native buyer and existing funded placement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
| expected_version | string | yes | Exact decimal policy version from the latest experiment; stale updates return 409. |
Generate a native brand creative for explicit review and moderation. The native ad and advertiser come from the experiment. Review and AI moderation are separate. The existing data_api/api_calls tariff applies.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
| stance | string | no | Native reactive relationship used to generate or stage this creative. |
| aspectRatio | string | no | Image aspect ratio, such as 16:9, matched to your booked screens. |
| brief | string | no | Creative direction added to your configured native brand rules. |
| idempotency_key | string | yes | Unique caller-owned generation key; committed retries expose creativeId and renderKey in the receipt. |
Approve or reject your generated creative using native brand review. Uses your authenticated native buyer and existing funded placement.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| experiment_id | string | yes | Native experiment ID returned by create_creative_experiment. |
| creative_id | string | yes | Owned native creative ID awaiting your explicit brand review. |
| decision | string | yes | Approve or reject brand use; global AI moderation remains a separate gate. |
Register a new partner organization with Trillboards. WHEN TO USE: - First-time setup for a new partner integration - Creating a new partner account to manage devices RETURNS: - partner_id: Unique partner identifier - api_key: API key for authenticated requests (store securely!) - status: Account status EXAMPLE: User: "Register my vending machine company" register_partner({ company_name: "Acm
| Parameter | Type | Required | Notes |
|---|---|---|---|
| company_name | string | yes | Company or organization name |
| string | yes | Contact email for the partner account | |
| website | string | no | Company website URL (optional) |
| contact_name | string | no | Primary contact person name (optional) |
| contact_phone | string | no | Contact phone number (optional) |
| industry | string | no | Industry type (e.g., "vending", "retail", "hospitality") |
| expected_devices | integer | no | Estimated number of devices to connect |
Get information about the authenticated partner account. WHEN TO USE: - Checking current partner status and stats - Verifying API key is working - Getting partner account details RETURNS: - partner_id: Partner identifier - company_name: Registered company name - status: Account status (active, suspended, etc.) - device_count: Number of registered devices - total_impressions: Lifetime impression
Takes no parameters.
Register or update a device in the partner's network. WHEN TO USE: - Adding a new screen/kiosk/vending machine to the network - Updating device location or configuration - Re-registering a device after maintenance RETURNS: - device_id: Your internal device ID (echoed back) - trillboards_device_id: Internal Trillboards device ID - fingerprint: Device fingerprint (e.g., "P_abc123") - embed_url: UR
| Parameter | Type | Required | Notes |
|---|---|---|---|
| device_id | string | yes | Your internal unique device identifier |
| name | string | no | Human-readable device name |
| device_type | string | no | Type of device |
| location | object | no | Device location information |
| specs | object | no | Device specifications |
| metadata | object | no | Additional custom metadata |
List all devices registered to the partner account. WHEN TO USE: - Getting an overview of all connected devices - Finding devices by status (online/offline) - Auditing the device fleet RETURNS: - devices: Array of device objects - total: Total device count - online_count: Number of online devices - offline_count: Number of offline devices EXAMPLE: User: "Show me all my online devices" list_devi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | Filter by device status |
| device_type | string | no | Filter by device type |
| limit | integer | no | Maximum number of devices to return (default: 50, max: 100) |
| offset | integer | no | Pagination offset |
Get detailed information about a specific device. WHEN TO USE: - Checking status of a single device - Getting device configuration details - Debugging device issues RETURNS: - device_id: Your internal device ID - trillboards_device_id: Internal Trillboards ID - fingerprint: Device fingerprint - name: Device name - status: online/offline - last_seen: Last heartbeat timestamp - location: Location
| Parameter | Type | Required | Notes |
|---|---|---|---|
| device_id | string | yes | Your internal device identifier |
Soft-delete a device from the partner account. WHEN TO USE: - Removing a device that's been decommissioned - Cleaning up test devices - Removing a device that's been relocated to another partner RETURNS: - success: Boolean indicating success - device_id: The deleted device ID - message: Confirmation message EXAMPLE: User: "Remove the old lobby kiosk" delete_device({ device_id: "lobby-kiosk-ol
| Parameter | Type | Required | Notes |
|---|---|---|---|
| device_id | string | yes | Your internal device identifier to delete |
Get current ads scheduled for a device (for testing). WHEN TO USE: - Testing device ad delivery - Debugging which ads are being shown - Verifying ad targeting is working RETURNS: - ads: Array of advertisement objects - default_stream: Default content when no ads - schedule: Current ad schedule EXAMPLE: User: "What ads are showing on device P_abc123?" get_device_ads({ fingerprint: "P_abc123" }
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fingerprint | string | yes | Device fingerprint (e.g., "P_abc123") |
Record a single ad impression from a device. WHEN TO USE: - Reporting that an ad was displayed on a device - Recording impression with detailed metadata - Single impression events (for batch, use batch_impressions) RETURNS: - success: Boolean indicating success - impression_id: Unique impression identifier - earnings: Earnings credited for this impression EXAMPLE: User: "Record an impression fo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fingerprint | string | yes | Device fingerprint (e.g., "P_abc123") |
| ad_id | string | yes | Advertisement ID (MongoDB ObjectId) |
| duration_seconds | number | no | How long the ad was displayed (seconds) |
| timestamp | string | no | ISO 8601 timestamp when impression occurred (optional, defaults to now) |
| metadata | object | no | Additional impression metadata |
Record multiple impressions in a single request (up to 100). WHEN TO USE: - Bulk reporting impressions from offline period - Efficient batch processing of impressions - When device was offline and needs to sync RETURNS: - success: Boolean indicating success - processed: Number of impressions processed - failed: Number of failed impressions - total_earnings: Total earnings credited - errors: Any
| Parameter | Type | Required | Notes |
|---|---|---|---|
| impressions | array | yes | Array of impression objects (max 100) |
Send a heartbeat signal from a device to report its status. WHEN TO USE: - Regular device health monitoring (every 30-60 seconds) - Reporting current playback status - Reporting errors or issues RETURNS: - success: Boolean indicating success - device_status: Current device status in system - next_heartbeat_seconds: Recommended interval for next heartbeat EXAMPLE: User: "Send heartbeat for devic
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fingerprint | string | yes | Device fingerprint (e.g., "P_abc123") |
| status | string | no | Current device status |
| current_ad_id | string | no | Currently playing ad ID (if status is "playing") |
| uptime_seconds | integer | no | Device uptime in seconds |
| error_message | string | no | Error message (if status is "error") |
Get analytics data for the partner account. WHEN TO USE: - Viewing overall performance metrics - Analyzing device performance - Generating reports on impressions and earnings - Comparing performance over time periods RETURNS: - summary: Overall stats (impressions, earnings, active_devices) - time_series: Data points over time - top_devices: Best performing devices - breakdown: Data grouped by re
| Parameter | Type | Required | Notes |
|---|---|---|---|
| start_date | string | no | Start date in YYYY-MM-DD format (optional, defaults to 30 days ago) |
| end_date | string | no | End date in YYYY-MM-DD format (optional, defaults to today) |
| group_by | string | no | How to group the analytics data |
| device_id | string | no | Filter to a specific device (optional) |
Create a new webhook subscription for real-time events. WHEN TO USE: - Setting up real-time notifications for device events - Integrating with external systems - Monitoring ad playback and impressions AVAILABLE EVENTS: - device.online: When a device comes online - device.offline: When a device goes offline - impression.recorded: When an impression is logged - campaign.allocated: When a campaign
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | HTTPS endpoint URL to receive webhook events |
| events | array | yes | Events to subscribe to |
| secret | string | no | HMAC signing secret for verifying webhook authenticity (optional but recommended) |
| description | string | no | Human-readable description for this webhook |
List all webhook subscriptions for the partner account. WHEN TO USE: - Viewing all configured webhooks - Auditing webhook subscriptions - Finding a webhook to update or delete RETURNS: - webhooks: Array of webhook objects with: - webhook_id: Unique identifier - url: Endpoint URL - events: Subscribed events - enabled: Whether webhook is active - created_at: Creation timestamp - last_d
Takes no parameters.
Update an existing webhook subscription. WHEN TO USE: - Changing the webhook endpoint URL - Adding or removing subscribed events - Enabling or disabling a webhook - Updating the webhook description RETURNS: - webhook_id: The updated webhook ID - url: Updated endpoint URL - events: Updated event subscriptions - enabled: Updated enabled status - updated_at: Update timestamp EXAMPLE: User: "Disabl
Takes no parameters.
Delete a webhook subscription. WHEN TO USE: - Removing a webhook that's no longer needed - Cleaning up old integrations - Removing test webhooks RETURNS: - success: Boolean indicating success - webhook_id: The deleted webhook ID - message: Confirmation message EXAMPLE: User: "Delete the old webhook" delete_webhook({ webhook_id: "wh_mmmpdbvj_8b7c5a59296d" })
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhook_id | string | yes | Webhook ID to delete (wh_xxx format or legacy ObjectId) |
Send a test event to a webhook endpoint. WHEN TO USE: - Verifying webhook endpoint is working - Testing integration during development - Debugging webhook delivery issues RETURNS: - success: Boolean indicating delivery success - response_code: HTTP response code from endpoint - response_time_ms: Response time in milliseconds - error: Error message if delivery failed EXAMPLE: User: "Test my webh
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhook_id | string | yes | Webhook ID to test (wh_xxx format or legacy ObjectId) |
| event | string | no | Event type to simulate (optional, defaults to device.online) |
Get delivery history for a webhook. WHEN TO USE: - Debugging failed webhook deliveries - Auditing webhook activity - Checking delivery success rates RETURNS: - deliveries: Array of delivery records with: - delivery_id: Unique delivery ID - event: Event type - status: success/failed - response_code: HTTP response code - response_time_ms: Response time - attempted_at: Attempt timestamp
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhook_id | string | yes | Webhook ID to get deliveries for (wh_xxx format or legacy ObjectId) |
| limit | integer | no | Maximum number of deliveries to return (default: 50, max: 100) |
| status | string | no | Filter by delivery status |
Discover available DOOH screens across the exchange network. WHEN TO USE: - Finding screens by venue type (retail, transit, office, etc.) - Finding screens in a specific city/state or within a radius - Finding screens with a specific audience profile (high income, professionals, etc.) - Getting an overview of available inventory with live audience data RETURNS: - screens: Array of screen objects
| Parameter | Type | Required | Notes |
|---|---|---|---|
| venue_types | array | no | Filter by venue types: transit, retail, outdoor, health_beauty, point_care, education, office, entertainment, government, financial, residential |
| location | object | no | Location filter — use city/state OR lat/lng/radius_km |
| audience_profile | object | no | Filter screens by current audience characteristics |
| limit | integer | no | Maximum screens to return (default: 50, max: 200) |
Get real-time audience data for a specific screen. WHEN TO USE: - Checking current audience at a screen before buying - Monitoring audience during a live campaign - Getting detailed audience signals (attention, mood, purchase intent, demographics) RETURNS real-time data from edge AI sensors (refreshed every 10 seconds): - face_count: Number of people currently viewing - attention_score: How atte
| Parameter | Type | Required | Notes |
|---|---|---|---|
| screen_id | string | yes | Screen ID to get live audience for |
Predict what the audience will look like at a screen at a specific time. WHEN TO USE: - Planning campaigns for specific time slots - Estimating audience composition before buying - Comparing audience at different times of day Uses historical audience data to predict typical audience patterns. RETURNS: - predicted_face_count: Expected number of viewers - predicted_attention: Expected attention s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| screen_id | string | yes | Screen ID to forecast |
| hour | integer | yes | Hour of day (0-23) |
| day | integer | yes | Day of week (0=Sunday, 1=Monday, ..., 6=Saturday) |
| lookback_days | integer | no | Days of historical data to use (default: 30) |
Create a new advertising campaign targeting DOOH screens. WHEN TO USE: - Setting up a new ad campaign on available screens - Targeting specific venues, locations, or audience profiles - Allocating budget for programmatic DOOH buys RETURNS: - campaign_id: Unique campaign identifier (UUID) - name, status, budget, screen_count, dates Campaign starts in "draft" status. Use update_campaign to set st
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Campaign name |
| budget_cpm | number | no | Bid CPM in USD (default: 4.0) |
| daily_budget_usd | number | no | Daily budget cap in USD |
| total_budget_usd | number | no | Total campaign budget in USD |
| screen_ids | array | no | Specific screen IDs to target (optional, overrides venue/geo targeting) |
| venue_types | array | no | Venue types to target: transit, retail, outdoor, office, etc. |
| targeting | object | no | Additional targeting criteria |
| creative_url | string | no | URL to video/image creative asset |
| creative_type | string | no | Creative format |
| creative_duration | integer | no | Duration in seconds (default: 15) |
| start_date | string | no | Campaign start date (ISO 8601) |
| end_date | string | no | Campaign end date (ISO 8601) |
Get detailed performance metrics for a campaign. WHEN TO USE: - Monitoring active campaign performance - Reviewing completed campaign results - Getting per-screen impression breakdowns RETURNS: - campaign_id, name, status, budget, dates - performance: impressions, spend_estimate_usd, avg_cpm, unique_screens, avg_latency_ms - screen_breakdown: per-screen impressions and CPM EXAMPLE: User: "How i
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign UUID returned from create_campaign |
Get network-wide statistics across all partner screens. WHEN TO USE: - Getting a high-level overview of network performance - Checking how many screens are online - Reviewing total impressions and revenue estimates RETURNS: - total_screens, online_screens - impressions, total_auctions - revenue_estimate_usd, avg_cpm, fill_rate EXAMPLE: User: "How is my network performing this week?" get_network
| Parameter | Type | Required | Notes |
|---|---|---|---|
| time_range | string | no | Time range for stats (default: 7d) |
[AdCP Signals] Get real-time audience signals from DOOH screens. This is an AdCP (Ad Context Protocol) compliant tool. It returns deterministic audience signals captured by edge AI (vision + audio + speech) on available screens. WHEN TO USE: - Discovering available audience signals before buying inventory - Evaluating audience composition at specific venues or locations - Building targeting segm
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pagination | object | no | — |
| signal_spec | no | Natural language description of the desired signals (AdCP form), or a structured Trillboards signal specification. |
[AdCP Signals] Activate an audience signal for DSP targeting. Returns an activation_key token for referencing this signal activation. Free-form Trillboards signal labels remain custom parameters. IAB Audience Taxonomy 1.1 segments are emitted only when registered IDs are supplied explicitly. WHEN TO USE: - Converting audience signals into actionable targeting parameters - Activating already-cura
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_agent_segment_id | string | no | — |
| signal_type | string | yes | Type of signal to activate (e.g., "audience", "venue", "behavior") |
| parameters | object | yes | Signal parameters to activate as targeting |
| screen_ids | array | no | Specific screens to activate on (optional, defaults to all partner screens) |
| destinations | array | no | Where to push activated segments |
[AdCP] Get the seller agent's AdCP capabilities and supported protocols. Returns the full capability declaration for this AdCP DOOH seller agent. This tool does NOT require authentication. WHEN TO USE: - Discovering what protocols the seller agent supports (Signals, Media Buy) - Understanding available audience signals and data methodology - Getting MCP endpoint and discovery URLs RETURNS: - su
Takes no parameters.
[AdCP Media Buy] Get available DOOH advertising products and packages. NO AUTHENTICATION REQUIRED. Discovery is open — read the catalogue first, get a key when you want to transact. Send a natural-language brief and it is answered from what the screens actually observed: each product's description reports the hours people are really in frame (in the screens' own local time), how long they dw
| Parameter | Type | Required | Notes |
|---|---|---|---|
| buying_mode | string | no | AdCP buying mode (default: brief) |
| brief | string | no | Natural language campaign brief for AI-driven inventory matching |
| filters | object | no | Structured filters for wholesale/refine modes |
| market | string | no | Market/city to get products for |
| venue_types | array | no | Filter by venue types (legacy, prefer filters.venue_types) |
| audience_profile | object | no | Target audience characteristics |
| pagination | object | no | — |
[AdCP Creative] List the creatives this buyer has on file with us. OUR LIBRARY IS PER-BUY, AND THIS SAYS SO. AdCP's creative library models concepts, variables, assignments and snapshots; ours does not have those. A creative here is the one asset attached to a media buy by sync_creatives, so this is a projection of YOUR OWN buys — never someone else's assets, and never an invented concept_id to l
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filters | object | no | Narrow the result set. All fields optional. |
| sort | object | no | — |
| pagination | object | no | — |
| include_assignments | boolean | no | Include which media buys each creative is attached to. |
| include_snapshot | boolean | no | — |
| include_items | boolean | no | — |
| include_variables | boolean | no | — |
| include_pricing | boolean | no | — |
| include_purged | boolean | no | — |
| include_webhook_activity | boolean | no | — |
| webhook_activity_limit | integer | no | — |
| account | object | no | — |
| fields | array | no | — |
| context | object | no | — |
| ext | object | no | — |
[AdCP Media Buy] List the creative formats this network actually accepts. Every format is DERIVED from live per-screen capability (panel size, min/max spot length, audio) — not a hand-written list. The set published here is exactly the set sync_creatives accepts: if a creative matches a format returned by this tool, it will not be rejected for dimensions, duration or file size. WHEN TO USE: - Be
| Parameter | Type | Required | Notes |
|---|---|---|---|
| format_ids | array | no | Return only these formats. Each entry is an AdCP structured format reference ({agent_url, id}), never a bare string. |
| asset_types | array | no | Filter to formats containing these asset types, e.g. ['video'] or ['image']. |
| min_width | number | no | Minimum render width in pixels (inclusive) |
| max_width | number | no | Maximum render width in pixels (inclusive) |
| min_height | number | no | Minimum render height in pixels (inclusive) |
| max_height | number | no | Maximum render height in pixels (inclusive) |
| is_responsive | boolean | no | Filter for responsive formats. Every DOOH panel is a fixed pixel grid, so true matches nothing here. |
| name_search | string | no | Case-insensitive partial match on the format name |
| publisher_domain | string | no | Resolve formats for this publisher. This agent derives formats from its own inventory only, so anything other than 'trillboards.com' returns an empty list with UNSUPPORTED_PUBLISHER_DOMAIN. |
| pagination | object | no | Cursor-based pagination |
| context | object | no | — |
[AdCP Media Buy] List media buys with status, budget, flight and optional delivery snapshots. Status, budget and flight are read from the advertisements + placements spine the buy actually books on — not from a stored display string. A buy that its flight ended, or that the pacing cron completed on goal, reports the truth here even though nothing rewrote it. WHEN TO USE: - Polling the buys you h
| Parameter | Type | Required | Notes |
|---|---|---|---|
| media_buy_ids | array | no | Specific media buy IDs. When omitted, returns a paginated set matching status_filter. |
| status_filter | no | Single status or array of statuses. Defaults to ['active'] when media_buy_ids is omitted; no implicit filter when ids are given. | |
| include_snapshot | boolean | no | Include a delivery snapshot per package (impressions, spend, pacing_index). Read live off placements, so staleness_seconds is 0. |
| pagination | object | no | — |
| context | object | no | — |
[AdCP Media Buy] Create a media buy (campaign) from an AdCP buy specification. Creates a campaign that targets DOOH screens based on the provided specification. Returns a media_buy_id for tracking and a creative_deadline for asset submission. WHEN TO USE: - Executing a programmatic DOOH buy via an AI agent - Creating campaigns from DSP trading desk agents - Automated media buying workflows RETU
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | Media buy name |
| packages | array | no | AdCP product packages to buy |
| brand | object | no | Brand reference |
| total_budget | object | no | — |
| context | object | no | — |
| start_time | string | no | ISO 8601 start time |
| end_time | string | no | ISO 8601 end time |
| buy_spec | object | no | Buy specification (legacy) |
| creative | object | no | — |
| buyer_ref | string | no | External reference ID from the buyer/agency |
| idempotency_key | string | no | — |
[AdCP Media Buy] Update an existing media buy (campaign). Modify budget, targeting, schedule, or status of an existing media buy. WHEN TO USE: - Adjusting campaign budget mid-flight - Pausing or resuming a campaign - Changing targeting parameters - Extending campaign dates EXAMPLE: update_media_buy({ media_buy_id: "mbuy_abc123", updates: { status: "paused", budget: { daily_usd: 300 } } })
| Parameter | Type | Required | Notes |
|---|---|---|---|
| media_buy_id | string | yes | Media buy ID to update |
| packages | array | no | — |
| context | object | no | — |
| paused | boolean | no | — |
| canceled | boolean | no | — |
| cancellation_reason | string | no | — |
| start_time | no | — | |
| end_time | string | no | — |
| revision | integer | no | — |
| idempotency_key | string | no | — |
| account | object | no | — |
| new_packages | array | no | — |
| invoice_recipient | object | no | — |
| reporting_webhook | object | no | — |
| push_notification_config | object | no | — |
| ext | object | no | — |
| updates | object | no | Fields to update |
[AdCP Media Buy] Validate and sync creative assets for a media buy. Validates creative assets (resolution, duration, format) against screen specifications. Returns compatibility status for each screen in the campaign. WHEN TO USE: - Submitting creative assets before campaign launch - Checking if a creative meets screen requirements - Validating VAST tags EXAMPLE: sync_creatives({ media_buy_id
| Parameter | Type | Required | Notes |
|---|---|---|---|
| media_buy_id | string | no | Media buy ID |
| idempotency_key | string | no | — |
| account | object | no | — |
| context | object | no | — |
| assignments | array | no | — |
| delete_missing | boolean | no | — |
| dry_run | boolean | no | — |
| validation_mode | string | no | — |
| push_notification_config | object | no | — |
| creative_ids | array | no | — |
| ext | object | no | — |
| creatives | array | yes | Creative assets to validate |
[AdCP Media Buy] Get delivery/performance report for a media buy. Returns campaign performance with breakdowns by screen, venue, hour, and audience segment. WHEN TO USE: - Monitoring campaign delivery in real-time - Getting performance breakdowns for optimization - Reporting on campaign results RETURNS: - delivery: impressions, spend, avg_cpm, unique_screens, fill_rate - breakdowns: by_screen,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| media_buy_id | string | yes | Media buy ID |
| dimensions | array | no | Reporting dimensions to include. Only "screen" is supported; anything else is returned in dimensions_unsupported rather than silently dropped. |
| breakdown_by | array | no | Dimensions to break down by (legacy, prefer dimensions). Same single supported value. |
[AdCP Media Buy] Provide optimization signals from buyer agent. Accepts feedback from buyer agents for floor price adjustment and inventory optimization. Enables closed-loop optimization between buyer and seller agents. WHEN TO USE: - Sending bid response feedback to optimize future pricing - Providing conversion data for bid price calibration - Adjusting floor prices based on demand signals EX
| Parameter | Type | Required | Notes |
|---|---|---|---|
| media_buy_id | string | yes | Media buy ID |
| feedback | object | yes | Performance feedback data |
[AdCP Media Buy] Record a conversion or attribution event. Records conversion events for post-campaign attribution analysis. Events are deduplicated by event_id + event_type combination. WHEN TO USE: - Recording offline conversions (store visits, purchases) - Tracking post-view attribution events - Logging custom KPI events EXAMPLE: log_event({ media_buy_id: "mbuy_abc123", event: { even
| Parameter | Type | Required | Notes |
|---|---|---|---|
| media_buy_id | string | yes | Media buy ID |
| event | object | yes | Event data |
[AdCP Accounts] List the accounts this credential can transact on. This seller's account model is 'explicit': one API key IS one account, so this returns exactly one account — the partner behind the key. Use it to discover your account_id before any account-scoped call, and to confirm the account's status before you buy. WHEN TO USE: - Discovering the account_id to pass to account-scoped tasks -
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account | object | no | Exact account filter. Either account_id, or the natural key (brand.domain + operator). Returns empty when it does not match this credential's account — which is how you confirm the key you hold is the |
| status | string | no | Filter by account status. Omit to return the account in any status. |
| sandbox | boolean | no | Filter by sandbox status — matched against the account's real state, not a stub. A sandbox account validates a buy exactly as a live one does (same errors, same codes) but books no placements and mark |
| pagination | object | no | — |
| context | object | no | — |
[AdCP Accounts] Establish or confirm the account behind this credential. IMPORTANT — what this does NOT do: it does not provision a new account. This seller's namespace is one account per API key, so a provisioning-mode entry (brand + operator + billing) is LINKED to the account your key already owns and the response says so in warnings[]. Two different brands on one key resolve to the SAME accou
| Parameter | Type | Required | Notes |
|---|---|---|---|
| idempotency_key | string | yes | Client-generated key for safe retries. This operation has no side effects, so a replay returns the same result. |
| accounts | array | yes | Per-account entries. Each uses ONE key shape: account (settings-update) or the flat brand + operator + billing trio (provisioning). |
| delete_missing | boolean | no | Not supported — this seller never deletes an account from a sync. |
| dry_run | boolean | no | Echo what would happen without applying it. Reported back as dry_run. |
| push_notification_config | object | no | — |
| context | object | no | — |
[AdCP Protocol] Get the status of a previously issued AdCP task. Every AdCP task Trillboards serves for an AUTHENTICATED caller is recorded and returned a task_id. Poll that id here to read the task's terminal state and, with include_result: true, its completion payload. Trillboards answers every AdCP task in-process, so a task is already completed by the time you hold its id — this tool e
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | Unique identifier of the task to retrieve, as issued in the task_id field of the originating task response. |
| include_result | boolean | no | Include the task's result payload when status is completed. Defaults to false for lightweight status-only polls. |
| include_history | boolean | no | Include conversation history. Trillboards tasks complete in-process and hold no multi-turn history, so this is accepted and has no effect. |
| account | object | no | — |
| context | object | no | — |
[AdCP Protocol] Get the status of a previously issued AdCP task. Every AdCP task Trillboards serves for an AUTHENTICATED caller is recorded and returned a task_id. Poll that id here to read the task's terminal state and, with include_result: true, its completion payload. Trillboards answers every AdCP task in-process, so a task is already completed by the time you hold its id — this tool e
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | Unique identifier of the task to retrieve, as issued in the task_id field of the originating task response. |
| include_result | boolean | no | Include the task's result payload when status is completed. Defaults to false for lightweight status-only polls. |
| include_history | boolean | no | Include conversation history. Trillboards tasks complete in-process and hold no multi-turn history, so this is accepted and has no effect. |
| account | object | no | — |
| context | object | no | — |
[AdCP Protocol] List AdCP tasks belonging to your account, newest first. Returns query_summary (totals and a status breakdown), tasks, and pagination. Filter by status or task type. Scoped to the calling account — an unauthenticated call returns an empty page rather than another account's tasks.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filters | object | no | Narrow the returned tasks. |
| pagination | object | no | — |
| account | object | no | — |
| context | object | no | — |
[AdCP Protocol] List AdCP tasks belonging to your account, newest first. Returns query_summary (totals and a status breakdown), tasks, and pagination. Filter by status or task type. Scoped to the calling account — an unauthenticated call returns an empty page rather than another account's tasks. LEGACY NAME. Identical to list_tasks. Prefer list_tasks in new code.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filters | object | no | Narrow the returned tasks. |
| pagination | object | no | — |
| account | object | no | — |
| context | object | no | — |
Get machine-readable pricing for all Trillboards products. Returns graduated usage-based pricing, free tier thresholds, and committed-use discount tiers. No authentication required — use this to evaluate costs before integrating.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product | string | no | Optional: filter to a specific product (data_api, proof_of_play, attribution, data_marketplace, partner_platform, programmatic, fein_edge_ai) |
Get your current billing period usage summary with per-product breakdown and costs. Shows free tier consumption, paid usage, and total cost.
Takes no parameters.
Set up pay-per-use billing with a Stripe payment method. A stored card grants no API credit; fund usage with credits or explicitly authorized API postpay allowance. Pass a Stripe payment method token (pm_xxx) obtained from Stripe.js or Stripe Elements.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| payment_method_id | string | yes | Stripe payment method token (pm_xxx) from Stripe.js or Elements |
Purchase committed-use credits at a discount. Three tiers: tier_500 ($500 → $625 credit, 25% bonus), tier_2000 ($2,000 → $3,100 credit, 55% bonus), tier_5000 ($5,000 → $10,000 credit, 100% bonus). Requires an active payment method.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tier | string | yes | Credit purchase tier |
| idempotency_key | string | yes | Stable logical purchase ID. Reuse it for retries of the same purchase; use a new value for a new credit order. |
Check current billing status including whether billing is set up, credit balance, Stripe customer ID, and payment method status. Use this to determine if billing setup is needed before making paid API calls.
Takes no parameters.
Get comprehensive attribution summary for a DOOH campaign. WHEN TO USE: - Measuring overall campaign effectiveness (reach, footfall, sales lift) - Getting a high-level view of campaign attribution metrics - Checking statistical significance of attribution results RETURNS: - reach: uniqueDevices, totalImpressions, avgFrequency - footfall: exposedVisitors, controlVisitors, incrementalLiftPct, incr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier (UUID or string ID from create_campaign) |
Get daily attribution timeseries for a campaign. WHEN TO USE: - Tracking attribution trends over time - Identifying which days had the strongest lift - Building attribution dashboards with daily granularity RETURNS: Array of daily data points, each with: - date, uniqueDevices, totalExposures, avgFrequency - exposedVisitors, controlVisitors, liftPct, incrementalVisits - costPerVisit, totalMediaCo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
| start_date | string | no | Start date (YYYY-MM-DD). Optional, defaults to campaign start. |
| end_date | string | no | End date (YYYY-MM-DD). Optional, defaults to today. |
Get edge AI attention metrics for a campaign (FEIN-powered). This is what makes DOOH attribution better than digital: Trillboards MEASURES viewability via FEIN edge AI instead of estimating it. WHEN TO USE: - Measuring actual human attention to ads (not just impressions) - Comparing attention-adjusted CPM (aCPM) vs standard CPM - Getting face count, dwell time, and emotion engagement data RETUR
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Get per-creative attention breakdown for a campaign. WHEN TO USE: - A/B testing creative variants by attention score - Identifying which creative drives the most engagement - Comparing aCPM across creative assets RETURNS: Array of creatives ranked by attention score, each with: - creativeId, totalImpressions, uniqueDevices - avgAttentionScore (0-1), avgDwellSeconds, avgFaceCount - attentionCpm,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Get multi-touch attribution model results for a campaign. Supported models: time_decay, position_based, attention_weighted. WHEN TO USE: - Understanding how DOOH fits into the full marketing funnel - Seeing credit allocation across DOOH, mobile, web, and store channels - Quantifying DOOH's contribution to conversions RETURNS: - totalChains: number of multi-touch journeys found - avgTouchpoints:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Get cross-channel customer journey data (Sankey flow) for a campaign. Shows how users flow between channels: DOOH -> mobile -> web -> store. WHEN TO USE: - Visualizing the customer journey across DOOH and digital channels - Understanding channel transition patterns - Building Sankey diagrams of marketing funnels RETURNS: - flows: Array of { source, target, count } transitions between channels -
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Get incrementality/lift test results for a campaign. Uses Bayesian (Beta-Binomial with 10K Monte Carlo samples) and frequentist (chi-square with Yates correction) methods for causal measurement. WHEN TO USE: - Proving causal DOOH advertising effectiveness - Getting both Bayesian and frequentist significance measures - Seeing treatment vs control group visit rates and lift RETURNS: Array of expe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Create an incrementality experiment for a campaign. Sets up a geo-holdout, ghost ads, or propensity score matching experiment to causally measure DOOH advertising lift. WHEN TO USE: - Setting up a new A/B test before or during a campaign - Defining treatment and control DMAs for geo-holdout tests - Configuring experiment parameters (holdout %, MDE, power) RETURNS: The created experiment object
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
| experiment_type | string | yes | Experiment type: geo_holdout (matched DMAs), ghost_ads (PSA control), psm (propensity score matching) |
| treatment_dmas | array | no | DMA codes for treatment group (get ads) |
| control_dmas | array | no | DMA codes for control group (no ads) |
| holdout_pct | number | no | Fraction of devices to hold out (0.05-0.50). Default: 0.10 |
| target_mde | number | no | Minimum detectable effect (relative, e.g. 0.10 = 10% lift). Default: 0.10 |
| target_power | number | no | Statistical power (0.80 or 0.90). Default: 0.80 |
| target_alpha | number | no | Significance level (0.05 or 0.01). Default: 0.05 |
Get attribution performance by individual creative variant. Links creative execution to attribution outcomes: which creative variant drove the most store visits? WHEN TO USE: - Comparing creative A/B/C test performance on attribution outcomes - Finding the optimal creative x venue_type x daypart x weather combination - Identifying the creative with the highest visit rate RETURNS: Array of creat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Get Return on Ad Spend (ROAS) with transaction attribution data. Closes the ROAS loop: matches purchase events to DOOH exposures with time-decay weighting, and computes attributed revenue and incremental ROAS. WHEN TO USE: - Measuring revenue directly attributable to DOOH advertising - Getting ROAS and incremental ROAS (iROAS) figures - Seeing sales lift between exposed and control groups RETUR
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Export exposed audience cohort to a DSP for retargeting. Pushes MAID hashes from the campaign's exposed cohort to the specified DSP (The Trade Desk, DV360, or Meta). Creates or reuses a DSP segment. WHEN TO USE: - Activating DOOH-exposed audiences for retargeting on digital channels - Pushing cohorts to TTD, DV360, or Meta Custom Audiences - Measuring cross-channel retargeting lift RETURNS: - s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
| destination | string | yes | DSP destination: ttd (The Trade Desk), dv360 (Google DV360), meta (Meta/Facebook), cadent, mediaocean |
Find screens with similar audience profiles using pgvector similarity. Uses 64-dimensional audience vectors with HNSW cosine similarity index to find screens whose audience demographics, attention, and behavioral patterns match a target screen. WHEN TO USE: - Expanding campaign reach to screens with similar audiences - Finding new inventory that matches a high-performing screen - Building lookal
| Parameter | Type | Required | Notes |
|---|---|---|---|
| screen_id | string | yes | Source screen ID to find lookalikes for |
| limit | integer | no | Maximum number of results (default: 20, max: 100) |
| min_similarity | number | no | Minimum cosine similarity threshold 0-1 (default: 0.7) |
| country | string | no | Filter by country (optional) |
| venue_type | string | no | Filter by venue type (optional) |
Search screens by natural language scene description using pgvector. Uses 768-dimensional Gemini embeddings on scene descriptions from FEIN edge AI to find screens matching a natural language query. WHEN TO USE: - Finding screens by audience context ("families eating lunch in a food court") - Contextual ad placement based on real-time scene understanding - Discovering inventory matching a specif
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural language description of the audience/scene to search for |
| limit | integer | no | Maximum number of results (default: 20, max: 100) |
| since | string | no | Time window for scene data (e.g., "1h", "24h", "7d"). Default: "24h" |
| min_similarity | number | no | Minimum semantic similarity threshold 0-1 (default: 0.5) |
Get geographic exposure heatmap data for a campaign. Returns lat/lng clusters with exposure counts and device reach, useful for visualizing where ads were shown on a map. WHEN TO USE: - Visualizing campaign geographic coverage - Identifying hotspots of ad exposure - Analyzing geographic distribution of attributed foot traffic RETURNS: Array of geographic clusters (max 500), each with: - lat, ln
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign identifier |
Verify cryptographic proof of ad delivery or get campaign proofs. Requires either campaign_id or proof_payload (at least one must be provided). Two modes: 1. Verify a proof: pass proof_payload with signature fields to verify 2. Get proofs: pass campaign_id to get Ed25519-signed proofs for a campaign Uses Ed25519 signatures (v2) that can be independently verified by third parties using the Trill
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | no | Campaign ID to get proofs for (mutually exclusive with proof_payload) |
| proof_payload | object | no | Proof data to verify (mutually exclusive with campaign_id). Must include: signature, timestamp, adId, impressionId, screenId, deviceId |
| start_date | string | no | Start date for proof query (YYYY-MM-DD, used with campaign_id) |
| end_date | string | no | End date for proof query (YYYY-MM-DD, used with campaign_id) |
| limit | integer | no | Max proofs to return (default: 1000, used with campaign_id) |
| cursor | string | no | Pagination cursor from previous response (used with campaign_id) |
Query the universal observation stream using natural language or structured filters. Returns multi-modal sensing data (audience, vehicle, environment, commerce) from physical-world observations across the screen network. WHEN TO USE: - Exploring raw observation data from edge AI sensors on screens - Filtering observations by venue type, device, time range, or geography - Getting audience, vehicle
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural language query describing what observations to find |
| filters | object | no | Structured filters to narrow results |
| limit | integer | no | Maximum observations to return (default: 100, max: 1000) |
Search observations by semantic similarity. Find moments that match a description like "lunch rush at fast casual restaurants" using vector embeddings. Uses 768-dimensional Gemini embeddings on observation payloads to find promoted observations matching a natural language query via approximate nearest-neighbour (ANN) cosine similarity search over a Lance IVF_PQ index. CONSISTENCY: results are AP
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural language description of the observation moments to search for |
| filters | object | no | Additional structured filters to narrow semantic search |
| limit | integer | no | Maximum results to return (default: 20, max: 100) |
Detect anomalies in observation patterns. Alert when metrics deviate significantly from trailing averages. Computes trailing mean and standard deviation for a given metric from the observation_stream, then identifies observations that fall beyond the configured sigma threshold (z-score based anomaly detection). WHEN TO USE: - Monitoring for unusual audience patterns (sudden spikes or drops in fa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| metric | string | yes | The metric to check for anomalies. Extracted from observation payload (e.g., face_count, vehicle_count, confidence, emotional_engagement, crowd_energy, noise_level) |
| screen_id | string | no | Filter to a specific screen (mongo ID). Optional. |
| venue_type | string | no | Filter to a specific venue type. Optional. |
| lookback_hours | number | no | Hours of historical data to compute baseline from (default: 24, max: 168) |
| threshold_sigma | number | no | Number of standard deviations to consider anomalous (default: 2.0, range: 1.0-5.0) |
Discover correlations between different signal types. Example: relationship between ad fill rate and audience attention for QSR venues. Queries the cross_signal_insights table for pre-computed correlations, or computes ad-hoc correlations from the observation_stream when no pre-computed insight exists. WHEN TO USE: - Understanding relationships between different sensing signals - Finding which a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| signal_a | string | yes | First signal to correlate (e.g., face_count, attention_score, crowd_energy, emotional_engagement, vehicle_count, noise_level, purchase_intent, ad_fill_rate) |
| signal_b | string | yes | Second signal to correlate against signal_a |
| filters | object | no | Optional filters to narrow the correlation analysis |
Configure what a screen should sense using natural language. Generates and optionally pushes a sensing profile to the device. Uses Gemini AI to interpret a natural language sensing intent and generate a sensing profile that maps to available on-device ML models (BlazeFace, AgeGender, FER+, MoveNet, YAMNet, WhisperTiny, EfficientDet, YOLOv8-nano). WHEN TO USE: - Setting up a new screen to sense s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| screen_id | string | yes | Screen ID (mongo ID) to configure sensing for |
| intent | string | yes | Natural language description of what the screen should sense/detect/measure |
| auto_deploy | boolean | no | If true, automatically push the profile to the device. If false (default), generate only for review. |
Export observation data as a structured dataset. Supports filtering by time, geography, venue type, and observation family. Queries the relevant table based on the selected dataset type, applies filters, and returns every matching row as structured data, a page at a time: up to 10,000 observation rows or 1,000 cross-signal insights per call, newest first. When more rows match, metadata.truncated
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset | string | yes | Type of dataset to export |
| filters | object | yes | Filters to apply to the export |
| cursor | string | no | The previous page's metadata.next_cursor, to read the next page (same dataset and filters). |
Generate predictive insights from observation patterns. Predict whether a venue is likely to see increased foot traffic based on current patterns. Uses historical observation_stream data to compute trend analysis via linear regression on time-bucketed metrics. Generates predictions with confidence intervals based on the observed trend, variance, and sample size. WHEN TO USE: - Predicting future
| Parameter | Type | Required | Notes |
|---|---|---|---|
| question | string | yes | Natural language question about the predicted trend or outcome |
| venue_type | string | no | Filter predictions to a specific venue type. Optional. |
| screen_id | string | no | Filter predictions to a specific screen (mongo ID). Optional. |
| time_horizon | string | no | How far ahead to predict (e.g., "1d", "3d", "7d", "14d"). Default: "7d", max: "30d" |
Query measured social attention events within your authorized screen and venue scope. Filter by minimum social amplification factor and time range; results are sorted by social amplification factor descending. WHEN TO USE: - Finding moments where social proof drove collective engagement - Identifying which venues or dayparts exhibit highest attention contagion - Understanding cascading attention
| Parameter | Type | Required | Notes |
|---|---|---|---|
| screen_id | string | no | Filter by screen MongoDB ID. Optional. |
| min_saf | number | no | Minimum social amplification factor threshold. Default: 1.5. Higher values return only stronger contagion events. |
| venue_type | string | no | Filter by venue type (e.g., "bar", "restaurant_qsr", "transit"). Optional. |
| time_range | object | no | Time range filter. Defaults to last 24 hours. |
| limit | integer | no | Maximum results to return. Default: 20, max: 200. |
Find historically similar audience moments across the screen network using embedding similarity search. Input a natural-language description of the target moment. Moment embeddings are 768-D vectors generated from multi-modal observation data (visual, audio, environmental, social) via the MomentEmbeddingService. This tool embeds your query text and finds the closest real-world moments via approxi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural-language description of the target moment. Be descriptive about venue, time, audience, behavior, and conditions. |
| venue_type | string | no | Filter results to a specific venue type. Optional. |
| limit | integer | no | Maximum results to return. Default: 10, max: 200. |
| min_similarity | number | no | Minimum cosine similarity threshold (0-1). Default: 0.7. Lower values return more but less relevant results. |
Predict the VAS (Viewability Attention Score) a specific creative would achieve at a given moment, based on historical data and causal modeling. Uses the CausalPredictionService which: 1. Embeds the moment description to find historically similar moments 2. If >= 5 similar moments exist with the same creative, uses weighted-average prediction 3. If insufficient data, falls back to Gemini generati
| Parameter | Type | Required | Notes |
|---|---|---|---|
| moment_description | string | yes | Natural-language description of the target moment context. Include venue type, time of day, audience size, demographics, attention level, etc. |
| creative_id | string | yes | The creative/ad ID to predict performance for. |
Given a moment description, rank candidate creatives by predicted VAS performance. Evaluates each creative candidate against the described moment context using historical similarity and causal prediction. Returns a ranked list sorted by predicted VAS score, with confidence levels for each prediction. WHEN TO USE: - Choosing which creative to show at a specific moment/venue - Comparing multiple c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| moment_description | string | yes | Natural-language description of the target moment context. |
| creative_ids | array | yes | Array of creative/ad IDs to rank. Maximum 20 candidates. |
Aggregate social attention metrics across screens and time periods. Shows which venues and dayparts have the highest social amplification. Summarizes measured social attention events within your authorized scope by the requested dimension (venue, daypart, or screen), computing average SAF, average cascade depth, average viral attention score, and event count. WHEN TO USE: - Understanding which v
| Parameter | Type | Required | Notes |
|---|---|---|---|
| time_range | object | no | Time range filter. Defaults to last 7 days. |
| group_by | string | no | Dimension to group by: "venue", "daypart", or "screen". Default: "venue". |
Get statistics about available causal training data: total tuples, unique creatives, venue diversity, date range. Queries observation_stream for rows that have both a creative ID and a VAS outcome recorded, giving a picture of how much training data is available for the causal prediction engine. WHEN TO USE: - Checking if enough data exists for reliable causal predictions - Understanding the div
Takes no parameters.
Get performance metrics for a video across the Trillboards DOOH network. WHEN TO USE: - Checking how a specific video performs across screens (plays, attention, audience size) - Analyzing which venue types and dayparts a video resonates best in - Finding the top-performing screens for a piece of content - Comparing content performance over different time windows RETURNS: - videoId, title, totalP
| Parameter | Type | Required | Notes |
|---|---|---|---|
| video_id | string | yes | YouTube video ID to query performance for |
| days | integer | no | Lookback window in days (default: 30, max: 90) |
| venue_type | string | no | Optional venue type filter (e.g., "retail", "transit", "bar") |
Semantic search over content library using natural language queries and 768-D pgvector embeddings. WHEN TO USE: - Finding content by description or theme ("upbeat music videos", "cooking shows") - Discovering content similar to a concept or mood - Searching the content library without knowing exact titles or IDs - Content discovery for programmatic content scheduling RETURNS: - data: Array of ma
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural language search query (min 3 characters) |
| limit | integer | no | Maximum results to return (default: 20, max: 100) |
| min_similarity | number | no | Minimum cosine similarity threshold (default: 0.5, range: 0-1) |
Get best-performing content recommendations for a venue type and optional time context. WHEN TO USE: - Deciding what content to schedule at a specific venue type - Finding content that drives the highest audience engagement at a location - Optimizing content rotation by daypart (morning, afternoon, evening, overnight) - Content programming decisions based on performance data RETURNS: - data: Arr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| venue_type | string | yes | Venue type to get recommendations for (required) |
| daypart | string | no | Optional daypart filter |
| limit | integer | no | Maximum recommendations to return (default: 10, max: 100) |
List every registered Trillboards API operation. WHEN TO USE: - First call in an agent session to learn what the API offers. - Filter to agent_safe=true to list only side-effect-free endpoints. - Narrow to a single surface (data-api, sdk-api, device-api, sensing-api, partner-api-generated, dsp-api-generated). RETURNS: - operations: Array of { surface, method, path, operation_id, summary, des
| Parameter | Type | Required | Notes |
|---|---|---|---|
| surface | string | no | Filter to one surface (e.g. "data-api"). |
| agent_safe | boolean | no | When true, return only endpoints flagged agent-safe. |
| idempotent | boolean | no | When true, return only endpoints flagged idempotent. |
Describe a single API operation including its parameters, response shape, and error codes. WHEN TO USE: - Inspecting an endpoint's full contract before calling it. - Discovering which error codes an endpoint can return and how to recover. RETURNS: - operation: Full discovery record for the endpoint. - parameters: Raw OpenAPI parameter definitions. - request_body: Body schema (when applicable). -
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | The operation path (OpenAPI template form, e.g. "/v1/data/screens/{screenId}/audience"). |
| method | string | yes | HTTP method (case-insensitive). |
Validate a proposed request payload against the registered Zod schema for an operation, returning the exact canonical error envelope the HTTP surface would emit. WHEN TO USE: - Before calling a write endpoint, to catch payload bugs locally. - Debugging 400 validation_error responses. RETURNS: - valid: true when the payload would pass Zod validation. - When invalid, the canonical { error: { type,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Operation path (OpenAPI template form). |
| method | string | yes | — |
| payload | no | Shape is operation-dependent. GET → { query?, params? }. POST → body + optional { query?, params? }. |
List every error code in the Trillboards API error catalog. WHEN TO USE: - Understanding what error codes the API can return. - Building a client-side error handler that covers all cases. - Looking up error types, HTTP statuses, and documentation URLs. RETURNS: - object: "list" - data: Array of { code, type, http_status, description, doc_url } - total: Total number of error codes. Equivalent to
Takes no parameters.
Query the Trillboards API changelog for recent changes, breaking changes, deprecations, and fixes. WHEN TO USE: - Check what has changed in the API before upgrading an integration. - Find breaking changes since a specific date. - Discover new features added to a specific API surface. PARAMETERS: - since (YYYY-MM-DD, optional): Only entries dated on or after this date. Unreleased entries are al
| Parameter | Type | Required | Notes |
|---|---|---|---|
| since | string | no | Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries are always included. |
| type | string | no | Filter by change category: "breaking", "additive", "deprecation", "fix". Comma-separated for multiple. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Trillboards DOOH Advertising or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| import_feedback_creative | state-write | state-write: declares readOnlyHint: false |
| configure_feedback_brand | state-write | state-write: declares readOnlyHint: false |
| create_creative_experiment | state-write | state-write: declares readOnlyHint: false |
| get_creative_experiment | no tags | |
| register_creative_variants | state-write | state-write: declares readOnlyHint: false |
| update_creative_policy | state-write | state-write: declares readOnlyHint: false |
| get_creative_rewards | no tags | |
| stop_creative_experiment | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| generate_brand_creative | state-write | state-write: declares readOnlyHint: false |
| review_feedback_creative | state-write | state-write: declares readOnlyHint: false |
| register_partner | no tags | |
| get_partner_info | no tags | |
| register_device | no tags | |
| list_devices | no tags | |
| get_device | no tags | |
| delete_device | no tags | |
| get_device_ads | no tags | |
| record_impression | no tags | |
| batch_impressions | no tags | |
| device_heartbeat | no tags | |
| get_analytics | no tags | |
| create_webhook | external-sink | external-sink: keyword "webhook" |
| list_webhooks | no tags | |
| update_webhook | external-sink | external-sink: keyword "webhook" |
| delete_webhook | external-sink | external-sink: keyword "webhook", parameter "webhook" |
| test_webhook | external-sink | external-sink: keyword "webhook", parameter "webhook" |
| get_webhook_deliveries | no tags | |
| discover_inventory | no tags | |
| get_live_audience | no tags | |
| get_audience_forecast | no tags | |
| create_campaign | no tags | |
| get_campaign_performance | no tags | |
| get_network_stats | no tags | |
| get_signals | no tags | |
| activate_signal | no tags | |
| get_adcp_capabilities | no tags | |
| get_products | no tags | |
| list_creatives | no tags | |
| list_creative_formats | no tags | |
| get_media_buys | no tags | |
| create_media_buy | no tags | |
| update_media_buy | external-sink | external-sink: parameter "webhook" |
| sync_creatives | no tags | |
| get_media_buy_delivery | no tags | |
| provide_performance_feedback | no tags | |
| log_event | no tags | |
| list_accounts | no tags | |
| sync_accounts | no tags | |
| get_task_status | no tags | |
| tasks_get | no tags | |
| list_tasks | no tags | |
| tasks_list | no tags | |
| get_pricing | no tags | |
| get_usage_summary | no tags | |
| setup_billing | no tags | |
| purchase_credits | no tags | |
| get_billing_status | no tags | |
| get_campaign_attribution | no tags | |
| get_attribution_timeseries | no tags | |
| get_attention_metrics | no tags | |
| get_creative_attention | no tags | |
| get_multi_touch_attribution | no tags | |
| get_cross_channel_journey | no tags | |
| get_incrementality | no tags | |
| create_experiment | no tags | |
| get_creative_attribution | no tags | |
| get_roas | no tags | |
| export_cohort | no tags | |
| get_audience_lookalike | no tags | |
| semantic_audience_search | no tags | |
| get_campaign_heatmap | no tags | |
| verify_proof_of_play | no tags | |
| query_observations | no tags | |
| semantic_search_observations | no tags | |
| anomaly_detect | no tags | |
| cross_signal_correlate | no tags | |
| configure_sensing | no tags | |
| export_dataset | no tags | |
| predictive_query | no tags | |
| get_social_attention | no tags | |
| find_similar_moments | no tags | |
| predict_moment_quality | no tags | |
| recommend_creative | no tags | |
| get_social_contagion_summary | no tags | |
| get_dataset_stats | no tags | |
| get_content_performance | no tags | |
| search_content | no tags | |
| get_content_recommendations | no tags | |
| list_endpoints | no tags | |
| describe_endpoint | no tags | |
| validate_request | no tags | |
| list_error_codes | no tags | |
| query_changelog | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Trillboards DOOH Advertising can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.