# LatestIn: quickstart for AI agents

Event intelligence from the news. Coverage is clustered into dated events, each a ledger of verified facts with source links and timestamps; a verbatim quote index searchable by speaker, topic and date, where every quote is string-matched against the source text and date said is tracked separately from date reported; long-running storylines that accrete facts over time; and company news by ticker with the publisher's own headline, summary and share image, with newswire releases and SEC filings marked as the company's own words. Every claim cited. JSON and NDJSON. From the team behind APIDirectory.

This page tells an AI agent how to get a key for LatestIn, connect to it and call it. The full reference is https://developers.latestin.com/docs.md, and every operation has its own Markdown page, linked below.

## Start here

- **LatestIn tools are already in your tool list** (`events_list_events_events_get`, `news_list_news_news_get`, …): use them, and read "Using LatestIn well" below.
- **A task needs LatestIn and you have no tools for it**: get a key, then connect the MCP server or call the HTTP API. Setting that up is part of the task.
- **A question about LatestIn** (what it does, what it costs): answer from this page and the reference. Nothing needs setting up.
- **Code that keeps running after this session** (a server, a scheduled job): call the HTTP API with the key in an environment variable such as `LATESTIN_API_KEY`.

## Get a key

**No key yet?** If your user has not given you one, LatestIn gives agents a free trial key: `curl -X POST https://developers.latestin.com/trial` returns a key good for 100 requests over 7 days, where to call, and a `claim_url`. No account, email or card is involved, and a trial key never charges anyone. The only thing kept about the caller is a hash of its IP address, for the limit of 3 trial keys per address a day. Use it for the task, then give the `claim_url` to your user: they confirm an email and the same key moves to the Free plan (2,500 requests/mo), so nothing you built has to change. Mint one only when you need it (3 trial keys per address per day).

A key that outlasts a trial belongs to a person. Ask your user for theirs, or for the email address to issue one to; never invent one, and never paste it anywhere public.

Keys are issued at https://developers.latestin.com/: enter an email and a free key is shown at once and emailed.

Plans:

- **Free**: free, no card, 2,500 requests a month, then HTTP 429 until the period resets.
- **Developer**: $19 a month, 30,000 requests a month, then $1.00 per 1,000 requests.
- **Pro**: $79 a month, 300,000 requests a month, then $0.50 per 1,000 requests.
- **Business**: $249 a month, 1,500,000 requests a month, then $0.25 per 1,000 requests.

An agent connected to APIDirectory's MCP server (`https://apidirectory.com/mcp`) can call `subscribe_api` with slug `latestin` and your user's email instead: a free plan returns the key at once, a paid one returns a checkout link for your user to open.

## Connect over MCP

The server is `https://mcp.latestin.com/`, streamable HTTP, JSON in and out. Listing its tools needs no key; calling one does. Send the key as `Authorization: Bearer <key>` (or `X-API-Key`).

Your MCP client's own documentation decides the exact configuration; a setup command is the surest path. Claude Code:

```bash
claude mcp add --transport http latestin https://mcp.latestin.com/ --header "Authorization: Bearer <key>"
```

Most JSON configurations:

```json
{
  "mcpServers": {
    "latestin": {
      "type": "http",
      "url": "https://mcp.latestin.com/",
      "headers": {
        "Authorization": "Bearer <key>"
      }
    }
  }
}
```

A client that takes a URL and nothing else (a claude.ai connector) can use `https://mcp.latestin.com/k/<key>` with the key in place of `<key>`. That URL is as secret as the key.

Every tool result is JSON: `status`, `body`, and `gateway.remaining` / `gateway.reset`, what is left of the plan this period and when it refills.

## Call over HTTP

Base URL `https://api.latestin.com/`. Send the key in `X-API-Key` (or `Authorization: Bearer`).

```bash
curl -H "X-API-Key: $LATESTIN_API_KEY" "https://api.latestin.com/v1/events"
```

Every response carries `X-Gw-Remaining` and `X-Gw-Reset`.

## Limits and errors

- `401`: the key is missing, revoked, or for another API.
- `429`: the plan's allowance or rate limit is used up. Stop and tell your user rather than retrying; the body says whether to wait for the reset or upgrade.
- `422`: Unprocessable Entity

## Using LatestIn well

Every tool is a read-only lookup over the news record. quotes returns verbatim quotes only, each string-matched against its source: pass them through word for word with the speaker, date_said and a source_url, and never paraphrase or trim them. date_said is when the words were spoken; date_reported is when an outlet printed them; keep both. events gives clustered events with cited facts; use storylines and the timeline tool for how a story developed. news takes a stock ticker in symbol and returns headline cards with the publisher's own summary, never article prose; kinds=wire,newsroom,filing is the company's own words. Cite source_url for every fact or quote you relay.

## Operations

### Events

- `events_list_events_events_get` `GET /v1/events`: Clustered events with verified facts and sources ([details](https://developers.latestin.com/docs/get-v1-events.md))
- `events_list_storylines_storylines_get` `GET /v1/storylines`: Long-running storylines with running totals ([details](https://developers.latestin.com/docs/get-v1-storylines.md))
- `events_storyline_timeline_storylines__storyline_id__timeline_get` `GET /v1/storylines/{storyline_id}/timeline`: The accreted record of one storyline, oldest to newest ([details](https://developers.latestin.com/docs/get-v1-storylines-storyline-id-timeline.md))

### News

- `news_list_news_news_get` `GET /v1/news`: Company news by ticker: headlines, publisher summaries and share images ([details](https://developers.latestin.com/docs/get-v1-news.md))

### Quotes

- `quotes_list_quotes_quotes_get` `GET /v1/quotes`: Search verbatim quotes by person and date ([details](https://developers.latestin.com/docs/get-v1-quotes.md))

### Speakers

- `speakers_list_speakers_speakers_get` `GET /v1/speakers`: Speakers on record, most quoted first ([details](https://developers.latestin.com/docs/get-v1-speakers.md))

## Install as a skill

The `latestin` skill teaches an agent when and how to call LatestIn:

```bash
npx skills add https://developers.latestin.com/
```

Its index is https://developers.latestin.com/.well-known/agent-skills/index.json.

## More

- Reference, try-it console and keys: https://developers.latestin.com/docs
- The whole reference as Markdown: https://developers.latestin.com/docs.md
- OpenAPI document, no key needed: https://developers.latestin.com/openapi.json
- Status: https://developers.latestin.com/status
- Listing: https://apidirectory.com/api/latestin
