# Developers

elsegundo.xyz is an independent, experimental citizen-civics hub covering quality of life within 25 miles of El Segundo, California. It is not an official City site. Developers and AI agents can use its public feeds, Markdown briefing, conditions endpoint, and read-only MCP to discover local information and follow links to original sources. Every published claim must be sourced.

## Start here

These examples fetch public resources without credentials.

### Today’s headlines — JSON

```bash
curl --fail --show-error --location \
  'https://elsegundo.xyz/today.json'
```

### Today’s headlines — RSS

```bash
curl --fail --show-error --location \
  'https://elsegundo.xyz/today/feed.xml'
```

### Local voices — JSON

```bash
curl --fail --show-error --location \
  'https://elsegundo.xyz/local-voices.json'
```

### Business — JSON

```bash
curl --fail --show-error --location \
  'https://elsegundo.xyz/business.json'
```

### Today’s briefing — Markdown

```bash
curl --fail --show-error --location \
  'https://elsegundo.xyz/today.md'
```

### Local conditions

```bash
curl --fail --show-error --location \
  'https://elsegundo.xyz/api/v1/conditions'
```

### Source-linked daily draft

- JSON: https://elsegundo.xyz/api/v1/daily
- Copyable text: https://elsegundo.xyz/api/v1/daily.md
- Halloween sources: https://elsegundo.xyz/halloween/events.json

The daily draft is assembled automatically from public, dated sources. Check each source and freshness status; fetching it does not send an email or publish a post. The existing MCP briefing remains a separate read-only tool.

## Connect with MCP

The public, read-only MCP endpoint is:

```text
https://elsegundo.xyz/mcp
```

Add it as a remote server in an MCP-compatible client. This generic configuration illustrates the connection; configuration keys may differ by client.

```json
{
  "mcpServers": {
    "elsegundo": {
      "url": "https://elsegundo.xyz/mcp"
    }
  }
}
```

Use your client’s discovery flow to see the available capabilities. The public MCP is for reading information; it does not grant publishing access.

## Feed directory

