# Trillboards Campaign Planner (remote · api.trillboards.com)

Plan and book out-of-home, CTV, video, audio and display campaigns, paid through Stripe.

- Trust score: 72/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.trillboards.com`: 72/100 (this document), [markdown](https://verifymcp.io/servers/com-trillboards-planner/mcp-advertiser.md), [page](https://verifymcp.io/servers/com-trillboards-planner/mcp-advertiser)

## Channel facts

- Endpoint: `https://api.trillboards.com/mcp/advertiser`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (save_campaign_draft).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (fair).
  - Context-footprint check failed: tool/resource definitions use about 1410 tokens (~141/item across 10 items; 9 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 53/100
  - Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 81/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 35% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the Trillboards Campaign Planner MCP server?

Trillboards Campaign Planner is a hosted endpoint at https://api.trillboards.com/mcp/advertiser, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-trillboards-planner 'https://api.trillboards.com/mcp/advertiser'
```

### Cursor

```json
{
  "mcpServers": {
    "com-trillboards-planner": {
      "url": "https://api.trillboards.com/mcp/advertiser"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-trillboards-planner": {
      "type": "http",
      "url": "https://api.trillboards.com/mcp/advertiser"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-trillboards-planner]
url = "https://api.trillboards.com/mcp/advertiser"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-trillboards-planner": {
      "type": "remote",
      "url": "https://api.trillboards.com/mcp/advertiser",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-trillboards-planner --url 'https://api.trillboards.com/mcp/advertiser' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-trillboards-planner:
    url: "https://api.trillboards.com/mcp/advertiser"
```

### Netclaw

```json
{
  "McpServers": {
    "com-trillboards-planner": {
      "Transport": "http",
      "Url": "https://api.trillboards.com/mcp/advertiser"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-trillboards-planner -t streamable-http -u 'https://api.trillboards.com/mcp/advertiser'
```

### Other

```json
{
  "mcpServers": {
    "com-trillboards-planner": {
      "type": "http",
      "url": "https://api.trillboards.com/mcp/advertiser"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 68, +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.

### 2026-10-25 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-23 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-21 (score 65, +1)

- [functional improvement] Stability: unverified → 0.03
- [cosmetic] Tool “attach_campaign_creative” changed its title: Attach campaign creative
- [cosmetic] Tool “create_campaign_checkout” changed its title: Create campaign checkout
- [cosmetic] Tool “get_campaign_delivery” changed its title: Get campaign delivery
- [cosmetic] Tool “get_campaign_status” changed its title: Get campaign status
- [cosmetic] Tool “prepare_campaign_booking” changed its title: Prepare campaign booking
- [cosmetic] Tool “preview_campaign_plan” changed its title: Preview campaign plan
- [cosmetic] Tool “rebook_campaign” changed its title: Rebook campaign
- [cosmetic] Tool “save_campaign_draft” changed its title: Save campaign draft
- [cosmetic] Tool “search_ad_inventory” changed its title: Search ad inventory

## MCP tools (9)

### `search_ad_inventory` (~158 tokens)

Search ad inventory

Find local digital out-of-home screens and available CTV, video, audio and display products for an agency client. Uses the advertiser portal inventory and prices.

Input parameters:

- `channels` (array)
- `city` (string): Native city filter. For neighborhoods such as Manhattan, use radius around the requested area instead.
- `cursor` (string)
- `limit` (integer)
- `query` (string): Screen or venue text filter. Use geographic radius for a neighborhood; a text match is not a location search.
- `radius` (object): Geographic inventory search around the client location. Use this for neighborhoods and nearby screens, without an additional neighborhood text or city filter.
- `source` (string)
- `state` (string)

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `preview_campaign_plan` (~219 tokens)

Preview campaign plan

Preview native campaign pricing and audience estimates for selected screens and channels. This does not reserve inventory or charge the advertiser.

Input parameters:

- `advertisementId` (string)
- `budgetUsd` (number)
- `campaignName` (string)
- `clientName` (string)
- `endTime` (string)
- `flightEnd` (string, required): Local calendar date, YYYY-MM-DD.
- `flightStart` (string, required): Local calendar date, YYYY-MM-DD.
- `impressions` (integer)
- `landingUrl` (string): Client business or campaign landing page URL.
- `ownedBudgetUsd` (number)
- `ownedImpressions` (integer)
- `partnerBudgetUsd` (number)
- `partnerImpressions` (integer)
- `providerPlan`
- `quoteId` (string)
- `quoteIds` (object)
- `screenIds` (array)
- `source` (string)
- `startTime` (string)
- `timezone` (string): IANA timezone for the local flight.

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `save_campaign_draft` (~254 tokens)

Save campaign draft

Save or update an agency-owned campaign and selected inventory in the advertiser portal. The agency remains the owner and payer; clientName labels the client brief.

Input parameters:

- `advertisementId` (string)
- `budgetUsd` (number)
- `campaignName` (string)
- `clientName` (string)
- `endTime` (string)
- `flightEnd` (string, required): Local calendar date, YYYY-MM-DD.
- `flightStart` (string, required): Local calendar date, YYYY-MM-DD.
- `idempotency_key` (string, required): Stable unique key for this action. Reuse this key and unchanged arguments when retrying.
- `impressions` (integer)
- `landingUrl` (string): Client business or campaign landing page URL.
- `ownedBudgetUsd` (number)
- `ownedImpressions` (integer)
- `partnerBudgetUsd` (number)
- `partnerImpressions` (integer)
- `providerPlan`
- `quoteId` (string)
- `quoteIds` (object)
- `screenIds` (array)
- `source` (string)
- `startTime` (string)
- `timezone` (string): IANA timezone for the local flight.

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `attach_campaign_creative` (~92 tokens)

Attach campaign creative

Copy a user-selected creative file into the native campaign asset and moderation flow. Attach artwork before booking. Existing live artwork changes follow the portal replacement workflow.

Input parameters:

- `advertisementId` (string, required): Native campaign ID returned by save_campaign_draft.
- `creativeFile` (object, required)
- `idempotency_key` (string, required): Stable unique key for this action. Reuse this key and unchanged arguments when retrying.

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `prepare_campaign_booking` (~80 tokens)

Prepare campaign booking

Read the exact current campaign selections, total, currency and creative readiness for the buyer to review before payment.

Input parameters:

- `advertisementId` (string, required): Native campaign ID returned by save_campaign_draft.
- `bookingIds` (array)
- `providerLineIds` (array)
- `quoteId` (string)
- `quoteIds` (object)

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `create_campaign_checkout` (~192 tokens)

Create campaign checkout

Create a Stripe checkout for the exact campaign and total the buyer reviewed. Open the returned checkoutUrl to complete payment. The campaign is booked after the verified native Stripe payment webhook.

Input parameters:

- `advertisementId` (string, required): Native campaign ID returned by save_campaign_draft.
- `bookingIds` (array)
- `idempotency_key` (string, required): Stable unique key for this action. Reuse this key and unchanged arguments when retrying.
- `providerLineIds` (array)
- `quoteId` (string)
- `quoteIds` (object)
- `reviewedAmount` (integer, required): Exact amountMinor from prepare_campaign_booking, in the currency minor unit.
- `reviewedCurrency` (string, required): Exact currency from prepare_campaign_booking.
- `reviewedSelection` (string, required): Exact native reviewedSelection from prepare_campaign_booking; binds the reviewed inventory, flight, quantities and targeting.
- `reviewedSubtotalUsd` (number, required)

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `get_campaign_status` (~52 tokens)

Get campaign status

Read the campaign and booking progress from the same order records as the advertiser portal, including creative review, scheduled dates and live fulfillment.

Input parameters:

- `advertisementId` (string, required): Native campaign ID returned by save_campaign_draft.

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `get_campaign_delivery` (~47 tokens)

Get campaign delivery

Read measured campaign delivery and screen performance from the native campaign reporting services.

Input parameters:

- `advertisementId` (string, required): Native campaign ID returned by save_campaign_draft.
- `limit` (integer)

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

### `rebook_campaign` (~114 tokens)

Rebook campaign

Copy a previous campaign into a new unpaid campaign for new dates, preserving native creative lineage and obtaining fresh prices. Rebooking requires a new review and payment.

Input parameters:

- `advertisementId` (string, required): Native campaign ID returned by save_campaign_draft.
- `flightEnd` (string, required): Local calendar date, YYYY-MM-DD.
- `flightStart` (string, required): Local calendar date, YYYY-MM-DD.
- `idempotency_key` (string, required): Stable unique key for this action. Reuse this key and unchanged arguments when retrying.

Output parameters:

- `advertisementId`
- `checkoutUrl` (string)
- `kind` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-trillboards-planner/mcp-advertiser#diagnostics

## Score history

- 2026-11-05: 72
- 2026-11-04: 71
- 2026-11-03: 71
- 2026-11-02: 70
- 2026-11-01: 70
- 2026-10-31: 70
- 2026-10-30: 69
- 2026-10-29: 69
- 2026-10-28: 68
- 2026-10-27: 68
- 2026-10-26: 67
- 2026-10-25: 67
- 2026-10-24: 66
- 2026-10-23: 66
- 2026-10-22: 65
- 2026-10-21: 65
- 2026-10-20: 64

## Common questions

### What is the Trillboards Campaign Planner MCP server?

Trillboards Campaign Planner is an MCP server listed in the public MCP registry as com.trillboards/planner. Plan and book out-of-home, CTV, video, audio and display campaigns, paid through Stripe. This page covers its hosted endpoint (https://api.trillboards.com/mcp/advertiser).

### Is the Trillboards Campaign Planner MCP server safe to use?

Trillboards Campaign Planner scores 72 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Trillboards Campaign Planner MCP server expose?

Trillboards Campaign Planner exposes 9 tools: search_ad_inventory, preview_campaign_plan, save_campaign_draft, attach_campaign_creative, prepare_campaign_booking, and 4 more. Their descriptions and schemas cost roughly 1,208 tokens of context every time the server is loaded.

### Does the Trillboards Campaign Planner MCP server require authentication?

No. We connected to Trillboards Campaign Planner without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Trillboards Campaign Planner MCP server still maintained?

Trillboards Campaign Planner is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.trillboards.com/mcp/advertiser
- Website: https://trillboards.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-trillboards-planner/mcp-advertiser.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-trillboards-planner/mcp-advertiser.json
- HTML version of this page: https://verifymcp.io/servers/com-trillboards-planner/mcp-advertiser
