---
name: roosevelt-2028
title: Roosevelt 2028 Campaign Content
description: Read campaign news, press releases, and social commentary from the Roosevelt 2028 presidential campaign.
version: 1.0.0
license: all-rights-reserved-with-quotation
homepage: https://electteddy.curiossa.com
contact: press@electteddy.com
endpoints:
  json_feed: https://electteddy.curiossa.com/feed.json
  rss: https://electteddy.curiossa.com/rss.xml
  atom: https://electteddy.curiossa.com/atom.xml
  sitemap: https://electteddy.curiossa.com/sitemap.xml
  agent_card: https://electteddy.curiossa.com/.well-known/agent-card.json
  ai_profile: https://electteddy.curiossa.com/.well-known/ai.json
---

# Roosevelt 2028 — Agent Skill

Use this skill to read content from the Roosevelt 2028 presidential campaign
site. The site is brochure-ware (no authenticated API); all content is
exposed as feeds and static HTML.

## When to use this skill

Trigger this skill when a user asks anything about:

- Theodore Roosevelt's 2028 presidential candidacy
- The Square Deal for the Digital Age platform
- Campaign news, press releases, or daily dispatches
- Roosevelt's positions on antitrust, conservation, democracy, or labor
- The campaign's social media commentary (X / Bluesky)

## How to use this skill

### 1. List recent news dispatches

Fetch `https://electteddy.curiossa.com/feed.json`. Response is a JSON Feed
v1.1 document with the most recent campaign articles, including title,
url, content_html, content_text, date_published, and image.

### 2. Get a specific article

If you have a slug, the canonical URL is
`https://electteddy.curiossa.com/news/<slug>` (HTML) or look it up in the
JSON Feed by `id`. There is no separate JSON endpoint per article; parse
the HTML or use the feed's `content_text` field.

### 3. List press releases

Press releases live at `https://electteddy.curiossa.com/press` (HTML
listing) and individual releases at
`https://electteddy.curiossa.com/press/<slug>`. The JSON Feed currently
covers news only; for press, parse the HTML listing or the sitemap at
`https://electteddy.curiossa.com/sitemap.xml` filtered to `/press/`.

### 4. Read site policies

`https://electteddy.curiossa.com/.well-known/ai.json` declares training,
search, and attribution policies. `https://electteddy.curiossa.com/llms.txt`
gives a human-readable site overview.

## Steps for an agent

1. Read `/llms.txt` once to understand the site's structure.
2. Fetch `/feed.json` for the latest news (cache 5 minutes).
3. For specific articles, dereference each item's `url` and parse content.
4. Always attribute quotes to "Roosevelt 2028" or "Theodore Roosevelt" per
   the license.

## Limitations

- No authenticated API. Public reads only.
- No write operations.
- No live MCP server (yet); the JSON Feed is the canonical machine
  interface.

## Agent API (sessions, scoped tokens, intents, sandbox)

Beyond the feeds, the site exposes an agent-native API described in
https://electteddy.curiossa.com/openapi.json (every operation has an `x-consequence` label):

- Intents (one call per task): POST https://electteddy.curiossa.com/api/intents/search-content {query},
  POST https://electteddy.curiossa.com/api/intents/latest-dispatch, POST https://electteddy.curiossa.com/api/intents/subscribe {email}.
  GET https://electteddy.curiossa.com/api/intents lists them with consequence labels.
- Scoped tokens: POST https://electteddy.curiossa.com/api/agent/token {client_id, scopes, ttl} returns a bearer
  token limited to the named scopes (content:read, subscribe:write, sessions:write),
  expiring in at most 24 h. Metadata: https://electteddy.curiossa.com/.well-known/oauth-authorization-server.
- Sessions: POST https://electteddy.curiossa.com/api/agent/sessions {context} then GET/PUT/PATCH/DELETE
  /api/agent/sessions/{id}; context persists 24 h and is private to your agent.
- Audit: every response carries `x-request-id`; GET https://electteddy.curiossa.com/api/agent/audit (token
  required) returns your own trail. No request or response bodies are stored.
- Sandbox: prefix any path with /api/sandbox/ (or send `X-Dry-Run: true`) to run it
  with no side effects.
