MCP Resources
Leto SEO exposes two flavors of MCP resource. Literal resources have fixed URIs and appear in resources/list responses. Resource templates have variable URIs and appear in resources/templates/list responses — clients substitute variables to read.
All resources are read via a resources/read JSON-RPC 2.0 request with the resource URI in params.uri. Resources use the letoseo:// URI scheme. All resources require a valid Bearer token — see the MCP overview for authentication details.
Literal resources
These 2 resources have fixed URIs and appear in resources/list responses. They return a snapshot of the portfolio at the time of the request.
portfolio_summary
URIletoseo://portfolio/summary
Portfolio health snapshot for all sites.
Example request
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": {
"uri": "letoseo://portfolio/summary"
}
}Example result
{
"contents": [
{
"uri": "letoseo://portfolio/summary",
"text": "[{\"id\":\"00000000-0000-0000-0000-000000000001\",\"name\":\"Acme Demo Co\",\"url\":\"https://acme-demo.example\",\"healthScore\":72,\"maturity\":\"established\",\"activeAlertCount\":1,\"trendDirection\":\"up\",\"organicSessions30d\":3850,\"impressions30d\":18400}]"
}
]
}active_alerts
URIletoseo://alerts/active
All active alerts across the portfolio.
Example request
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": {
"uri": "letoseo://alerts/active"
}
}Example result
{
"contents": [
{
"uri": "letoseo://alerts/active",
"text": "[{\"id\":\"00000000-0000-0000-0000-000000000030\",\"site_id\":\"00000000-0000-0000-0000-000000000001\",\"site_name\":\"Acme Demo Co\",\"type\":\"traffic_drop\",\"severity\":\"critical\",\"status\":\"active\",\"message\":\"Organic sessions dropped 54% vs 7-day average\",\"created_at\":\"2025-01-14T06:45:00.000Z\"}]"
}
]
}Resource templates
These 3 resource templates have variable URIs (RFC 6570 format) and appear in resources/templates/list responses. Substitute the variables in the URI template to form a concrete resources/read request.
site_metrics
URI templateletoseo://sites/{siteId}/metrics
Latest metric snapshots for a site.
Variables
| Name | Type | Required | Description | Default |
|---|---|---|---|---|
siteId | uuid | required | The site UUID. | — |
Example URIletoseo://sites/00000000-0000-0000-0000-000000000001/metrics
Example request
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": {
"uri": "letoseo://sites/00000000-0000-0000-0000-000000000001/metrics"
}
}Example result
{
"contents": [
{
"uri": "letoseo://sites/00000000-0000-0000-0000-000000000001/metrics",
"text": "{\"site\":{\"id\":\"00000000-0000-0000-0000-000000000001\",\"name\":\"Acme Demo Co\",\"url\":\"https://acme-demo.example\",\"maturity\":\"established\",\"health_score\":72},\"kpis\":{\"organic_sessions\":{\"value\":3850,\"change\":\"+12.6%\",\"direction\":\"up\"}},\"period\":\"28d\"}"
}
]
}site_pages
URI templateletoseo://sites/{siteId}/pages
Top pages with CWV status for a site.
Variables
| Name | Type | Required | Description | Default |
|---|---|---|---|---|
siteId | uuid | required | The site UUID. | — |
Example URIletoseo://sites/00000000-0000-0000-0000-000000000001/pages
Example request
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": {
"uri": "letoseo://sites/00000000-0000-0000-0000-000000000001/pages"
}
}Example result
{
"contents": [
{
"uri": "letoseo://sites/00000000-0000-0000-0000-000000000001/pages",
"text": "[{\"url\":\"https://acme-demo.example/blog/example-post\",\"title\":\"Example Post — Acme Marketing Blog\",\"organic_sessions_30d\":185,\"impressions_30d\":4200,\"clicks_30d\":210,\"ctr\":0.05,\"avg_position\":8.3,\"cwv_status\":\"pass\",\"index_status\":\"indexed\"}]"
}
]
}site_campaigns
URI templateletoseo://sites/{siteId}/campaigns
Active campaigns with metrics summary for a site.
Variables
| Name | Type | Required | Description | Default |
|---|---|---|---|---|
siteId | uuid | required | The site UUID. | — |
Example URIletoseo://sites/00000000-0000-0000-0000-000000000001/campaigns
Example request
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": {
"uri": "letoseo://sites/00000000-0000-0000-0000-000000000001/campaigns"
}
}Example result
{
"contents": [
{
"uri": "letoseo://sites/00000000-0000-0000-0000-000000000001/campaigns",
"text": "[{\"id\":\"00000000-0000-0000-0000-000000000010\",\"name\":\"Acme Q1 Launch\",\"slug\":\"acme-q1-launch\",\"status\":\"active\",\"total_clicks\":342,\"total_sessions\":187,\"channels\":[\"email\",\"social\"]}]"
}
]
}