# CAMP Insights > CAMP Insights is an internal marketing analytics platform for KBTG (Kasikorn Business Technology Group). It provides deep campaign intelligence, audience analysis, knowledge graphs, and performance metrics for the Marketing 360 / CAMP ecosystem. ## Capabilities - Campaign portfolio management and search (~12,000 campaigns) - Multi-dimensional performance analytics (eligibles, leads, views, clicks, CTR, conversion) - Audience intelligence with SQL targeting forensics - Knowledge graph traversal (campaigns, audiences, channels, segments, products) - Channel and placement analysis (LINE Push Message, NEXT, PAOTANG, etc.) - Push delivery history: what actually went out per day, per channel, per campaign, per hour (NEXT push, NEXT inbox, LINE CONNEXT saves), beside what CAMP BRAIN directed for the same day — down to the individual campaigns directed with no delivery - Executive-level anomaly detection and insights - Marketing 360 field-level usage analytics - Marketing 360 value distributions: every observed value of all 1,244 M360 fields, measured across 58,267,733 customers - Segment reach estimation from those distributions, with the defects in a predicate named before the SQL is written ## Machine-Readable Interfaces ### CAMP Insights MCP Server (Model Context Protocol) - Endpoint: https://campinsights.teamcamp.dev/mcp - Transport: Streamable HTTP - Auth: Bearer token (API key `sk-camp_...` or user JWT) - Discovery: /.well-known/mcp.json - 77 tools, 8 resources and 15 prompts, on a frozen contract verified in CI - Supported clients: AGENTC, Claude Code (Web), Claude Code (CLI), and any MCP Streamable HTTP client (cURL, custom agents). #### Claude Code (Web) setup 1. Go to claude.ai/code → Settings → Environments and edit the target environment. 2. Under MCP Servers, paste: ```json { "mcpServers": { "camp-insights": { "type": "http", "url": "https://campinsights.teamcamp.dev/mcp", "headers": { "Authorization": "Bearer sk-camp_YOUR_KEY" } } } } ``` 3. Save and start a fresh session — existing sessions won't pick up the new server. #### Claude Code (CLI) setup ```sh claude mcp add --transport http camp-insights \ https://campinsights.teamcamp.dev/mcp \ --header "Authorization: Bearer sk-camp_YOUR_KEY" ``` ### CAMP Knowledge MCP Server (Model Context Protocol) - Endpoint: https://campinsights.teamcamp.dev/knowledge-mcp - Transport: Streamable HTTP - Auth: Bearer token — the SAME API key (`sk-camp_...`) as CAMP Insights - Discovery: /.well-known/knowledge-mcp.json - 24 tools (15 read, 9 write), 5 resources and 5 prompts, on a frozen contract verified in CI - A separate server from CAMP Insights: separate tools, separate storage, separate telemetry. CAMP Insights answers questions about campaigns; CAMP Knowledge answers questions about the project — requirements, decisions, specifications, delivery threads and the people behind them. - Agents are the only way knowledge enters or leaves the platform. The write mode is a standardised ingest protocol, not merely an endpoint: fetch it with `get_knowledge_ingest_contract` or read the resource `campkb://docs/ingest-contract`, both generated from the validator that enforces them. - Each key carries a `knowledge_mode` — `none`, `read` or `write` — set by its owner in the CAMP dashboard and reported back at `initialize.serverInfo.knowledgeMode`. `read` is the default. A Low Context key can never hold `write`. - Start here as a reader: `get_knowledge_overview` → `search_knowledge` → `get_knowledge_bulk`. Start here as a writer: `get_knowledge_ingest_contract` → `get_knowledge_taxonomy` → `check_knowledge_freshness` → `validate_knowledge_document` → `ingest_knowledge_batch`. - Every response carries a `_cost` block, and nothing is truncated silently. #### Claude Code (CLI) setup ```sh claude mcp add --transport http camp-knowledge \ https://campinsights.teamcamp.dev/knowledge-mcp \ --header "Authorization: Bearer sk-camp_YOUR_KEY" ``` ### A2A Discovery - Agent card: /.well-known/agent.json ## Context Tiers Every API key is bound to a context tier at creation time: - **Full Context** (default): All campaigns, all tools, no PII redaction. For trusted internal agents. - **Low Context** (sandbox): Deterministic 10% stratified sample of campaigns, PII stripped, deep tools require `campaign_id` or `campaign_ref_id`, creator-centric tools hidden. For external/untrusted agents and demos. Agents can detect their tier via `initialize.serverInfo.contextTier`. Full policy: MCP resource `camp://docs/low-context-policy`. On CAMP Knowledge the tier applies too — a Low Context key sees only `public` and `internal` documents (enforced as a query predicate, not a filter on the result), has person-naming keys stripped from every response, cannot reach the people or revision tools, and can never write. Full policy: MCP resource `campkb://docs/access-policy`. ## Knowledge Modes Independently of the context tier, every API key carries a CAMP Knowledge grant: - **none**: `initialize` only. The handshake says so, so an agent need not discover it one call at a time. - **read** (default): every read tool — search, filter, bulk fetch, domain browse, people, references, links, change feed. - **write**: everything, including ingest, update, archive, link and domain registration. Opt-in per key. Agents detect theirs via `initialize.serverInfo.knowledgeMode`. ## Authentication External agents authenticate via API keys (sk-camp_...) generated through the platform's API Key Manager. Internal users sign in with Google only; the account must be on the platform access list, which is checked on every request rather than only at sign-in. ## Data Model - **Campaigns**: Core entities with name, status, channels, segments, products, audiences, performance metrics - **Audiences**: Targeting groups with SQL scripts, relationships (included/excluded/intersected) - **Channels**: Distribution channels (LINE Push Message, NEXT, PAOTANG, etc.) - **Knowledge Graphs**: GraphML-based relationship maps between campaigns, audiences, and attributes ## Contact Platform maintained by the CAMP Insights team at KBTG.