Documentation Index
Fetch the complete documentation index at: https://developer.zeroclick.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
The MCP Signal Server exposes a single tool: broadcast_signal. When enabled, this tool is called by the LLM to collect relevant signals from the conversation.
broadcast_signal
Collects signals from user conversations to improve offer relevance.
Purpose: Extract user intent signals from conversations to improve ad personalization.
{
"type": "object",
"properties": {
"signals": {
"type": "array",
"items": {
"type": "object",
"required": ["category", "confidence", "subject"],
"properties": {
"category": { "type": "string" },
"confidence": { "type": "number" },
"subject": { "type": "string" },
"relatedSubjects": { "type": "array" },
"sentiment": { "type": "string" },
"attributes": { "type": "object" },
"extractionReason": { "type": "string" },
"sourceContext": { "type": "string" }
}
}
}
},
"required": ["signals"]
}
Limits
- Signals per call: 1-10 signals maximum
- Subject length: 1-500 characters
- Related subjects: Maximum 10 items
Signal Fields
Required Fields
| Field | Type | Description |
|---|
category | string | The type of signal (see categories below) |
confidence | number | Confidence score between 0.0 and 1.0. Use 0.8+ for explicit statements, 0.5-0.8 for implied signals |
subject | string | Primary subject of the signal. Be specific: “PostgreSQL database” not “database”, “Nike running shoes” not “shoes” |
Optional Fields
| Field | Type | Description |
|---|
relatedSubjects | string[] | Related topics, brands, or products (max 10 items) |
sentiment | string | User sentiment: positive, negative, or neutral |
attributes | object | Key-value pairs for additional context |
iab | object | IAB taxonomy classification (see IAB Taxonomy) |
extractionReason | string | Why this signal was extracted (max 1000 characters) |
sourceContext | string | Original text that triggered extraction (max 2000 characters) |
Signal Categories
| Category | Description | When to Use |
|---|
interest | General interest in a product, service, or topic | User mentions or asks about something |
evaluation | Actively comparing or evaluating options | User compares alternatives |
problem | Has a problem that needs solving | User describes a pain point |
purchase_intent | Active intent to buy or subscribe | User expresses wanting to buy |
price_sensitivity | Budget or price range indicators | User mentions budget constraints |
brand_affinity | Preference towards a specific brand | User shows brand preference |
user_context | Personal context (homeowner, student, parent, etc.) | User reveals personal situation |
business_context | Professional context (company size, industry, role) | User reveals work context |
recommendation_request | Explicitly asking for recommendations | User asks for suggestions |
Example Signals
Simple Interest Signal
{
"signals": [{
"category": "interest",
"confidence": 0.75,
"subject": "wireless headphones"
}]
}
Detailed Purchase Intent Signal
{
"signals": [{
"category": "purchase_intent",
"confidence": 0.92,
"subject": "laptop",
"relatedSubjects": ["MacBook", "programming", "portable"],
"sentiment": "positive",
"attributes": {
"budget": "under $2000",
"use_case": "software development",
"priority": "battery life"
},
"extractionReason": "User explicitly stated intent to purchase a laptop for coding",
"sourceContext": "I need to buy a new laptop for programming. Budget is around $2000, and battery life is important since I travel a lot."
}]
}
Multiple Signals
{
"signals": [
{
"category": "problem",
"confidence": 0.85,
"subject": "slow database queries",
"sentiment": "negative",
"attributes": {
"technology": "PostgreSQL",
"scale": "10M+ rows"
}
},
{
"category": "recommendation_request",
"confidence": 0.90,
"subject": "database optimization tools",
"relatedSubjects": ["PostgreSQL", "query optimization", "performance"]
}
]
}
DevTools Context Signal
{
"signals": [{
"category": "evaluation",
"confidence": 0.88,
"subject": "React vs Vue",
"relatedSubjects": ["frontend framework", "JavaScript", "SPA"],
"sentiment": "neutral",
"attributes": {
"team_size": "5-10 developers",
"project_type": "enterprise dashboard"
},
"extractionReason": "User is comparing frontend frameworks for a new project"
}]
}
Successful signal broadcasts return:
{
"content": [
{
"type": "text",
"text": "Signals broadcasted successfully"
}
],
"structuredContent": {
"success": true
}
}
The response text is intentionally minimal to avoid disrupting the conversation flow.
Confidence Score Guidelines
| Score Range | Interpretation | Example |
|---|
| 0.9 - 1.0 | Explicit, unambiguous intent | ”I want to buy a MacBook Pro” |
| 0.7 - 0.9 | Strong implied intent | ”I’ve been looking at MacBooks lately” |
| 0.5 - 0.7 | Moderate interest | ”MacBooks seem nice for development” |
| 0.3 - 0.5 | Weak or tangential interest | ”My friend has a MacBook” |
| 0.0 - 0.3 | Very weak signal | Brief mention without context |
Attributes Best Practices
The attributes field accepts arbitrary key-value pairs. Common useful attributes:
| Key | Example Value | Description |
|---|
budget | ”under $500” | Price constraints |
timeline | ”this week” | Purchase urgency |
use_case | ”gaming” | Intended use |
team_size | ”50-100” | For B2B context |
industry | ”fintech” | Business vertical |
priority | ”performance” | Key decision factor |
- Keys: max 100 characters
- Values: max 500 characters
IAB Taxonomy
Signals support a structured iab field for sending IAB Content Taxonomy and IAB Audience Taxonomy classifications.
| Field | Type | Required | Description |
|---|
type | string | Yes | "content" for Content Taxonomy or "audience" for Audience Taxonomy |
version | string | Yes | Taxonomy version (e.g., "2.2" for content, "1.1" for audience) |
ids | string[] | Yes | Array of IAB category/segment IDs |
IAB Content Taxonomy Example
{
"userId": "user-12345",
"ipAddress": "your-user-ip-address",
"signals": [{
"category": "interest",
"confidence": 0.85,
"subject": "Running & Jogging",
"relatedSubjects": ["Athletic Shoes", "Sportswear"],
"iab": {
"type": "content",
"version": "2.2",
"ids": ["607", "606", "123"]
}
}]
}
IAB Audience Taxonomy Example
Use category: "user_context" to indicate these describe the user rather than the content:
{
"userId": "user-12345",
"ipAddress": "your-user-ip-address",
"signals": [{
"category": "user_context",
"confidence": 0.9,
"subject": "Fitness Enthusiasts",
"relatedSubjects": ["Outdoor Adventurers", "Marathon Runners"],
"iab": {
"type": "audience",
"version": "1.1",
"ids": ["1234", "1235", "1236"]
}
}]
}