# What Led To

> Living, source-backed timelines of long-running events, with a quote and source per entry.

- name: com.whatledto/whatledto
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 79/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.whatledto%2Fwhatledto
- tools: https://api.protogrid.dev/v1/servers/com.whatledto%2Fwhatledto/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "whatledto": {
      "type": "http",
      "url": "https://whatledto.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% ~updated-38d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_party (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); search_entries (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); upcoming (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,456 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 1,456 tokens to load them all
- tool set hash: 1926b60b156cd051d216f55d1658d89b
- badge: [![protogrid quality](https://protogrid.dev/badge/com.whatledto/whatledto.svg)](https://protogrid.dev/servers/com.whatledto/whatledto)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://whatledto.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.974359)

## Packages

_none_

## Tools (7)

- `ask`: Answer a why/how question as a chain: an ordered set of dated, sourced entries from the timelines with one line on why each led to the next, written by the editor rather than generated. Returns the best-matching chain with every step's entry (URL, date, summary, sources), or, when no chain fits, the questions that do exist and how to research the answer with the other tools.
- `get_entry`: One dated entry in full: its summary, type, the parties it names, every source with the outlet, the publication date and the verbatim quote it was read from, plus the relations and cross-timeline links it takes part in. Use it after search_entries or get_timeline has found an entry and you need the exact wording and source URL to cite. Entry ids are unique within a timeline, not across the site, so pass the slug the entry came from.
- `get_party`: Everything the site records about one company, person or regulator across every timeline: its role on each, the parties it most often appears alongside, and every dated entry that names it, newest first, with sources. Use it instead of search_entries when you want one actor's whole history rather than a keyword match. Returns at most limit entries, with total_entries saying how many exist; a party is named when the editors listed it among an entry's parties, not merely when the name appears in the text.
- `get_timeline`: One timeline in full: TL;DR, dated entries newest first with sources and quotes, relations between entries, links to other timelines, what to watch next and open questions. Pass since=YYYY-MM-DD to get only entries dated on or after that day (what changed recently).
- `list_timelines`: Every timeline on the site with its topic, tags, entry count, date range, last update and a short summary. Start here to find the slug for get_timeline.
- `search_entries`: Find dated entries across every timeline by keywords, party id, timeline slug and date range. Every keyword must match (title, summary, party or timeline name); results are ranked, newest first among equals. Returns the entry text and url; call get_entry for quotes and sources.
- `upcoming`: Scheduled dates the timelines are watching — earnings, rulings, launches, rule deadlines — each with why it matters, the timeline it belongs to and a source where one exists. Use it to answer what happens next across the site, rather than reading each timeline for its own catalysts. Returns the dates from today to the horizon, oldest first, echoing back today and horizon; a date known only to the month carries precision=month and is matched on the month.