News stays on the front-page feeds in this table. The other topic rivers are live and listed after those rows. JSON Feed for each of those rivers uses the same path as its RSS file, with `feed.json` in place of `feed.xml`. The front-page JSON Feed remains [/today/feed.json](https://elsegundo.xyz/today/feed.json).

ES Live (`/widget/es-live.js`) is a reference client for `/api/v1/conditions`, `/today.json`, `/pickleball.json` and `/dashboard/editions.json`.

| Resource | Format or interface | URL |
| --- | --- | --- |
| South Bay headline river | JSON | [/today.json](https://elsegundo.xyz/today.json) |
| South Bay headline river | RSS | [/today/feed.xml](https://elsegundo.xyz/today/feed.xml) |
| Local voices directory | JSON | [/local-voices.json](https://elsegundo.xyz/local-voices.json) |
| Business information | JSON | [/business.json](https://elsegundo.xyz/business.json) |
| Today’s briefing | Markdown | [/today.md](https://elsegundo.xyz/today.md) |
| Local conditions | API endpoint | [/api/v1/conditions](https://elsegundo.xyz/api/v1/conditions) |
| Public read-only access for MCP clients | MCP | [/mcp](https://elsegundo.xyz/mcp) |
| Site guidance for language models and agents | Text | [/llms.txt](https://elsegundo.xyz/llms.txt) |
| Topic rivers index | HTML | [/today/topics/](https://elsegundo.xyz/today/topics/) |
| Topic rivers index | JSON | [/today/topics.json](https://elsegundo.xyz/today/topics.json) |
| Sports | JSON | [/today/sports.json](https://elsegundo.xyz/today/sports.json) |
| Sports | RSS | [/today/sports/feed.xml](https://elsegundo.xyz/today/sports/feed.xml) |
| Entertainment | JSON | [/today/entertainment.json](https://elsegundo.xyz/today/entertainment.json) |
| Entertainment | RSS | [/today/entertainment/feed.xml](https://elsegundo.xyz/today/entertainment/feed.xml) |
| Politics & civic | JSON | [/today/politics-civic.json](https://elsegundo.xyz/today/politics-civic.json) |
| Politics & civic | RSS | [/today/politics-civic/feed.xml](https://elsegundo.xyz/today/politics-civic/feed.xml) |
| Real estate | JSON | [/today/real-estate.json](https://elsegundo.xyz/today/real-estate.json) |
| Real estate | RSS | [/today/real-estate/feed.xml](https://elsegundo.xyz/today/real-estate/feed.xml) |
| Pickleball | JSON | [/today/pickleball.json](https://elsegundo.xyz/today/pickleball.json) |
| Pickleball | RSS | [/today/pickleball/feed.xml](https://elsegundo.xyz/today/pickleball/feed.xml) |
| Pizza | JSON | [/today/pizza.json](https://elsegundo.xyz/today/pizza.json) |
| Pizza | RSS | [/today/pizza/feed.xml](https://elsegundo.xyz/today/pizza/feed.xml) |
| Bread & bakeries | JSON | [/today/bread-bakeries.json](https://elsegundo.xyz/today/bread-bakeries.json) |
| Bread & bakeries | RSS | [/today/bread-bakeries/feed.xml](https://elsegundo.xyz/today/bread-bakeries/feed.xml) |
| Craft beer | JSON | [/today/craft-beer.json](https://elsegundo.xyz/today/craft-beer.json) |
| Craft beer | RSS | [/today/craft-beer/feed.xml](https://elsegundo.xyz/today/craft-beer/feed.xml) |
| Food & drink | JSON | [/today/food-drink.json](https://elsegundo.xyz/today/food-drink.json) |
| Food & drink | RSS | [/today/food-drink/feed.xml](https://elsegundo.xyz/today/food-drink/feed.xml) |
| Nature & beach | JSON | [/today/nature-beach.json](https://elsegundo.xyz/today/nature-beach.json) |
| Nature & beach | RSS | [/today/nature-beach/feed.xml](https://elsegundo.xyz/today/nature-beach/feed.xml) |
| Weather & air | JSON | [/today/weather-air.json](https://elsegundo.xyz/today/weather-air.json) |
| Weather & air | RSS | [/today/weather-air/feed.xml](https://elsegundo.xyz/today/weather-air/feed.xml) |
| Traffic & LAX | JSON | [/today/traffic-lax.json](https://elsegundo.xyz/today/traffic-lax.json) |
| Traffic & LAX | RSS | [/today/traffic-lax/feed.xml](https://elsegundo.xyz/today/traffic-lax/feed.xml) |
| Trash & recycling | JSON | [/today/trash-recycling.json](https://elsegundo.xyz/today/trash-recycling.json) |
| Trash & recycling | RSS | [/today/trash-recycling/feed.xml](https://elsegundo.xyz/today/trash-recycling/feed.xml) |
| Jobs & business | JSON | [/today/jobs-business.json](https://elsegundo.xyz/today/jobs-business.json) |
| Jobs & business | RSS | [/today/jobs-business/feed.xml](https://elsegundo.xyz/today/jobs-business/feed.xml) |
| Schools | JSON | [/today/schools.json](https://elsegundo.xyz/today/schools.json) |
| Schools | RSS | [/today/schools/feed.xml](https://elsegundo.xyz/today/schools/feed.xml) |
| Events | JSON | [/today/events.json](https://elsegundo.xyz/today/events.json) |
| Events | RSS | [/today/events/feed.xml](https://elsegundo.xyz/today/events/feed.xml) |
| Safety | JSON | [/today/safety.json](https://elsegundo.xyz/today/safety.json) |
| Safety | RSS | [/today/safety/feed.xml](https://elsegundo.xyz/today/safety/feed.xml) |
| Weekend events hub | HTML | [/events/](https://elsegundo.xyz/events/) |
| Weekend events | JSON | [/events.json](https://elsegundo.xyz/events.json) |
| Weekend events | iCal | [/events.ics](https://elsegundo.xyz/events.ics) |
| Sunday Morning Edition, Oct 25, 2026 | JSON | [/editions/2026-10-25-sunday.json](https://elsegundo.xyz/editions/2026-10-25-sunday.json) |
| Pickleball courts, drop-ins and leagues | JSON | [/pickleball.json](https://elsegundo.xyz/pickleball.json). Schema `elsegundo.xyz/pickleball/v1`. Cached with `max-age=300`. `live.mode` is `live`, `stale` or `off`. |
| Today in El Segundo picks | JSON | [/today/picks.json](https://elsegundo.xyz/today/picks.json) |
| This day in the South Bay & LA, Oct 25 | JSON | [/today/history/10-25.json](https://elsegundo.xyz/today/history/10-25.json) |
| This day history index | JSON | [/today/history/index.json](https://elsegundo.xyz/today/history/index.json) |
| AI tools primer | JSON | [/ai/ai-tools.json](https://elsegundo.xyz/ai/ai-tools.json) |
| Metro: South Bay transit guide | JSON | [/metro.json](https://elsegundo.xyz/metro.json). Schema `elsegundo.xyz/metro/v1`. Cached with `max-age=300`. Updated by pull request (no function, no refresh). Fields: `stations`, `quick_trips` (GTFS medians), `day_trips`, `buses`, `projects`, `news`, `sources`. |
| Halloween guide | JSON | [/halloween/events.json](https://elsegundo.xyz/halloween/events.json). Dated listings, including ones tagged reported. |
| Halloween guide | iCal | [/halloween/halloween.ics](https://elsegundo.xyz/halloween/halloween.ics). `text/calendar`, `max-age=300`. |
| Visit totals | JSON | [/api/v1/stats](https://elsegundo.xyz/api/v1/stats). Public aggregate counts only (`?days=`, max 31). No raw hits. |

## Webhooks and event feeds

- `GET` [/webhooks.json](https://elsegundo.xyz/webhooks.json) — static catalog, schema `elsegundo.xyz/webhooks/v1`, `max-age=300`, updated by pull request.
- `GET` [/webhooks/schema/v1.json](https://elsegundo.xyz/webhooks/schema/v1.json) — JSON Schema (draft 2020-12) for every event.
- `GET` [/webhooks/feed.json](https://elsegundo.xyz/webhooks/feed.json) (JSON Feed 1.1) and `GET` [/webhooks/feed.xml](https://elsegundo.xyz/webhooks/feed.xml) (RSS 2.0) — function feed of the last 200 events, `?type=` filter, `max-age=300`.
- `POST /api/v1/webhooks/subscribe`, `POST /api/v1/webhooks/unsubscribe`, `GET /api/v1/webhooks/subscription` — 503 `not_configured` until `WEBHOOKS_SIGNING_KEY` is set.
- Partner intake is coming later. It is not routed in this release.

## Reuse and attribution

When using information from elsegundo.xyz:

- Link back to the relevant elsegundo.xyz page or feed.
- Cite the original source URLs attached to the information you use. Preserve the distinction between source reporting, summaries, and your own analysis.
- Do not republish third-party content wholesale. Availability through a feed or MCP does not grant rights to the underlying material.
- Keep source dates and context when summarizing time-sensitive information.
- Report errors through the corrections contact below, including the affected URL, the disputed claim, and a supporting source when available.

## Coverage boundaries

- **Geography:** Quality of life within 25 miles of El Segundo, California.
- **Public information only:** Public availability does not imply endorsement or permission to expose private information.
- **Candidate neutrality:** Coverage remains neutral on candidates in the November 3, 2026 election.
- **No cannabis brands:** THC and cannabis brands are outside the site’s scope.
- **Sourced claims:** Published claims require supporting sources. Follow the linked sources when verifying or reusing information.

## Roadmap — planned

These items are planned; their inclusion here does not indicate public availability or a delivery date.

- Additional versioned endpoints and expanded documentation.
- A paid sentiment oracle for a weekly read on local mood and topics, with agent pay-per-call access later.

## Contact and corrections

Reach the editor through the site’s X companion, [@elsegundotoday](https://x.com/elsegundotoday), for developer questions or corrections. Include the relevant URL and source links so an editor can review the issue.
