Trillboards DOOH Advertising
What this MCP does
Manages digital out-of-home advertising campaigns and media buys across screens, with edge-AI audience sensing, impression tracking, and attribution analytics.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['signal_type', 'parameters'], 'properties': {'parameters': {'type': 'object', 'properties': {'income': {'enum': ['high', 'upper_mid', 'mid', 'lower_mid', 'low'], 'type': 'string'}, 'lifestyle': {'type': 'string', 'description': 'Lifestyle segment key'}, 'purchase_intent': {'enum': ['high', 'medium', 'low'], 'type': 'string'}, 'iab_audience_segment_ids': {'type': 'array', 'items': {'type': 'string', 'pattern': '^(?:iab:)?[1-9]\\d*$'}, 'maxItems': 50, 'description': 'Explicit registered IAB Audience Taxonomy 1.1 IDs; inferred labels are never auto-mapped'}}, 'description': 'Signal parameters to activate as targeting', 'additionalProperties': False}, 'screen_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'maxItems': 500, 'description': 'Specific screens to activate on (optional, defaults to all partner screens)'}, 'signal_type': {'type': 'string', 'maxLength': 50, 'minLength': 1, 'description': 'Type of signal to activate (e.g., "audience", "venue", "behavior")'}, 'destinations': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'enum': ['dsp', 'dmp', 'data_clean_room'], 'type': 'string'}, 'seat_id': {'type': 'string'}, 'platform': {'type': 'string'}}, 'additionalProperties': True}, 'description': 'Where to push activated segments'}, 'signal_agent_segment_id': {'type': 'string', 'maxLength': 120}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['metric'], 'properties': {'metric': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': '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': {'type': 'string', 'maxLength': 100, 'description': 'Filter to a specific screen (mongo ID). Optional.'}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Filter to a specific venue type. Optional.'}, 'lookback_hours': {'type': 'number', 'maximum': 168, 'minimum': 1, 'description': 'Hours of historical data to compute baseline from (default: 24, max: 168)'}, 'threshold_sigma': {'type': 'number', 'maximum': 5, 'minimum': 1, 'description': 'Number of standard deviations to consider anomalous (default: 2.0, range: 1.0-5.0)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['impressions'], 'properties': {'impressions': {'type': 'array', 'items': {'type': 'object', 'required': ['fingerprint', 'ad_id'], 'properties': {'ad_id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Advertisement ID'}, 'timestamp': {'type': 'string', 'format': 'date-time', 'description': 'ISO 8601 timestamp'}, 'fingerprint': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Device fingerprint'}, 'duration_seconds': {'type': 'number', 'maximum': 3600, 'description': 'Display duration', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1, 'description': 'Array of impression objects (max 100)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['screen_id', 'intent'], 'properties': {'intent': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Natural language description of what the screen should sense/detect/measure'}, 'screen_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Screen ID (mongo ID) to configure sensing for'}, 'auto_deploy': {'type': 'boolean', 'description': 'If true, automatically push the profile to the device. If false (default), generate only for review.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Campaign name'}, 'end_date': {'type': 'string', 'description': 'Campaign end date (ISO 8601)'}, 'targeting': {'type': 'object', 'properties': {'geo': {'type': 'object', 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'city': {'type': 'string', 'maxLength': 100}, 'state': {'type': 'string', 'maxLength': 100}, 'country': {'type': 'string', 'maxLength': 100}, 'radius_km': {'type': 'number', 'maximum': 500, 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'schedule': {'type': 'object', 'properties': {'days': {'type': 'array', 'items': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'description': '0=Sun..6=Sat'}, 'hours': {'type': 'array', 'items': {'type': 'integer', 'maximum': 23, 'minimum': 0}, 'description': '0-23'}}, 'additionalProperties': False}, 'audience_profile': {'type': 'object', 'properties': {'income': {'type': 'string'}, 'lifestyle': {'type': 'string'}, 'min_attention': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'description': 'Additional targeting criteria', 'additionalProperties': False}, 'budget_cpm': {'type': 'number', 'maximum': 1000, 'description': 'Bid CPM in USD (default: 4.0)', 'exclusiveMinimum': 0}, 'screen_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'maxItems': 500, 'description': 'Specific screen IDs to target (optional, overrides venue/geo targeting)'}, 'start_date': {'type': 'string', 'description': 'Campaign start date (ISO 8601)'}, 'venue_types': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 20, 'description': 'Venue types to target: transit, retail, outdoor, office, etc.'}, 'creative_url': {'type': 'string', 'format': 'uri', 'description': 'URL to video/image creative asset'}, 'creative_type': {'enum': ['video', 'image', 'vast'], 'type': 'string', 'description': 'Creative format'}, 'daily_budget_usd': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Daily budget cap in USD'}, 'total_budget_usd': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'Total campaign budget in USD'}, 'creative_duration': {'type': 'integer', 'maximum': 120, 'minimum': 1, 'description': 'Duration in seconds (default: 15)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id', 'experiment_type'], 'properties': {'target_mde': {'type': 'number', 'maximum': 1, 'minimum': 0.01, 'description': 'Minimum detectable effect (relative, e.g. 0.10 = 10% lift). Default: 0.10'}, 'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}, 'holdout_pct': {'type': 'number', 'maximum': 0.5, 'minimum': 0.05, 'description': 'Fraction of devices to hold out (0.05-0.50). Default: 0.10'}, 'control_dmas': {'type': 'array', 'items': {'type': 'string', 'maxLength': 20}, 'maxItems': 200, 'description': 'DMA codes for control group (no ads)'}, 'target_alpha': {'type': 'number', 'maximum': 0.1, 'minimum': 0.001, 'description': 'Significance level (0.05 or 0.01). Default: 0.05'}, 'target_power': {'type': 'number', 'maximum': 0.99, 'minimum': 0.5, 'description': 'Statistical power (0.80 or 0.90). Default: 0.80'}, 'treatment_dmas': {'type': 'array', 'items': {'type': 'string', 'maxLength': 20}, 'maxItems': 200, 'description': 'DMA codes for treatment group (get ads)'}, 'experiment_type': {'enum': ['geo_holdout', 'ghost_ads', 'psm'], 'type': 'string', 'description': 'Experiment type: geo_holdout (matched DMAs), ghost_ads (PSA control), psm (propensity score matching)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Media buy name'}, 'brand': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'domain': {'type': 'string'}}, 'description': 'Brand reference', 'additionalProperties': True}, 'context': {'type': 'object', 'additionalProperties': {}}, 'buy_spec': {'type': 'object', 'properties': {'geo': {'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'city': {'type': 'string'}, 'state': {'type': 'string'}, 'country': {'type': 'string'}, 'radius_km': {'type': 'number'}}, 'additionalProperties': False}, 'budget': {'type': 'object', 'properties': {'bid_cpm': {'type': 'number'}, 'daily_usd': {'type': 'number'}, 'total_usd': {'type': 'number'}}, 'additionalProperties': False}, 'schedule': {'type': 'object', 'properties': {'days': {'type': 'array', 'items': {'type': 'number'}}, 'hours': {'type': 'array', 'items': {'type': 'number'}}, 'end_date': {'type': 'string'}, 'start_date': {'type': 'string'}}, 'additionalProperties': False}, 'screen_ids': {'type': 'array', 'items': {'type': 'string'}}, 'venue_types': {'type': 'array', 'items': {'type': 'string'}}, 'audience_profile': {'type': 'object', 'additionalProperties': {}}}, 'description': 'Buy specification (legacy)', 'additionalProperties': False}, 'creative': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'type': {'enum': ['video', 'image', 'vast'], 'type': 'string'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}, 'end_time': {'type': 'string', 'description': 'ISO 8601 end time'}, 'packages': {'type': 'array', 'items': {'type': 'object', 'properties': {'budget': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'object', 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': True}]}, 'bid_price': {'type': 'number', 'minimum': 0}, 'product_id': {'type': 'string'}, 'impressions': {'type': 'number', 'minimum': 0}, 'pricing_option_id': {'type': 'string'}, 'targeting_overlay': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': True}, 'description': 'AdCP product packages to buy'}, 'buyer_ref': {'type': 'string', 'maxLength': 200, 'description': 'External reference ID from the buyer/agency'}, 'start_time': {'type': 'string', 'description': 'ISO 8601 start time'}, 'total_budget': {'type': 'object', 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': True}, 'idempotency_key': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url', 'events'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'HTTPS endpoint URL to receive webhook events'}, 'events': {'type': 'array', 'items': {'enum': ['device.online', 'device.offline', 'impression.recorded', 'campaign.allocated', 'payout.processed', 'programmatic.ad_started', 'programmatic.ad_ended', 'programmatic.no_fill', 'programmatic.error', 'sensing.threshold_crossed', 'audience.spike', 'audience.venue_busy', 'audience.purchase_intent', 'audience.demographics_update', 'venue.traffic_summary', 'screen_group.created', 'screen_group.updated', 'screen_group.deleted', 'screen_group.member.added', 'screen_group.member.removed', 'screen_group.content_policy.updated', 'screen_group.sensing_config.updated', 'fleet_command.completed', 'fleet_command.failed'], 'type': 'string'}, 'maxItems': 10, 'minItems': 1, 'description': 'Events to subscribe to'}, 'secret': {'type': 'string', 'maxLength': 100, 'description': 'HMAC signing secret for verifying webhook authenticity (optional but recommended)'}, 'description': {'type': 'string', 'maxLength': 500, 'description': 'Human-readable description for this webhook'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['signal_a', 'signal_b'], 'properties': {'filters': {'type': 'object', 'properties': {'daypart': {'enum': ['morning', 'lunch', 'afternoon', 'evening', 'night'], 'type': 'string', 'description': 'Filter by daypart: morning, lunch, afternoon, evening, night'}, 'dma_code': {'type': 'string', 'maxLength': 20, 'description': 'Filter by DMA code for geographic region'}, 'time_range': {'type': 'object', 'properties': {'end': {'type': 'string', 'description': 'End time (ISO 8601)'}, 'start': {'type': 'string', 'description': 'Start time (ISO 8601)'}}, 'description': 'Time range filter', 'additionalProperties': False}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Filter to a specific venue type'}}, 'description': 'Optional filters to narrow the correlation analysis', 'additionalProperties': False}, 'signal_a': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': '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': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Second signal to correlate against signal_a'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['device_id'], 'properties': {'device_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Your internal device identifier to delete'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'webhook_id': {'type': 'string', 'pattern': '^(wh_[a-z0-9]+_[a-f0-9]+|[a-f0-9]{24})$', 'description': 'Webhook ID to delete (wh_xxx format or legacy ObjectId)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'method'], 'properties': {'path': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'The operation path (OpenAPI template form, e.g. "/v1/data/screens/{screenId}/audience").'}, 'method': {'type': 'string', 'maxLength': 16, 'minLength': 1, 'description': 'HTTP method (case-insensitive).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fingerprint'], 'properties': {'status': {'enum': ['online', 'playing', 'idle', 'error'], 'type': 'string', 'description': 'Current device status'}, 'fingerprint': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Device fingerprint (e.g., "P_abc123")'}, 'current_ad_id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Currently playing ad ID (if status is "playing")'}, 'error_message': {'type': 'string', 'maxLength': 500, 'description': 'Error message (if status is "error")'}, 'uptime_seconds': {'type': 'integer', 'minimum': 0, 'description': 'Device uptime in seconds'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum screens to return (default: 50, max: 200)'}, 'location': {'type': 'object', 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude for radius search'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude for radius search'}, 'city': {'type': 'string', 'maxLength': 100, 'description': 'City name'}, 'state': {'type': 'string', 'maxLength': 100, 'description': 'State/province'}, 'radius_km': {'type': 'number', 'maximum': 500, 'description': 'Search radius in kilometers', 'exclusiveMinimum': 0}}, 'description': 'Location filter — use city/state OR lat/lng/radius_km', 'additionalProperties': False}, 'venue_types': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 20, 'description': 'Filter by venue types: transit, retail, outdoor, health_beauty, point_care, education, office, entertainment, government, financial, residential'}, 'audience_profile': {'type': 'object', 'properties': {'income': {'enum': ['high', 'upper_mid', 'mid', 'lower_mid', 'low'], 'type': 'string', 'description': 'Target income level'}, 'lifestyle': {'type': 'string', 'maxLength': 50, 'description': 'Target lifestyle segment (professional, student, fitness, luxury_shopper, tech_savvy, etc.)'}, 'min_attention': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum attention score (0-1)'}}, 'description': 'Filter screens by current audience characteristics', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id', 'destination'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}, 'destination': {'enum': ['ttd', 'dv360', 'meta', 'cadent', 'mediaocean'], 'type': 'string', 'description': 'DSP destination: ttd (The Trade Desk), dv360 (Google DV360), meta (Meta/Facebook), cadent, mediaocean'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dataset', 'filters'], 'properties': {'cursor': {'type': 'string', 'maxLength': 2000, 'description': "The previous page's metadata.next_cursor, to read the next page (same dataset and filters)."}, 'format': {'enum': ['json'], 'type': 'string', 'description': 'Export format (default: json). Currently only JSON is supported.'}, 'dataset': {'enum': ['observations', 'audience', 'vehicle', 'cross_signal'], 'type': 'string', 'description': 'Type of dataset to export'}, 'filters': {'type': 'object', 'properties': {'geo': {'type': 'string', 'maxLength': 12, 'description': 'Filter by geohash-6 prefix'}, 'time_range': {'type': 'object', 'properties': {'end': {'type': 'string', 'description': 'End date/time (ISO 8601 or YYYY-MM-DD)'}, 'start': {'type': 'string', 'description': 'Start date/time (ISO 8601 or YYYY-MM-DD)'}}, 'description': 'Time range filter (required for observations/audience/vehicle)', 'additionalProperties': False}, 'venue_type': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 20, 'description': 'Filter by venue types'}, 'observation_family': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 10, 'description': 'Filter by observation families (for observations dataset)'}}, 'description': 'Filters to apply to the export', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum results to return. Default: 10, max: 200.'}, 'query': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Natural-language description of the target moment. Be descriptive about venue, time, audience, behavior, and conditions.'}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Filter results to a specific venue type. Optional.'}, 'min_similarity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum cosine similarity threshold (0-1). Default: 0.7. Lower values return more but less relevant results.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date in YYYY-MM-DD format (optional, defaults to today)'}, 'group_by': {'enum': ['day', 'week', 'month', 'device'], 'type': 'string', 'description': 'How to group the analytics data'}, 'device_id': {'type': 'string', 'maxLength': 100, 'description': 'Filter to a specific device (optional)'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date in YYYY-MM-DD format (optional, defaults to 30 days ago)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date (YYYY-MM-DD). Optional, defaults to today.'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date (YYYY-MM-DD). Optional, defaults to campaign start.'}, 'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['screen_id', 'hour', 'day'], 'properties': {'day': {'type': 'integer', 'maximum': 6, 'minimum': 0, 'description': 'Day of week (0=Sunday, 1=Monday, ..., 6=Saturday)'}, 'hour': {'type': 'integer', 'maximum': 23, 'minimum': 0, 'description': 'Hour of day (0-23)'}, 'screen_id': {'type': 'string', 'maxLength': 50, 'minLength': 1, 'description': 'Screen ID to forecast'}, 'lookback_days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Days of historical data to use (default: 30)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['screen_id'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results (default: 20, max: 100)'}, 'country': {'type': 'string', 'maxLength': 100, 'description': 'Filter by country (optional)'}, 'screen_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Source screen ID to find lookalikes for'}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Filter by venue type (optional)'}, 'min_similarity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum cosine similarity threshold 0-1 (default: 0.7)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier (UUID or string ID from create_campaign)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Campaign UUID returned from create_campaign'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['video_id'], 'properties': {'days': {'type': 'integer', 'maximum': 90, 'minimum': 1, 'description': 'Lookback window in days (default: 30, max: 90)'}, 'video_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'YouTube video ID to query performance for'}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Optional venue type filter (e.g., "retail", "transit", "bar")'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['venue_type'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum recommendations to return (default: 10, max: 100)'}, 'daypart': {'enum': ['morning', 'afternoon', 'evening', 'overnight'], 'type': 'string', 'description': 'Optional daypart filter'}, 'venue_type': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Venue type to get recommendations for (required)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['device_id'], 'properties': {'device_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Your internal device identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fingerprint'], 'properties': {'fingerprint': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Device fingerprint (e.g., "P_abc123")'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['screen_id'], 'properties': {'screen_id': {'type': 'string', 'maxLength': 50, 'minLength': 1, 'description': 'Screen ID to get live audience for'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['media_buy_id'], 'properties': {'dimensions': {'type': 'array', 'items': {'enum': ['screen', 'venue', 'hour', 'audience_segment', 'creative', 'day'], 'type': 'string'}, 'description': 'Reporting dimensions to include. Only "screen" is supported; anything else is returned in dimensions_unsupported rather than silently dropped.'}, 'breakdown_by': {'type': 'array', 'items': {'enum': ['screen', 'venue', 'hour', 'audience_segment'], 'type': 'string'}, 'description': 'Dimensions to break down by (legacy, prefer dimensions). Same single supported value.'}, 'media_buy_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Media buy ID'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'context': {'type': 'object', 'additionalProperties': {}}, 'pagination': {'type': 'object', 'properties': {'cursor': {'type': 'string', 'maxLength': 500, 'description': 'Opaque cursor from a previous response'}, 'max_results': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size (1-100, default 50)'}}, 'additionalProperties': False}, 'media_buy_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'maxItems': 100, 'minItems': 1, 'description': 'Specific media buy IDs. When omitted, returns a paginated set matching status_filter.'}, 'status_filter': {'anyOf': [{'enum': ['pending_creatives', 'pending_start', 'active', 'paused', 'completed', 'rejected', 'canceled'], 'type': 'string'}, {'type': 'array', 'items': {'$ref': '#/properties/status_filter/anyOf/0'}, 'minItems': 1}], 'description': "Single status or array of statuses. Defaults to ['active'] when media_buy_ids is omitted; no implicit filter when ids are given."}, 'include_snapshot': {'type': 'boolean', 'description': 'Include a delivery snapshot per package (impressions, spend, pacing_index). Read live off placements, so staleness_seconds is 0.'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'time_range': {'enum': ['today', '7d', '30d'], 'type': 'string', 'description': 'Time range for stats (default: 7d)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'product': {'enum': ['data_api', 'proof_of_play', 'attribution', 'data_marketplace', 'partner_platform', 'programmatic', 'fein_edge_ai'], 'type': 'string', 'description': 'Optional: filter to a specific product (data_api, proof_of_play, attribution, data_marketplace, partner_platform, programmatic, fein_edge_ai)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'brief': {'type': 'string', 'description': 'Natural language campaign brief for AI-driven inventory matching'}, 'market': {'type': 'string', 'maxLength': 100, 'description': 'Market/city to get products for'}, 'filters': {'type': 'object', 'properties': {'channels': {'type': 'array', 'items': {'type': 'string'}}, 'countries': {'type': 'array', 'items': {'type': 'string'}}, 'venue_types': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 20}, 'budget_range': {'type': 'object', 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, 'format_types': {'type': 'array', 'items': {'type': 'string'}}, 'delivery_type': {'type': 'string'}}, 'description': 'Structured filters for wholesale/refine modes', 'additionalProperties': True}, 'pagination': {'type': 'object', 'properties': {'cursor': {'type': 'string', 'maxLength': 500}, 'max_results': {'type': 'integer', 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}, 'buying_mode': {'enum': ['brief', 'wholesale', 'refine'], 'type': 'string', 'description': 'AdCP buying mode (default: brief)'}, 'venue_types': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 20, 'description': 'Filter by venue types (legacy, prefer filters.venue_types)'}, 'audience_profile': {'type': 'object', 'properties': {'income': {'type': 'string'}, 'lifestyle': {'type': 'string'}, 'min_attention': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'description': 'Target audience characteristics', 'additionalProperties': False}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaign_id'], 'properties': {'campaign_id': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Campaign identifier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'pagination': {'type': 'object', 'properties': {'cursor': {'type': 'string', 'maxLength': 200}, 'max_results': {'type': 'integer', 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}, 'signal_spec': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'object', 'properties': {'filters': {'type': 'object', 'properties': {'city': {'type': 'string', 'maxLength': 100}, 'state': {'type': 'string', 'maxLength': 100}, 'income': {'type': 'string'}, 'lifestyle': {'type': 'string'}, 'venue_type': {'type': 'string', 'maxLength': 50}}, 'additionalProperties': False}, 'signal_types': {'type': 'array', 'items': {'enum': ['demographics', 'venue', 'geo', 'behavior'], 'type': 'string'}}}, 'additionalProperties': False}], 'description': 'Natural language description of the desired signals (AdCP form), or a structured Trillboards signal specification.'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum results to return. Default: 20, max: 200.'}, 'min_saf': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Minimum social amplification factor threshold. Default: 1.5. Higher values return only stronger contagion events.'}, 'screen_id': {'type': 'string', 'maxLength': 100, 'description': 'Filter by screen MongoDB ID. Optional.'}, 'time_range': {'type': 'object', 'properties': {'end': {'type': 'string', 'description': 'End time (ISO 8601)'}, 'start': {'type': 'string', 'description': 'Start time (ISO 8601)'}}, 'description': 'Time range filter. Defaults to last 24 hours.', 'additionalProperties': False}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Filter by venue type (e.g., "bar", "restaurant_qsr", "transit"). Optional.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'group_by': {'enum': ['venue', 'daypart', 'screen'], 'type': 'string', 'description': 'Dimension to group by: "venue", "daypart", or "screen". Default: "venue".'}, 'time_range': {'type': 'object', 'properties': {'end': {'type': 'string', 'description': 'End time (ISO 8601)'}, 'start': {'type': 'string', 'description': 'Start time (ISO 8601)'}}, 'description': 'Time range filter. Defaults to last 7 days.', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['task_id'], 'properties': {'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'context': {'type': 'object', 'additionalProperties': {}}, 'task_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Unique identifier of the task to retrieve, as issued in the `task_id` field of the originating task response.'}, 'include_result': {'type': 'boolean', 'description': "Include the task's result payload when status is completed. Defaults to false for lightweight status-only polls."}, 'include_history': {'type': 'boolean', 'description': 'Include conversation history. Trillboards tasks complete in-process and hold no multi-turn history, so this is accepted and has no effect.'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of deliveries to return (default: 50, max: 100)'}, 'status': {'enum': ['all', 'success', 'failed'], 'type': 'string', 'description': 'Filter by delivery status'}, 'webhook_id': {'type': 'string', 'pattern': '^(wh_[a-z0-9]+_[a-f0-9]+|[a-f0-9]{24})$', 'description': 'Webhook ID to get deliveries for (wh_xxx format or legacy ObjectId)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'status': {'enum': ['active', 'pending_approval', 'rejected', 'payment_required', 'suspended', 'closed'], 'type': 'string', 'description': 'Filter by account status. Omit to return the account in any status.'}, 'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'description': "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 one you meant.", 'additionalProperties': False}, 'context': {'type': 'object', 'additionalProperties': {}}, 'sandbox': {'type': 'boolean', 'description': "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 marks every response sandbox: true, so it is safe to exercise end to end. Sandbox is our classification, not buyer-settable: ask for a sandbox credential rather than sending sandbox on a live key."}, 'pagination': {'type': 'object', 'properties': {'cursor': {'type': 'string', 'maxLength': 500}, 'max_results': {'type': 'integer', 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'context': {'type': 'object', 'additionalProperties': {}}, 'max_width': {'type': 'number', 'description': 'Maximum render width in pixels (inclusive)'}, 'min_width': {'type': 'number', 'description': 'Minimum render width in pixels (inclusive)'}, 'format_ids': {'type': 'array', 'items': {'type': 'object', 'required': ['agent_url', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 200}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'agent_url': {'type': 'string', 'maxLength': 500}, 'duration_ms': {'type': 'number'}}, 'additionalProperties': False}, 'minItems': 1, 'description': 'Return only these formats. Each entry is an AdCP structured format reference ({agent_url, id}), never a bare string.'}, 'max_height': {'type': 'number', 'description': 'Maximum render height in pixels (inclusive)'}, 'min_height': {'type': 'number', 'description': 'Minimum render height in pixels (inclusive)'}, 'pagination': {'type': 'object', 'properties': {'cursor': {'type': 'string', 'maxLength': 500, 'description': 'Opaque cursor from a previous response'}, 'max_results': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size (1-100, default 50)'}}, 'description': 'Cursor-based pagination', 'additionalProperties': False}, 'asset_types': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'minItems': 1, 'description': "Filter to formats containing these asset types, e.g. ['video'] or ['image']."}, 'name_search': {'type': 'string', 'maxLength': 200, 'description': 'Case-insensitive partial match on the format name'}, 'is_responsive': {'type': 'boolean', 'description': 'Filter for responsive formats. Every DOOH panel is a fixed pixel grid, so true matches nothing here.'}, 'publisher_domain': {'type': 'string', 'maxLength': 253, 'description': "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."}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'ext': {'type': 'object', 'additionalProperties': {}}, 'sort': {'type': 'object', 'additionalProperties': {}}, 'fields': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'maxItems': 100}, 'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'context': {'type': 'object', 'additionalProperties': {}}, 'filters': {'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'maxItems': 50}, 'status': {'anyOf': [{'enum': ['processing', 'pending_review', 'approved', 'rejected', 'archived'], 'type': 'string'}, {'type': 'array', 'items': {'enum': ['processing', 'pending_review', 'approved', 'rejected', 'archived'], 'type': 'string'}, 'minItems': 1}], 'description': 'AdCP creative-status: processing | pending_review | approved | rejected | archived'}, 'format_ids': {'type': 'array', 'maxItems': 200}, 'creative_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'maxItems': 200}, 'media_buy_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'maxItems': 200}}, 'description': 'Narrow the result set. All fields optional.', 'additionalProperties': False}, 'pagination': {'type': 'object', 'properties': {'cursor': {'type': 'string', 'maxLength': 500}, 'max_results': {'type': 'integer', 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}, 'include_items': {'type': 'boolean'}, 'include_purged': {'type': 'boolean'}, 'include_pricing': {'type': 'boolean'}, 'include_snapshot': {'type': 'boolean'}, 'include_variables': {'type': 'boolean'}, 'include_assignments': {'type': 'boolean', 'description': 'Include which media buys each creative is attached to.'}, 'webhook_activity_limit': {'type': 'integer', 'maximum': 1000, 'minimum': 0}, 'include_webhook_activity': {'type': 'boolean'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of devices to return (default: 50, max: 100)'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Pagination offset'}, 'status': {'enum': ['all', 'online', 'offline'], 'type': 'string', 'description': 'Filter by device status'}, 'device_type': {'enum': ['vending_machine', 'kiosk', 'tablet', 'display', 'digital_signage', 'other'], 'type': 'string', 'description': 'Filter by device type'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'surface': {'type': 'string', 'maxLength': 64, 'description': 'Filter to one surface (e.g. "data-api").'}, 'agent_safe': {'type': 'boolean', 'description': 'When true, return only endpoints flagged agent-safe.'}, 'idempotent': {'type': 'boolean', 'description': 'When true, return only endpoints flagged idempotent.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'context': {'type': 'object', 'additionalProperties': {}}, 'filters': {'type': 'object', 'properties': {'status': {'enum': ['submitted', 'working', 'input-required', 'completed', 'canceled', 'failed', 'rejected', 'auth-required', 'unknown'], 'type': 'string', 'description': 'Single task status to match'}, 'statuses': {'type': 'array', 'items': {'enum': ['submitted', 'working', 'input-required', 'completed', 'canceled', 'failed', 'rejected', 'auth-required', 'unknown'], 'type': 'string'}, 'description': 'Task statuses to match (enums/task-status.json)'}, 'task_type': {'enum': ['create_media_buy', 'update_media_buy', 'media_buy_delivery', 'sync_creatives', 'build_creative', 'activate_signal', 'get_products', 'get_signals', 'create_property_list', 'update_property_list', 'get_property_list', 'list_property_lists', 'delete_property_list', 'sync_accounts', 'get_account_financials', 'get_creative_delivery', 'sync_event_sources', 'sync_audiences', 'sync_catalogs', 'log_event', 'get_brand_identity', 'search_brands', 'get_rights', 'acquire_rights'], 'type': 'string', 'description': 'Single task type to match'}, 'task_types': {'type': 'array', 'items': {'enum': ['create_media_buy', 'update_media_buy', 'media_buy_delivery', 'sync_creatives', 'build_creative', 'activate_signal', 'get_products', 'get_signals', 'create_property_list', 'update_property_list', 'get_property_list', 'list_property_lists', 'delete_property_list', 'sync_accounts', 'get_account_financials', 'get_creative_delivery', 'sync_event_sources', 'sync_audiences', 'sync_catalogs', 'log_event', 'get_brand_identity', 'search_brands', 'get_rights', 'acquire_rights'], 'type': 'string'}, 'description': 'Task types to match (enums/task-type.json)'}}, 'description': 'Narrow the returned tasks.', 'additionalProperties': False}, 'pagination': {'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size (max 100, default 50)'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Rows to skip'}}, 'additionalProperties': False}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['media_buy_id', 'event'], 'properties': {'event': {'type': 'object', 'required': ['event_id', 'event_type'], 'properties': {'event_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Unique event ID for dedup'}, 'metadata': {'type': 'object', 'description': 'Additional event metadata', 'additionalProperties': {}}, 'screen_id': {'type': 'string', 'description': 'Attributed screen ID (optional)'}, 'timestamp': {'type': 'string', 'description': 'Event timestamp (ISO 8601, defaults to now)'}, 'event_type': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Event type: store_visit, purchase, app_install, website_visit, custom'}, 'value_cents': {'type': 'number', 'description': 'Event value in cents (USD)'}, 'event_source': {'type': 'string', 'description': 'Source system for the event (e.g., mmp, pixel, postback, manual)'}}, 'description': 'Event data', 'additionalProperties': False}, 'media_buy_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Media buy ID'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['question'], 'properties': {'question': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Natural language question about the predicted trend or outcome'}, 'screen_id': {'type': 'string', 'maxLength': 100, 'description': 'Filter predictions to a specific screen (mongo ID). Optional.'}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Filter predictions to a specific venue type. Optional.'}, 'time_horizon': {'type': 'string', 'pattern': '^\\d+d$', 'description': 'How far ahead to predict (e.g., "1d", "3d", "7d", "14d"). Default: "7d", max: "30d"'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['moment_description', 'creative_id'], 'properties': {'creative_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The creative/ad ID to predict performance for.'}, 'moment_description': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Natural-language description of the target moment context. Include venue type, time of day, audience size, demographics, attention level, etc.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['media_buy_id', 'feedback'], 'properties': {'feedback': {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['bid_response', 'conversion', 'quality', 'pacing'], 'type': 'string', 'description': 'Type of feedback'}, 'message': {'type': 'string', 'description': 'Free-form feedback'}, 'quality_score': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': '0-1 quality assessment'}, 'preferred_hours': {'type': 'array', 'items': {'type': 'integer', 'maximum': 23, 'minimum': 0}}, 'avg_bid_price_cpm': {'type': 'number'}, 'fill_rate_percent': {'type': 'number'}}, 'description': 'Performance feedback data', 'additionalProperties': False}, 'media_buy_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Media buy ID'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tier'], 'properties': {'tier': {'enum': ['tier_500', 'tier_2000', 'tier_5000'], 'type': 'string', 'description': 'Credit purchase tier'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'type': 'string', 'maxLength': 100, 'description': 'Filter by change category: "breaking", "additive", "deprecation", "fix". Comma-separated for multiple.'}, 'since': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries are always included.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum observations to return (default: 100, max: 1000)'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Natural language query describing what observations to find'}, 'filters': {'type': 'object', 'properties': {'geohash': {'type': 'string', 'maxLength': 12, 'description': 'Filter by geohash-6 prefix for geographic area'}, 'device_id': {'type': 'string', 'maxLength': 100, 'description': 'Filter to a specific device ID'}, 'screen_id': {'type': 'string', 'maxLength': 100, 'description': 'Filter to a specific screen (mongo ID)'}, 'time_range': {'type': 'object', 'properties': {'end': {'type': 'string', 'description': 'End time (ISO 8601)'}, 'start': {'type': 'string', 'description': 'Start time (ISO 8601)'}}, 'description': 'Time range filter', 'additionalProperties': False}, 'venue_type': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 20, 'description': 'Filter by venue type: retail, transit, office, restaurant_qsr, entertainment, healthcare, outdoor, etc.'}, 'observation_family': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 10, 'description': 'Filter by observation family: audience, vehicle, environment, commerce'}}, 'description': 'Structured filters to narrow results', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['moment_description', 'creative_ids'], 'properties': {'creative_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Array of creative/ad IDs to rank. Maximum 20 candidates.'}, 'moment_description': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Natural-language description of the target moment context.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fingerprint', 'ad_id'], 'properties': {'ad_id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Advertisement ID (MongoDB ObjectId)'}, 'metadata': {'type': 'object', 'description': 'Additional impression metadata', 'additionalProperties': {}}, 'timestamp': {'type': 'string', 'format': 'date-time', 'description': 'ISO 8601 timestamp when impression occurred (optional, defaults to now)'}, 'fingerprint': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Device fingerprint (e.g., "P_abc123")'}, 'duration_seconds': {'type': 'number', 'maximum': 3600, 'description': 'How long the ad was displayed (seconds)', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['device_id'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'description': 'Human-readable device name'}, 'specs': {'type': 'object', 'properties': {'os': {'type': 'string', 'maxLength': 100, 'description': 'Operating system'}, 'model': {'type': 'string', 'maxLength': 100, 'description': 'Device model'}, 'browser': {'type': 'string', 'maxLength': 100, 'description': 'Browser/WebView type'}, 'orientation': {'enum': ['landscape', 'portrait'], 'type': 'string'}, 'screen_width': {'type': 'integer', 'description': 'Screen width in pixels', 'exclusiveMinimum': 0}, 'screen_height': {'type': 'integer', 'description': 'Screen height in pixels', 'exclusiveMinimum': 0}}, 'description': 'Device specifications', 'additionalProperties': False}, 'location': {'type': 'object', 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude'}, 'zip': {'type': 'string', 'maxLength': 20, 'description': 'Postal code'}, 'city': {'type': 'string', 'maxLength': 100, 'description': 'City'}, 'state': {'type': 'string', 'maxLength': 100, 'description': 'State/province'}, 'address': {'type': 'string', 'maxLength': 200, 'description': 'Street address'}, 'country': {'type': 'string', 'maxLength': 100, 'description': 'Country'}, 'venue_type': {'type': 'string', 'maxLength': 100, 'description': 'Venue type (office, retail, gym, etc.)'}}, 'description': 'Device location information', 'additionalProperties': False}, 'metadata': {'type': 'object', 'description': 'Additional custom metadata', 'additionalProperties': {}}, 'device_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Your internal unique device identifier'}, 'device_type': {'enum': ['vending_machine', 'kiosk', 'tablet', 'display', 'digital_signage', 'other'], 'type': 'string', 'description': 'Type of device'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['company_name', 'email'], 'properties': {'email': {'type': 'string', 'format': 'email', 'description': 'Contact email for the partner account'}, 'website': {'type': 'string', 'format': 'uri', 'description': 'Company website URL (optional)'}, 'industry': {'type': 'string', 'maxLength': 100, 'description': 'Industry type (e.g., "vending", "retail", "hospitality")'}, 'company_name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Company or organization name'}, 'contact_name': {'type': 'string', 'maxLength': 100, 'description': 'Primary contact person name (optional)'}, 'contact_phone': {'type': 'string', 'maxLength': 20, 'description': 'Contact phone number (optional)'}, 'expected_devices': {'type': 'integer', 'description': 'Estimated number of devices to connect', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum results to return (default: 20, max: 100)'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 3, 'description': 'Natural language search query (min 3 characters)'}, 'min_similarity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum cosine similarity threshold (default: 0.5, range: 0-1)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results (default: 20, max: 100)'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Natural language description of the audience/scene to search for'}, 'since': {'type': 'string', 'pattern': '^\\d+[hd]$', 'description': 'Time window for scene data (e.g., "1h", "24h", "7d"). Default: "24h"'}, 'min_similarity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum semantic similarity threshold 0-1 (default: 0.5)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum results to return (default: 20, max: 100)'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Natural language description of the observation moments to search for'}, 'filters': {'type': 'object', 'properties': {'time_range': {'type': 'object', 'properties': {'end': {'type': 'string', 'description': 'End time (ISO 8601). Default: now'}, 'start': {'type': 'string', 'description': 'Start time (ISO 8601). Default: end - 30 days'}}, 'description': 'Time range filter. Omitted ends default to the last 30 days (end = now, start = end - 30d) — the search is always time-bounded.', 'additionalProperties': False}, 'venue_type': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 20, 'description': 'Filter by venue type'}, 'observation_family': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50}, 'maxItems': 10, 'description': 'Filter by observation family: audience, vehicle, environment, commerce'}}, 'description': 'Additional structured filters to narrow semantic search', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['payment_method_id'], 'properties': {'payment_method_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Stripe payment method token (pm_xxx) from Stripe.js or Elements'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['idempotency_key', 'accounts'], 'properties': {'context': {'type': 'object', 'additionalProperties': {}}, 'dry_run': {'type': 'boolean', 'description': 'Echo what would happen without applying it. Reported back as dry_run.'}, 'accounts': {'type': 'array', 'items': {'type': 'object', 'properties': {'brand': {'$ref': '#/properties/accounts/items/properties/account/properties/brand'}, 'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'billing': {'enum': ['operator', 'agent', 'advertiser'], 'type': 'string', 'description': "Who we invoice on this account. APPLIED and stored. 'operator' = you, buying direct; 'agent' = you are a buying agent consolidating across the brands you front. See account.supported_billing in get_adcp_capabilities for the accepted set — 'advertiser' is refused with a reason."}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253, 'description': "Domain of the entity operating on the brand's behalf"}, 'payment_terms': {'enum': ['net_15', 'net_30', 'net_45', 'net_60', 'net_90', 'prepay'], 'type': 'string'}, 'billing_entity': {'type': 'object', 'description': 'Legal/tax details of the invoiced party. Not applied — see warnings.', 'additionalProperties': {}}, 'notification_configs': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}, 'maxItems': 16}, 'preferred_reporting_protocol': {'type': 'string', 'maxLength': 50}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Per-account entries. Each uses ONE key shape: `account` (settings-update) or the flat brand + operator + billing trio (provisioning).'}, 'delete_missing': {'type': 'boolean', 'description': 'Not supported — this seller never deletes an account from a sync.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Client-generated key for safe retries. This operation has no side effects, so a replay returns the same result.'}, 'push_notification_config': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['creatives'], 'properties': {'ext': {'type': 'object', 'additionalProperties': {}}, 'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'context': {'type': 'object', 'additionalProperties': {}}, 'dry_run': {'type': 'boolean'}, 'creatives': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string', 'maxLength': 300}, 'type': {'enum': ['video', 'image', 'vast'], 'type': 'string'}, 'width': {'type': 'number'}, 'assets': {'type': 'object', 'additionalProperties': {}}, 'height': {'type': 'number'}, 'format_id': {'anyOf': [{'type': 'object', 'required': ['agent_url', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 200}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'agent_url': {'type': 'string', 'maxLength': 500}, 'duration_ms': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'string'}], 'description': 'AdCP creative format ID (e.g., dooh_landscape_1920x1080)'}, 'creative_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'format_kind': {'type': 'string', 'maxLength': 100}, 'file_size_mb': {'type': 'number'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': True}, 'maxItems': 10, 'minItems': 1, 'description': 'Creative assets to validate'}, 'assignments': {'type': 'array', 'items': {'type': 'object', 'required': ['creative_id'], 'properties': {'package_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'creative_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'media_buy_id': {'type': 'string', 'maxLength': 100, 'minLength': 1}}, 'additionalProperties': True}, 'maxItems': 100}, 'creative_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 200}, 'media_buy_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Media buy ID'}, 'delete_missing': {'type': 'boolean'}, 'idempotency_key': {'type': 'string', 'maxLength': 200}, 'validation_mode': {'type': 'string', 'maxLength': 50}, 'push_notification_config': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['task_id'], 'properties': {'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'context': {'type': 'object', 'additionalProperties': {}}, 'task_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Unique identifier of the task to retrieve, as issued in the `task_id` field of the originating task response.'}, 'include_result': {'type': 'boolean', 'description': "Include the task's result payload when status is completed. Defaults to false for lightweight status-only polls."}, 'include_history': {'type': 'boolean', 'description': 'Include conversation history. Trillboards tasks complete in-process and hold no multi-turn history, so this is accepted and has no effect.'}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'account': {'type': 'object', 'properties': {'brand': {'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253}, 'brand_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'sandbox': {'type': 'boolean'}, 'operator': {'type': 'string', 'maxLength': 253}, 'account_id': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'context': {'type': 'object', 'additionalProperties': {}}, 'filters': {'type': 'object', 'properties': {'status': {'enum': ['submitted', 'working', 'input-required', 'completed', 'canceled', 'failed', 'rejected', 'auth-required', 'unknown'], 'type': 'string', 'description': 'Single task status to match'}, 'statuses': {'type': 'array', 'items': {'enum': ['submitted', 'working', 'input-required', 'completed', 'canceled', 'failed', 'rejected', 'auth-required', 'unknown'], 'type': 'string'}, 'description': 'Task statuses to match (enums/task-status.json)'}, 'task_type': {'enum': ['create_media_buy', 'update_media_buy', 'media_buy_delivery', 'sync_creatives', 'build_creative', 'activate_signal', 'get_products', 'get_signals', 'create_property_list', 'update_property_list', 'get_property_list', 'list_property_lists', 'delete_property_list', 'sync_accounts', 'get_account_financials', 'get_creative_delivery', 'sync_event_sources', 'sync_audiences', 'sync_catalogs', 'log_event', 'get_brand_identity', 'search_brands', 'get_rights', 'acquire_rights'], 'type': 'string', 'description': 'Single task type to match'}, 'task_types': {'type': 'array', 'items': {'enum': ['create_media_buy', 'update_media_buy', 'media_buy_delivery', 'sync_creatives', 'build_creative', 'activate_signal', 'get_products', 'get_signals', 'create_property_list', 'update_property_list', 'get_property_list', 'list_property_lists', 'delete_property_list', 'sync_accounts', 'get_account_financials', 'get_creative_delivery', 'sync_event_sources', 'sync_audiences', 'sync_catalogs', 'log_event', 'get_brand_identity', 'search_brands', 'get_rights', 'acquire_rights'], 'type': 'string'}, 'description': 'Task types to match (enums/task-type.json)'}}, 'description': 'Narrow the returned tasks.', 'additionalProperties': False}, 'pagination': {'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size (max 100, default 50)'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Rows to skip'}}, 'additionalProperties': False}}, 'additionalProperties': True}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'event': {'enum': ['device.online', 'device.offline', 'impression.recorded', 'campaign.allocated', 'payout.processed', 'programmatic.ad_started', 'programmatic.ad_ended', 'programmatic.no_fill', 'programmatic.error', 'sensing.threshold_crossed', 'audience.spike', 'audience.venue_busy', 'audience.purchase_intent', 'audience.demographics_update', 'venue.traffic_summary', 'screen_group.created', 'screen_group.updated', 'screen_group.deleted', 'screen_group.member.added', 'screen_group.member.removed', 'screen_group.content_policy.updated', 'screen_group.sensing_config.updated', 'fleet_command.completed', 'fleet_command.failed'], 'type': 'string', 'description': 'Event type to simulate (optional, defaults to device.online)'}, 'webhook_id': {'type': 'string', 'pattern': '^(wh_[a-z0-9]+_[a-f0-9]+|[a-f0-9]{24})$', 'description': 'Webhook ID to test (wh_xxx format or legacy ObjectId)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['media_buy_id'], 'properties': {'ext': {'type': 'object', 'additionalProperties': {}}, 'paused': {'type': 'boolean'}, 'account': {'type': 'object', 'additionalProperties': {}}, 'context': {'type': 'object', 'additionalProperties': {}}, 'updates': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'budget': {'type': 'object', 'properties': {'bid_cpm': {'type': 'number'}, 'daily_usd': {'type': 'number'}, 'total_usd': {'type': 'number'}}, 'additionalProperties': False}, 'status': {'enum': ['active', 'paused', 'cancelled'], 'type': 'string'}, 'end_date': {'type': 'string'}, 'targeting': {'type': 'object', 'additionalProperties': {}}, 'screen_ids': {'type': 'array', 'items': {'type': 'string'}}, 'start_date': {'type': 'string'}}, 'description': 'Fields to update', 'additionalProperties': False}, 'canceled': {'type': 'boolean'}, 'end_time': {'type': 'string'}, 'packages': {'type': 'array', 'items': {'type': 'object', 'required': ['package_id'], 'properties': {'package_id': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'targeting_overlay': {'anyOf': [{'type': 'object', 'additionalProperties': {}}, {'type': 'null'}]}, 'creative_assignments': {'type': 'array', 'items': {'type': 'object', 'required': ['creative_id'], 'properties': {'creative_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'additionalProperties': True}, 'maxItems': 100}}, 'additionalProperties': True}}, 'revision': {'type': 'integer'}, 'start_time': {'anyOf': [{'type': 'string'}, {'type': 'string', 'const': 'asap'}]}, 'media_buy_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Media buy ID to update'}, 'new_packages': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'idempotency_key': {'type': 'string', 'maxLength': 200}, 'invoice_recipient': {'type': 'object', 'additionalProperties': {}}, 'reporting_webhook': {'type': 'object', 'additionalProperties': {}}, 'cancellation_reason': {'type': 'string', 'maxLength': 500}, 'push_notification_config': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'method'], 'properties': {'path': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'Operation path (OpenAPI template form).'}, 'method': {'type': 'string', 'maxLength': 16, 'minLength': 1}, 'payload': {'description': 'Shape is operation-dependent. GET → { query?, params? }. POST → body + optional { query?, params? }.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'description': 'Max proofs to return (default: 1000, used with campaign_id)'}, 'cursor': {'type': 'string', 'maxLength': 200, 'description': 'Pagination cursor from previous response (used with campaign_id)'}, 'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date for proof query (YYYY-MM-DD, used with campaign_id)'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date for proof query (YYYY-MM-DD, used with campaign_id)'}, 'campaign_id': {'type': 'string', 'maxLength': 128, 'description': 'Campaign ID to get proofs for (mutually exclusive with proof_payload)'}, 'proof_payload': {'type': 'object', 'required': ['signature', 'timestamp'], 'properties': {'adId': {'type': 'string'}, 'deviceId': {'type': 'string'}, 'screenId': {'type': 'string'}, 'signature': {'type': 'string', 'description': 'Signature string (ed25519=... or sha256=...)'}, 'timestamp': {'type': 'string', 'description': 'ISO 8601 timestamp'}, 'impressionId': {'type': 'string'}, 'signatureVersion': {'type': 'string', 'description': 'v1 or v2'}}, 'description': 'Proof data to verify (mutually exclusive with campaign_id). Must include: signature, timestamp, adId, impressionId, screenId, deviceId', 'additionalProperties': False}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
SharksAPI.AI
Provides marketing analytics and actions across GA4, Search Console, Google Ads, social channels, SEO, WordPress, and marketing p…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
Stratalize Intelligence
Provides vendor, market, SaaS, workforce, government contract, public company, regulatory, competitive, and AI-brand intelligence…
captapi
Retrieves social media profiles, posts, engagement metrics, comments, marketplace listings, events, and Meta advertising data acr…
CorpusIQ
Connects authenticated users to business systems such as CRM, ecommerce, advertising, analytics, email marketing, SEO, calendars,…
Rahul D Sarker: Marketing & RevOps Tools
Provides marketing, revenue operations, sales, advertising, SaaS, and conversion calculators, along with article search and consu…
rankparse-mcp
Provides SEO and search marketing research including backlinks, authority, competitor gaps, Google Ads keyword metrics, and Googl…