Read and manage the authenticated user's Echo campaigns and their analytics. All tools operate only on campaigns owned by the connected user. Reference a campaign by its numeric id or slug. Analytics tools accept an optional from/to date range (YYYY-MM-DD); omitting it returns lifetime totals (summary) or the last 30 days (timeseries/breakdown).
Point any MCP-compatible client at this endpoint:
Authentication is handled automatically over OAuth — no manual token needed.
mcp:use scope.The server speaks OAuth 2.1, so clients connect without you copying any secrets:
mcp:use, grants access to your campaigns.https://mcp.echo.walls.io/.well-known/oauth-protected-resource and
https://mcp.echo.walls.io/.well-known/oauth-authorization-server.401 Unauthorized.Every tool operates only on campaigns owned by the connected user — other users' data is never exposed. Reference a campaign by its numeric id or slug.
9 tools, kept in sync with the server.
list-campaigns-tool
List the campaigns owned by the authenticated user, each with its id, title, slug, public URL and short link.
| Input | Type | Required | Description |
|---|---|---|---|
limit |
integer | no | Maximum number of campaigns to return (1-100). |
get-campaign-tool
Get the full configuration and lifetime metrics for one of the authenticated user's campaigns, identified by its numeric id or slug.
| Input | Type | Required | Description |
|---|---|---|---|
campaign |
string | yes | The campaign id or slug. |
get-campaign-analytics-tool
Get analytics totals (views, clicks, shares, conversions) and engagement rates for one of the user's campaigns. Omit the dates for lifetime figures, or pass from/to for a window.
| Input | Type | Required | Description |
|---|---|---|---|
campaign |
string | yes | The campaign id or slug. |
from |
string | no | Start date (YYYY-MM-DD). Optional; omit with "to" for lifetime totals. |
to |
string | no | End date (YYYY-MM-DD). Optional. |
get-campaign-timeseries-tool
Get a daily time series for one metric (views, clicks, shares or conversions) of one of the user's campaigns. Defaults to the last 30 days; gaps are zero-filled.
| Input | Type | Required | Description |
|---|---|---|---|
campaign |
string | yes | The campaign id or slug. |
metric |
string | no | Which metric to chart. |
from |
string | no | Start date (YYYY-MM-DD). Optional. |
to |
string | no | End date (YYYY-MM-DD). Optional. |
get-campaign-breakdown-tool
Break down one of the user's campaign analytics by a dimension: "device" (works for any metric) or "platform" (share platforms). Defaults to the last 30 days.
| Input | Type | Required | Description |
|---|---|---|---|
campaign |
string | yes | The campaign id or slug. |
dimension |
string | yes | Group by device or by share platform. |
metric |
string | no | Metric to break down (ignored for the platform dimension, which always uses shares). |
from |
string | no | Start date (YYYY-MM-DD). Optional. |
to |
string | no | End date (YYYY-MM-DD). Optional. |
get-campaign-shares-tool
List a campaign's recent shares — the same merged groups shown in the dashboard, where repeat shares from the same person are combined and their clicks and conversions summed. Newest first by default; sortable by date, clicks or conversions, and paged. Each row carries the participant's name, role, platform, device, picture, share URL, code, sharing text, clicks, conversions, merged_count and timestamps — never their email.
| Input | Type | Required | Description |
|---|---|---|---|
campaign |
string | yes | The campaign id or slug. |
sort |
string | no | Sort field: share date, total clicks, or total conversions. |
direction |
string | no | Sort direction. |
per_page |
integer | no | Rows per page (1-100). |
page |
integer | no | Page number (1-based) for paging through results. |
create-campaign-tool
Create a new campaign owned by the authenticated user. Only "title" is required; a unique slug is generated from the title when omitted.
| Input | Type | Required | Description |
|---|---|---|---|
title |
string | yes | Campaign title. |
slug |
string | no | URL slug. Optional; generated from the title when omitted. |
sharing_url |
string | no | Destination URL appended to the sharing text. |
sharing_text |
string | no | Default sharing text. |
utm_source |
string | no | UTM source. |
utm_medium |
string | no | UTM medium. |
utm_campaign |
string | no | UTM campaign. |
utm_content |
string | no | UTM content. |
hide_branding |
boolean | no | Hide Echo branding. |
viral_tracking |
boolean | no | Enable viral chain tracking. |
conversion_tracking |
boolean | no | Enable conversion tracking. |
social_proof |
boolean | no | Show recent sharers. |
language_default |
string | no | Default language code. |
update-campaign-tool
Update fields on one of the authenticated user's campaigns. Identify it by id or slug; only the provided fields are changed.
| Input | Type | Required | Description |
|---|---|---|---|
campaign |
string | yes | The campaign id or slug to update. |
title |
string | no | Campaign title. |
slug |
string | no | URL slug. |
sharing_url |
string | no | Destination URL appended to the sharing text. |
sharing_text |
string | no | Default sharing text. |
utm_source |
string | no | UTM source. |
utm_medium |
string | no | UTM medium. |
utm_campaign |
string | no | UTM campaign. |
utm_content |
string | no | UTM content. |
hide_branding |
boolean | no | Hide Echo branding. |
viral_tracking |
boolean | no | Enable viral chain tracking. |
conversion_tracking |
boolean | no | Enable conversion tracking. |
social_proof |
boolean | no | Show recent sharers. |
language_default |
string | no | Default language code. |
delete-campaign-tool
destructive
Permanently delete one of the authenticated user's campaigns, identified by id or slug. This cannot be undone — confirm with the user first.
| Input | Type | Required | Description |
|---|---|---|---|
campaign |
string | yes | The campaign id or slug to delete. |