{
  "schemaVersion": "1.0",
  "name": "Roosevelt 2028 Press Office",
  "description": "AI-friendly access to the Roosevelt 2028 presidential campaign: daily news dispatches, press releases and social-platform commentary via public feeds, plus an agent-native API with intent endpoints, persistent sessions, scoped expiring tokens, per-agent audit logs and a side-effect-free sandbox.",
  "url": "https://electteddy.curiossa.com",
  "documentation": "https://electteddy.curiossa.com/llms.txt",
  "provider": {
    "organization": "Roosevelt for America",
    "url": "https://electteddy.curiossa.com",
    "contact": "press@electteddy.com"
  },
  "auth": {
    "type": "oauth2",
    "flow": "client_credentials",
    "tokenEndpoint": "https://electteddy.curiossa.com/api/agent/token",
    "scopes": [
      "content:read",
      "subscribe:write",
      "sessions:write"
    ],
    "anonymousAccess": "read endpoints and subscribe remain available without a token; a presented token is a hard capability limit",
    "metadata": "https://electteddy.curiossa.com/.well-known/oauth-authorization-server"
  },
  "policies": {
    "ai-training": "allow",
    "ai-search": "allow",
    "attribution": "Roosevelt 2028"
  },
  "skills": [
    {
      "id": "roosevelt-2028",
      "manifest": "https://electteddy.curiossa.com/skill.md",
      "index": "https://electteddy.curiossa.com/.well-known/skills/index.json"
    }
  ],
  "capabilities": {
    "intentEndpoints": [
      "https://electteddy.curiossa.com/api/intents/search-content",
      "https://electteddy.curiossa.com/api/intents/latest-dispatch",
      "https://electteddy.curiossa.com/api/intents/subscribe"
    ],
    "intentsIndex": "https://electteddy.curiossa.com/api/intents",
    "sessions": {
      "endpoint": "https://electteddy.curiossa.com/api/agent/sessions",
      "methods": [
        "POST",
        "GET",
        "PUT",
        "PATCH",
        "DELETE"
      ],
      "ttlSeconds": 86400,
      "maxContextBytes": 65536,
      "scope": "sessions:write"
    },
    "scopedTokens": {
      "tokenEndpoint": "https://electteddy.curiossa.com/api/agent/token",
      "grantTypes": [
        "client_credentials"
      ],
      "scopes": [
        "content:read",
        "subscribe:write",
        "sessions:write"
      ],
      "expirySeconds": 3600,
      "maxExpirySeconds": 86400,
      "revocation": "https://electteddy.curiossa.com/api/agent/token (DELETE)",
      "metadata": "https://electteddy.curiossa.com/.well-known/oauth-authorization-server"
    },
    "auditLog": {
      "header": "x-request-id",
      "endpoint": "https://electteddy.curiossa.com/api/agent/audit",
      "fields": [
        "id",
        "at",
        "agentId",
        "method",
        "path",
        "status",
        "sandbox",
        "ms"
      ],
      "storesBodies": false
    },
    "sandbox": {
      "baseUrl": "https://electteddy.curiossa.com/api/sandbox",
      "dryRunHeader": "X-Dry-Run",
      "description": "Every agent and intent endpoint under /api/sandbox/ runs with no side effects; X-Dry-Run: true does the same on the live paths."
    },
    "consequenceLabels": {
      "openapi": "https://electteddy.curiossa.com/openapi.json",
      "field": "x-consequence",
      "mcp": "tools[].annotations + tools[].x-consequence",
      "intents": "https://electteddy.curiossa.com/api/intents"
    },
    "toolSchemas": "https://electteddy.curiossa.com/.well-known/skills/index.json"
  },
  "tools": [
    {
      "name": "list_news",
      "description": "List campaign news dispatches as a feed.",
      "endpoint": "https://electteddy.curiossa.com/feed.json",
      "method": "GET",
      "responseFormat": "application/feed+json",
      "consequence": {
        "kind": "none",
        "irreversible": false,
        "sideEffects": []
      }
    },
    {
      "name": "list_news_rss",
      "description": "List campaign news dispatches as an RSS feed.",
      "endpoint": "https://electteddy.curiossa.com/rss.xml",
      "method": "GET",
      "responseFormat": "application/rss+xml",
      "consequence": {
        "kind": "none",
        "irreversible": false,
        "sideEffects": []
      }
    },
    {
      "name": "list_news_atom",
      "description": "List campaign news dispatches as an Atom feed.",
      "endpoint": "https://electteddy.curiossa.com/atom.xml",
      "method": "GET",
      "responseFormat": "application/atom+xml",
      "consequence": {
        "kind": "none",
        "irreversible": false,
        "sideEffects": []
      }
    },
    {
      "name": "list_all_pages",
      "description": "Sitemap of every page on the site.",
      "endpoint": "https://electteddy.curiossa.com/sitemap.xml",
      "method": "GET",
      "responseFormat": "application/xml",
      "consequence": {
        "kind": "none",
        "irreversible": false,
        "sideEffects": []
      }
    },
    {
      "name": "list_news_sitemap",
      "description": "News sitemap (recent articles only).",
      "endpoint": "https://electteddy.curiossa.com/news-sitemap.xml",
      "method": "GET",
      "responseFormat": "application/xml",
      "consequence": {
        "kind": "none",
        "irreversible": false,
        "sideEffects": []
      }
    },
    {
      "name": "search_content",
      "description": "Intent: search news dispatches by keyword.",
      "endpoint": "https://electteddy.curiossa.com/api/intents/search-content",
      "method": "POST",
      "responseFormat": "application/json",
      "scope": "content:read",
      "consequence": {
        "kind": "none",
        "irreversible": false,
        "sideEffects": []
      }
    },
    {
      "name": "latest_dispatch",
      "description": "Intent: newest news dispatch and newest press release in one call.",
      "endpoint": "https://electteddy.curiossa.com/api/intents/latest-dispatch",
      "method": "POST",
      "responseFormat": "application/json",
      "scope": "content:read",
      "consequence": {
        "kind": "none",
        "irreversible": false,
        "sideEffects": []
      }
    },
    {
      "name": "subscribe",
      "description": "Intent: subscribe an email address to campaign dispatches.",
      "endpoint": "https://electteddy.curiossa.com/api/intents/subscribe",
      "method": "POST",
      "responseFormat": "application/json",
      "scope": "subscribe:write",
      "consequence": {
        "kind": "communication",
        "irreversible": false,
        "sideEffects": [
          "sends a confirmation email to the address",
          "adds the address to the dispatch list"
        ],
        "reversal": "unsubscribe link in every email"
      }
    }
  ],
  "openapi": "https://electteddy.curiossa.com/openapi.json",
  "mcp": "https://electteddy.curiossa.com/api/mcp"
}
