Trillboards DOOH Advertising
REMOTE · API.TRILLBOARDS.COM · SCANNED AUG 3
DOOH advertising via AI agents. 5,000+ screens with edge AI audience intelligence.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 78 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability71
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 17709 tokens (~221/item across 80 items; 78 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage67
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · api.trillboards.com
claude mcp add --transport http snehdhruv-trillboards-dooh https://api.trillboards.com/mcp
[mcp_servers.snehdhruv-trillboards-dooh] url = "https://api.trillboards.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"snehdhruv-trillboards-dooh": {
"type": "remote",
"url": "https://api.trillboards.com/mcp",
"enabled": true
}
}
} openclaw mcp add snehdhruv-trillboards-dooh --url https://api.trillboards.com/mcp --transport streamable-http
mcp_servers:
snehdhruv-trillboards-dooh:
url: "https://api.trillboards.com/mcp" {
"mcpServers": {
"snehdhruv-trillboards-dooh": {
"type": "http",
"url": "https://api.trillboards.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +3
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +2
- Tool “sync_accounts” rewrote its description, which is the text the model reads security
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 59
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://api.trillboards.com/mcp
TLS valid
Negotiated TLS 1.2 with TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=trillboards.com | CN=Amazon RSA 2048 M01,O=Amazon,C=US | 27 Jul 2026 | 9 Feb 2027 | RSA 2048 | SHA256-RSA | 945357fdd2c3051fad50467827ee1d3 |
| SANs: trillboards.com, *.trillboards.com | ||||||
| CN=Amazon RSA 2048 M01,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 77312380b9d6688a33b1ed9bf9ccda68e0e0f |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
DNSSEC insecure
Validation of api.trillboards.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| trillboards.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self';script-src 'self' 'unsafe-inline' https://screen.trillboards.com https://cdn.jsdelivr.net;style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://fonts.googleapis.com;img-src 'self' https://cdn.trillboards.com https://maps.googleapis.com data: blob:;connect-src 'self' https://api.trillboards.com wss://api.trillboards.com;font-src 'self' https://fonts.gstatic.com https://cdn.jsdelivr.net;frame-src 'self' https://js.stripe.com;object-src 'none';upgrade-insecure-requests;base-uri 'self';form-action 'self';frame-ancestors 'self';script-src-attr 'none' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | no-referrer |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.trillboards.com/mcp | Verified | 200 | |
| http (plaintext) | http://api.trillboards.com/mcp | HTTPS enforced | 301 | https://api.trillboards.com:443/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
activate_signal ~244
[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-curated, registered IAB segment IDs for programmatic requests - Creating reusable targeting configurations RETURNS: - activation_key: Token for referencing this activation (24h expiry) - targeting: { iab_segments, iab_taxonomy_version, custom_params } - screen_count, provider, data_source, methodology EXAMPLE: User: "Activate the registered $100k-$149k household-income segment on my screens" activate_signal({ signal_type: "audience", parameters: { iab_audience_segment_ids: ["68"] }, screen_ids: ["507f1f77bcf86cd799439011"] })
| Name | Type | Req | Description |
|---|---|---|---|
| destinations | array | — | — |
| parameters | object | yes | — |
| screen_ids | array | — | — |
| signal_type | string | yes | — |
No output schema declared.
No examples provided.
anomaly_detect ~370
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 face count) - Detecting equipment anomalies (confidence drops indicating sensor issues) - Identifying unusual commerce or vehicle patterns - Finding outlier moments that may indicate events, incidents, or opportunities RETURNS: - anomalies: Array of anomalous observations with: - observation_id, device_id, venue_type, observed_at - metric_value: The observed value - z_score: How many standard deviations from the mean - direction: 'above' or 'below' the mean - payload: Full observation payload for context - baseline: { mean, stddev, sample_count, lookback_hours } - suggested_next_queries: Follow-up queries to investigate anomalies EXAMPLE: User: "Are there any unusual audience patterns at retail venues?" anomaly_detect({ metric: "face_count", venue_type: "retail", lookback_hours: 24, threshold_sigma: 2.0 }) User: "Detect anomalies in vehicle counts at this screen" anomaly_detect({ metric: "vehicle_count", screen_id: "507f1f77bcf86cd799439011", lookback_hours: 48, threshold_sigma: 2.5 })
| Name | Type | Req | Description |
|---|---|---|---|
| lookback_hours | number | — | — |
| metric | string | yes | — |
| screen_id | string | — | — |
| threshold_sigma | number | — | — |
| venue_type | string | — | — |
No output schema declared.
No examples provided.
batch_impressions ~194
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 error details for failed impressions EXAMPLE: User: "Sync the last hour of impressions" batch_impressions({ impressions: [ { fingerprint: "P_abc123", ad_id: "507f1f77bcf86cd799439011", duration_seconds: 15 }, { fingerprint: "P_abc123", ad_id: "507f1f77bcf86cd799439012", duration_seconds: 10 } ] })
| Name | Type | Req | Description |
|---|---|---|---|
| impressions | array | yes | — |
No output schema declared.
No examples provided.
configure_sensing ~460
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 specific things (faces, vehicles, emotions, etc.) - Changing what a screen detects based on venue type or business needs - Configuring custom sensing for special events or campaigns - Translating business intent into ML model configuration RETURNS: - data: The generated sensing profile with: - profile_name, profile_type, description - models: Array of ML model IDs to activate - classes: COCO classes to detect (for object detection models) - thresholds: Confidence and alert thresholds - observation_families: What types of observations will be produced - capture_interval_ms, report_interval_ms: Timing configuration - estimated_fps_impact: CPU cost estimate - data_fields_produced: All data fields the profile will generate - reasoning: Why these models/classes were chosen - deployment_status: 'generated' | 'pushed' | 'push_failed' - metadata: { screen_id, auto_deploy, profile_id } - suggested_next_queries: Follow-up actions EXAMPLE: User: "Set up the lobby screen to detect foot traffic and emotions" configure_sensing({ screen_id: "507f1f77bcf86cd799439011", intent: "Detect foot traffic patterns, count people, and measure emotional reactions to displayed content", auto_deploy: false }) User: "Configure this drive-through screen for vehicle counting" configure_sensing({ screen_id: "507f1f77bcf86cd799439011", intent: "Count vehicles in drive-through lane, detect vehicle types, measure queue length", auto_deploy: true })
| Name | Type | Req | Description |
|---|---|---|---|
| auto_deploy | boolean | — | — |
| intent | string | yes | — |
| screen_id | string | yes | — |
No output schema declared.
No examples provided.
create_campaign ~316
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 status to "active". EXAMPLE: User: "Create a campaign targeting retail screens in NYC at $5 CPM" create_campaign({ name: "NYC Retail Q1", budget_cpm: 5.0, daily_budget_usd: 100, venue_types: ["retail"], targeting: { geo: { city: "New York", state: "NY" } }, creative_url: "https://cdn.example.com/ad.mp4", start_date: "2026-03-01", end_date: "2026-03-31" })
| Name | Type | Req | Description |
|---|---|---|---|
| budget_cpm | number | — | — |
| creative_duration | integer | — | — |
| creative_type | string | — | — |
| creative_url | string | — | — |
| daily_budget_usd | number | — | — |
| end_date | string | — | — |
| name | string | yes | — |
| screen_ids | array | — | — |
| start_date | string | — | — |
| targeting | object | — | — |
| total_budget_usd | number | — | — |
| venue_types | array | — | — |
No output schema declared.
No examples provided.
create_experiment ~245
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 with experiment_id, status, and all parameters. EXAMPLE: create_experiment({ campaign_id: "camp_abc123", experiment_type: "geo_holdout", treatment_dmas: ["501", "504"], control_dmas: ["503", "505"], holdout_pct: 0.15, target_mde: 0.10 })
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
| control_dmas | array | — | — |
| experiment_type | string | yes | — |
| holdout_pct | number | — | — |
| target_alpha | number | — | — |
| target_mde | number | — | — |
| target_power | number | — | — |
| treatment_dmas | array | — | — |
No output schema declared.
No examples provided.
create_media_buy ~359
[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 RETURNS: - media_buy_id: Unique identifier for this media buy - campaign_id: Internal campaign identifier - creative_deadline: Deadline for creative asset submission - targeting_summary: What was targeted - budget_summary: Budget allocation details EXAMPLE: User: "Buy retail screens in NYC at $5 CPM for next week" create_media_buy({ name: "NYC Retail Week 12", buy_spec: { venue_types: ["retail"], geo: { city: "New York", state: "NY" }, budget: { daily_usd: 500, bid_cpm: 5.0 }, schedule: { start_date: "2026-03-16", end_date: "2026-03-22" } }, creative: { url: "https://cdn.example.com/creative.mp4", type: "video", duration_seconds: 15 }, buyer_ref: "agency-order-12345" })
| Name | Type | Req | Description |
|---|---|---|---|
| brand | object | — | — |
| buy_spec | object | — | — |
| buyer_ref | string | — | — |
| creative | object | — | — |
| end_time | string | — | — |
| name | string | yes | — |
| packages | array | — | — |
| start_time | string | — | — |
No output schema declared.
No examples provided.
create_webhook ~301
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 is allocated to a device - payout.processed: When a payout is processed - programmatic.ad_started: When a programmatic ad begins playing - programmatic.ad_ended: When a programmatic ad finishes playing - programmatic.no_fill: When a programmatic ad request gets no fill - programmatic.error: When a programmatic ad request errors RETURNS: - webhook_id: Unique webhook identifier - url: The webhook endpoint URL - events: Subscribed events - secret: HMAC signing secret (if provided) - status: enabled/disabled EXAMPLE: User: "Set up a webhook for device status changes" create_webhook({ url: "https://api.mycompany.com/trillboards/webhooks", events: ["device.online", "device.offline", "programmatic.error"], secret: "my-signing-secret-123" })
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | — |
| events | array | yes | — |
| secret | string | — | — |
| url | string | yes | — |
No output schema declared.
No examples provided.
cross_signal_correlate ~384
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 audience behaviors correlate with business outcomes - Discovering hidden patterns (e.g., crowd_energy vs purchase_intent) - Validating hypotheses about audience-venue-time relationships RETURNS: - data: Correlation analysis with: - signal_a, signal_b: The two signals being correlated - correlation_r: Pearson correlation coefficient (-1 to +1) - correlation_r2: R-squared (proportion of variance explained) - p_value: Statistical significance - sample_count: Number of data points used - effect_size: Cohen's d effect size - confidence_interval_lower, confidence_interval_upper: 95% CI bounds - insight_summary: Human-readable interpretation - metadata: { computation_method, window, filters_applied } - suggested_next_queries: Related correlation analyses to explore EXAMPLE: User: "Is there a correlation between audience attention and ad fill rate at QSR venues?" cross_signal_correlate({ signal_a: "attention_score", signal_b: "ad_fill_rate", filters: { venue_type: "restaurant_qsr" } }) User: "How does crowd energy relate to purchase intent during lunch hours?" cross_signal_correlate({ signal_a: "crowd_energy", signal_b: "purchase_intent", filters: { daypart: "lunch" } })
| Name | Type | Req | Description |
|---|---|---|---|
| filters | object | — | — |
| signal_a | string | yes | — |
| signal_b | string | yes | — |
No output schema declared.
No examples provided.
delete_device ~108
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-old" })
| Name | Type | Req | Description |
|---|---|---|---|
| device_id | string | yes | — |
No output schema declared.
No examples provided.
delete_webhook ~109
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" })
| Name | Type | Req | Description |
|---|---|---|---|
| webhook_id | string | yes | — |
No output schema declared.
No examples provided.
describe_endpoint ~165
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). - responses: Map of status code → description/schema. - linked_error_codes: Error catalog entries the endpoint can emit. EXAMPLE: Agent: "How do I call the screen audience endpoint?" describe_endpoint({ path: "/v1/data/screens/{screenId}/audience", method: "GET" })
| Name | Type | Req | Description |
|---|---|---|---|
| method | string | yes | — |
| path | string | yes | — |
No output schema declared.
No examples provided.
device_heartbeat ~183
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 device P_abc123" device_heartbeat({ fingerprint: "P_abc123", status: "playing", current_ad_id: "507f1f77bcf86cd799439011", uptime_seconds: 3600 })
| Name | Type | Req | Description |
|---|---|---|---|
| current_ad_id | string | — | — |
| error_message | string | — | — |
| fingerprint | string | yes | — |
| status | string | — | — |
| uptime_seconds | integer | — | — |
No output schema declared.
No examples provided.
discover_inventory ~252
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 with location, venue type, online status, and live audience data - total: Total matching screens - online_count: Number of currently online screens Each screen includes real-time audience data when available: - face_count, attention_score, income_level, mood, lifestyle - purchase_intent, crowd_density, ad_receptivity, dwell_time EXAMPLE: User: "Find retail screens in New York with high-income audience" discover_inventory({ venue_types: ["retail"], location: { city: "New York", state: "NY" }, audience_profile: { income: "high" }, limit: 20 })
| Name | Type | Req | Description |
|---|---|---|---|
| audience_profile | object | — | — |
| limit | integer | — | — |
| location | object | — | — |
| venue_types | array | — | — |
No output schema declared.
No examples provided.
export_cohort ~227
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: - status: 'synced', 'no_cohort', 'credentials_missing', or 'empty_cohort' - destination: the DSP name - segmentId: internal segment ID - externalSegmentId: DSP-side segment ID - maidCount: number of MAIDs uploaded - accepted: number accepted by DSP Supported destinations: ttd, dv360, meta, cadent, mediaocean EXAMPLE: export_cohort({ campaign_id: "camp_abc123", destination: "ttd" })
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
| destination | string | yes | — |
No output schema declared.
No examples provided.
export_dataset ~394
Export observation data as a structured dataset. Supports filtering by time, geography, venue type, and observation family. Applies k-anonymity (k=5) to protect individual privacy. Queries the relevant table based on the selected dataset type, applies filters, enforces k-anonymity by suppressing groups with fewer than 5 observations, and returns structured data. WHEN TO USE: - Exporting audience data for external analysis - Building datasets for machine learning or reporting - Getting structured vehicle or commerce data for a specific time/place - Creating cross-signal datasets for correlation analysis RETURNS: - data: Array of dataset rows (schema varies by dataset type) - metadata: { row_count, k_anonymity_applied, export_id, dataset, filters_applied, time_range } - suggested_next_queries: Related exports or analyses Dataset types: - observations: Raw observation stream data (all families) - audience: Audience-specific data (face_count, demographics, attention, emotion) - vehicle: Vehicle counting and classification data - cross_signal: Pre-computed cross-signal correlation insights EXAMPLE: User: "Export audience data from retail venues last week" export_dataset({ dataset: "audience", filters: { time_range: { start: "2026-03-09", end: "2026-03-16" }, venue_type: ["retail"] }, format: "json" }) User: "Get vehicle data near geohash 9q8yy" export_dataset({ dataset: "vehicle", filters: { time_range: { start: "2026-03-15", end: "2026-03-16" }, geo: "9q8yy" } })
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | — |
| filters | object | yes | — |
| format | string | — | — |
No output schema declared.
No examples provided.
find_similar_moments ~337
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 pgvector cosine similarity. WHEN TO USE: - Searching for historical moments similar to a target scenario - Finding "moments like this one" across different venues/times - Discovering when similar audience compositions or behaviors occurred - Planning ad placements based on past similar contexts RETURNS: - data: Array of matching observations with similarity scores - observation_id, observed_at, venue_type, device_id, screen_mongo_id - payload: full observation data - evidence_grade: quality of observation - similarity: cosine similarity score (0-1, higher = more similar) - metadata: { result_count, embedding_model, min_similarity_threshold } - suggested_next_queries: Follow-up queries EXAMPLE: User: "Find moments with high engagement in evening restaurants with families" find_similar_moments({ query: "evening restaurant venue with families present, high emotional engagement and attention" }) User: "When did we see young adults highly engaged at transit screens?" find_similar_moments({ query: "transit venue morning commute young adults high attention" })
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| min_similarity | number | — | — |
| query | string | yes | — |
| venue_type | string | — | — |
No output schema declared.
No examples provided.
get_adcp_capabilities ~143
[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: - supported_protocols: ['signals', 'media_buy'] - inventory: DOOH format details, network size - audience_data: signal list, methodology, refresh rate - pricing: model, currency, floor CPM - discovery: well_known_url, mcp_endpoint
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_analytics ~219
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 requested dimension EXAMPLE: User: "Show me last week's analytics by device" get_analytics({ start_date: "2026-01-01", end_date: "2026-01-07", group_by: "device" }) User: "Get monthly performance breakdown" get_analytics({ start_date: "2025-12-01", end_date: "2025-12-31", group_by: "day" })
| Name | Type | Req | Description |
|---|---|---|---|
| device_id | string | — | — |
| end_date | string | — | — |
| group_by | string | — | — |
| start_date | string | — | — |
No output schema declared.
No examples provided.
get_attention_metrics ~203
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 RETURNS: - impressions: total, uniqueDevices - attention: avgScore (0-1), medianScore, p90Score, avgDwellSeconds, avgFaceCount, qualifiedPct - economics: standardCpm, attentionCpm (aCPM), costPerAttentiveReach - emotion: avgEngagement (0-1), positiveEmotionPct aCPM = total_media_cost / (SUM(attention_score * face_count) / 1000)
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_attribution_timeseries ~170
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, totalMediaCost, isSignificant EXAMPLE: get_attribution_timeseries({ campaign_id: "camp_abc123", start_date: "2026-03-01", end_date: "2026-03-10" })
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
| end_date | string | — | — |
| start_date | string | — | — |
No output schema declared.
No examples provided.
get_audience_forecast ~234
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 score - typical_income: Most common income level at that time - typical_lifestyle: Most common lifestyle segment at that time - confidence: Prediction confidence (0-1, based on sample count) - sample_count: Number of historical data points used EXAMPLE: User: "What's the typical audience at this screen on Monday at 3pm?" get_audience_forecast({ screen_id: "507f1f77bcf86cd799439011", hour: 15, day: 1, lookback_days: 30 })
| Name | Type | Req | Description |
|---|---|---|---|
| day | integer | yes | — |
| hour | integer | yes | — |
| lookback_days | integer | — | — |
| screen_id | string | yes | — |
No output schema declared.
No examples provided.
get_audience_lookalike ~206
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 lookalike audience segments for targeting RETURNS: Array of similar screens ranked by cosine similarity, each with: - screen_id, similarity (0-1), metadata (face_count, attention, income, lifestyle), last_seen EXAMPLE: get_audience_lookalike({ screen_id: "scr_abc123", limit: 10, min_similarity: 0.8 })
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | — | — |
| limit | integer | — | — |
| min_similarity | number | — | — |
| screen_id | string | yes | — |
| venue_type | string | — | — |
No output schema declared.
No examples provided.
get_billing_status ~48
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_campaign_attribution ~157
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, incrementalVisits - cost: totalMediaCost, costPerUniqueReach, costPerIncrementalVisit - quality: avgMatchConfidence, statisticalSignificance, isSignificant - dataFreshness: latestOutcomeAt, provisionalCount, finalizedCount Returns null if no attribution data exists for the campaign.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_campaign_heatmap ~127
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, lng (rounded to 3 decimal places) - uniqueDevices, totalExposures - avgConfidence (match confidence score)
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_campaign_performance ~142
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 is my NYC retail campaign performing?" get_campaign_performance({ campaign_id: "550e8400-e29b-41d4-a716-446655440000" })
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_content_performance ~289
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, totalPlays, uniqueScreens - avgAttention (0-1), avgAudienceSize, avgDwellMs - venueDistribution: Array of { venue_type, plays } - daypartDistribution: Array of { daypart, plays } - topScreens: Top 10 screens by play count with attention scores - period: { start, end } date range EXAMPLE: User: "How is video dQw4w9WgXcQ performing on retail screens?" get_content_performance({ video_id: "dQw4w9WgXcQ", venue_type: "retail", days: 30 }) User: "Show me the last 7 days of performance for this video" get_content_performance({ video_id: "abc123xyz", days: 7 })
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | — |
| venue_type | string | — | — |
| video_id | string | yes | — |
No output schema declared.
No examples provided.
get_content_recommendations ~281
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: Array of recommended content ranked by performance score - videoId, title, contentCategory, durationSeconds - totalPlays, uniqueScreens - avgAttention (0-1), avgDwellMs - performanceScore (composite of attention, replay density, dwell time) - meta: { count, venue_type, daypart, limit } Performance score formula: attention(40%) + replay_density(30%) + dwell_time(30%) EXAMPLE: User: "What content works best in bars during the evening?" get_content_recommendations({ venue_type: "bar", daypart: "evening", limit: 10 }) User: "Best performing content for transit screens" get_content_recommendations({ venue_type: "transit", limit: 20 })
| Name | Type | Req | Description |
|---|---|---|---|
| daypart | string | — | — |
| limit | integer | — | — |
| venue_type | string | yes | — |
No output schema declared.
No examples provided.
get_creative_attention ~122
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, avgEmotionEngagement, positiveEmotionPct, attentionQualifiedPct
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_creative_attribution ~165
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 creatives ranked by store visits, each with: - creativeId, variant, totalVisits, avgVisitRate - attention: avgScore, avgDwell, avgEmotion, dominantEmotion - avgLiftPct, avgCostPerVisit - bestContext: { venueType, daypart, weather } - dateRange: { first, last, daysMeasured }
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_cross_channel_journey ~118
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 - channels: Array of { channel, touchpoints, uniqueDevices } distribution
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_dataset_stats ~231
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 diversity of training data (creatives, venues, time range) - Monitoring causal dataset health and growth - Planning data collection strategies RETURNS: - data: Dataset statistics - total_tuples: number of context-action-outcome records - unique_creatives: number of distinct creatives with VAS data - unique_venue_types: number of distinct venue types represented - date_range: { start, end } of available data - observations_per_creative: { min, max, mean, median } distribution - metadata: { query_window_days } - suggested_next_queries: Follow-up queries EXAMPLE: User: "How much causal training data do we have?" get_dataset_stats({})
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_device ~150
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 details - specs: Device specifications - stats: Impression and earnings stats EXAMPLE: User: "Get details for vending machine 001" get_device({ device_id: "vending-001-nyc" })
| Name | Type | Req | Description |
|---|---|---|---|
| device_id | string | yes | — |
No output schema declared.
No examples provided.
get_device_ads ~113
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" })
| Name | Type | Req | Description |
|---|---|---|---|
| fingerprint | string | yes | — |
No output schema declared.
No examples provided.
get_incrementality ~171
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 experiments, each with: - experimentId, type (geo_holdout/ghost_ads/psm), status - treatmentDmas, controlDmas - latestResult: treatment/control rates, lift%, incrementalVisits, pValue, posteriorProbPositive, expectedUplift, credibleInterval Returns empty array if no experiments exist for this campaign.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_live_audience ~262
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 attentively the audience is watching (0-1) - income_level: Estimated income bracket (from Gemini Vision) - mood: Current audience mood - lifestyle: Primary lifestyle segment - purchase_intent: Purchase intent level - crowd_density: Estimated venue occupancy - ad_receptivity: How receptive the audience is to ads (0-1) - emotional_engagement: Emotional engagement score (0-1) - group_composition: Solo/couples/families/friends/work groups - signals_age_ms: How fresh the data is in milliseconds EXAMPLE: User: "What's the current audience at screen 507f1f77bcf86cd799439011?" get_live_audience({ screen_id: "507f1f77bcf86cd799439011" })
| Name | Type | Req | Description |
|---|---|---|---|
| screen_id | string | yes | — |
No output schema declared.
No examples provided.
get_media_buy_delivery ~151
[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, by_venue, by_hour (top performers) EXAMPLE: get_media_buy_delivery({ media_buy_id: "mbuy_abc123" })
| Name | Type | Req | Description |
|---|---|---|---|
| breakdown_by | array | — | — |
| dimensions | array | — | — |
| media_buy_id | string | yes | — |
No output schema declared.
No examples provided.
get_media_buys ~278
[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 have open on this account - Confirming a buy left pending_creatives after sync_creatives - Getting a near-real-time delivery snapshot without a full delivery report RETURNS: - media_buys: each with media_buy_id, status, currency, total_budget, confirmed_at, revision and packages[]. status is the AdCP media-buy-status enum; the accepted values are listed on the status_filter parameter below. - pagination: cursor-based EXAMPLE: get_media_buys({ status_filter: ["active", "pending_creatives"], include_snapshot: true }) get_media_buys({ media_buy_ids: ["mbuy_1750000000000_ab12cd34"] })
| Name | Type | Req | Description |
|---|---|---|---|
| context | object | — | — |
| include_snapshot | boolean | — | — |
| media_buy_ids | array | — | — |
| pagination | object | — | — |
| status_filter | — | — | — |
No output schema declared.
No examples provided.
get_multi_touch_attribution ~175
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: average touchpoints per chain - channelAttribution: { dooh, mobile, web, store } (each 0-1, sums to 1) - conversions: total conversion events - totalConversionValue: sum of conversion values (cents) - avgConfidence: average match confidence across chains Returns null if no multi-touch chains exist.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_network_stats ~116
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_stats({ time_range: "7d" })
| Name | Type | Req | Description |
|---|---|---|---|
| time_range | string | — | — |
No output schema declared.
No examples provided.
get_partner_info ~113
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 count - earnings: Earnings summary EXAMPLE: User: "What's my partner account status?" get_partner_info({})
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_pricing ~55
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.
| Name | Type | Req | Description |
|---|---|---|---|
| product | string | — | — |
No output schema declared.
No examples provided.
get_products ~343
[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 dwell, the mood / movement / gaze the on-device sensors reported, what the speech layer heard people shopping for — and, explicitly, which of your words we cannot evidence. Products are ordered by that evidence. WHEN TO USE: - Browsing available inventory before creating a campaign - Comparing pricing across venue types and locations - Understanding what's available in a specific market, at a specific time of day RETURNS: - products: Array of product packages with pricing, reach, and observed audience - Each product includes: name, description (free text answering your brief), venue_type, screen_count, pricing_options, and `observed` — the numbers behind the prose, present only where we measured something - brief_interpretation: how we read your brief, so you can see if we read it right EXAMPLE: User: "commuters who are bored and hungry around lunchtime" get_products({ brief: "commuters who are bored and hungry around lunchtime" })
| Name | Type | Req | Description |
|---|---|---|---|
| audience_profile | object | — | — |
| brief | string | — | — |
| buying_mode | string | — | — |
| filters | object | — | — |
| market | string | — | — |
| venue_types | array | — | — |
No output schema declared.
No examples provided.
get_roas ~194
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 RETURNS: - transactions: total, uniquePurchasers, totalRevenueCents, avgBasketCents - attribution: attributedTransactions, attributedRevenueCents, totalMediaCostCents, roas, iroas - salesLift: exposedPurchasers, controlPurchasers, incrementalTransactions, incrementalRevenueCents, salesLiftPct, posteriorProbPositive - timing: avgHoursToPurchase, medianHoursToPurchase Returns null if no transaction data exists.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | — |
No output schema declared.
No examples provided.
get_signals ~219
[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 segments based on real-time audience data Unlike probabilistic data, these signals are DETERMINISTIC — captured by on-device cameras and microphones, analyzed by ML Kit and Gemini Vision. RETURNS: - signals: Array of per-screen signal objects with demographics, venue, behavior, geo - metadata: total_screens, matching_screens, screens_with_live_data EXAMPLE: User: "What audience signals are available at retail locations?" get_signals({ signal_spec: { signal_types: ["demographics", "behavior"], filters: { venue_type: "retail" } } })
| Name | Type | Req | Description |
|---|---|---|---|
| signal_spec | object | — | — |
No output schema declared.
No examples provided.
get_social_attention ~412
Query social attention contagion metrics from the observation stream. Returns windows where attention propagated between viewers (social amplification factor > 1). Social attention data is produced by the AttentionGraphBuilder running on CTV edge devices, which models viewer attention as a directed graph and detects when one viewer looking at the screen triggers nearby viewers to also look (attention contagion / social amplification). WHEN TO USE: - Finding moments where social proof drove collective engagement - Identifying which venues or dayparts exhibit highest attention contagion - Understanding cascading attention patterns (cascade depth) - Correlating social amplification with ad effectiveness (VAS) RETURNS: - data: Array of observation_stream rows with socialAttention payload - payload.socialAttention.socialAmplificationFactor (SAF): ratio of actual-to-expected group attention (>1 = contagion detected) - payload.socialAttention.cascadeDepth: max depth of attention propagation chain - payload.socialAttention.viralAttentionScore: composite metric combining SAF and cascade depth - payload.socialAttention.contagionWindowMs: time window over which cascade occurred - payload.socialAttention.triggerViewerIndex: which viewer initiated the cascade - metadata: { result_count, time_range, min_saf_filter } - suggested_next_queries: Follow-up queries EXAMPLE: User: "Show me moments where attention went viral in bar venues" get_social_attention({ min_saf: 2.0, venue_type: "bar" }) User: "Find the strongest social amplification events this week" get_social_attention({ min_saf: 3.0, time_range: { start: "2026-03-09T00:00:00Z", end: "2026-03-16T00:00:00Z" } })
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| min_saf | number | — | — |
| screen_id | string | — | — |
| time_range | object | — | — |
| venue_type | string | — | — |
No output schema declared.
No examples provided.
get_social_contagion_summary ~327
Aggregate social attention metrics across screens and time periods. Shows which venues and dayparts have the highest social amplification. Queries observation_stream for social attention data and aggregates 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 venues generate the most social amplification - Comparing daypart effectiveness for social contagion - Identifying top-performing screens for attention cascading - Planning campaigns that leverage social proof RETURNS: - data: Array of aggregated rows, sorted by avg SAF descending - group_key: the dimension value (venue type, daypart, or screen ID) - avg_saf: average social amplification factor - avg_cascade_depth: average attention cascade depth - avg_viral_attention_score: average viral attention score - event_count: number of social attention events in the group - metadata: { group_by, time_range, total_events } - suggested_next_queries: Follow-up queries EXAMPLE: User: "Which venues have the highest social amplification this week?" get_social_contagion_summary({ group_by: "venue", time_range: { start: "2026-03-09", end: "2026-03-16" } }) User: "Show me social attention by daypart over the last 7 days" get_social_contagion_summary({ group_by: "daypart" })
| Name | Type | Req | Description |
|---|---|---|---|
| group_by | string | — | — |
| time_range | object | — | — |
No output schema declared.
No examples provided.
get_usage_summary ~35
Get your current billing period usage summary with per-product breakdown and costs. Shows free tier consumption, paid usage, and total cost.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_webhook_deliveries ~207
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 - error: Error message (if failed) - total: Total delivery count - success_rate: Percentage of successful deliveries EXAMPLE: User: "Show me failed deliveries for this webhook" get_webhook_deliveries({ webhook_id: "wh_mmmpdbvj_8b7c5a59296d", status: "failed", limit: 20 })
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| status | string | — | — |
| webhook_id | string | yes | — |
No output schema declared.
No examples provided.