@buildinternet/releases-skills 0.45.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -13,16 +13,20 @@ description: >
|
|
|
13
13
|
|
|
14
14
|
Turn changelog data into competitive intelligence by analyzing release patterns across a cohort of related companies.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
This is a **reader** workflow — it uses only the public, unauthenticated tools. There is no AI summarize/compare tool on the hosted MCP and no `summary`/`compare` command in the CLI; you fetch the raw release data and synthesize the analysis yourself.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
|
21
|
-
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
18
|
+
## Tools for each step
|
|
19
|
+
|
|
20
|
+
| Operation | CLI (reader) | MCP tool |
|
|
21
|
+
|-----------|--------------|----------|
|
|
22
|
+
| Find what's indexed for a company | `releases search <company> --json` | `search` (with `type: ["orgs","catalog"]`) |
|
|
23
|
+
| List a company's sources | `releases list --query <company> --json` | `list_catalog` (scope with `organization`) |
|
|
24
|
+
| Latest releases (source or org) | `releases tail <slug> --json` · `releases tail --org <org> --json` | `get_latest_releases` (`organization` / `product`, `since`/`until`) |
|
|
25
|
+
| Keyword/semantic release search | `releases search <query> --json` | `search` with `type: ["releases"]` |
|
|
26
|
+
| Read one release in full | `releases get <rel_id> --json` | `get_release` |
|
|
27
|
+
| Read a tracked CHANGELOG slice | `releases admin source changelog <slug> --tokens <n>` (key-gated; readers use MCP) | `get_catalog_entry` with `changelog_tokens` / `changelog_offset` (keyless) |
|
|
28
|
+
|
|
29
|
+
All releases are indexed already — you don't need to (and as a reader can't) trigger fetches. If a company isn't in the registry at all, say so rather than trying to onboard it; onboarding is an operator task.
|
|
26
30
|
|
|
27
31
|
## Workflow
|
|
28
32
|
|
|
@@ -30,45 +34,40 @@ Turn changelog data into competitive intelligence by analyzing release patterns
|
|
|
30
34
|
|
|
31
35
|
Pick 3-6 companies in the same competitive space. Good cohorts share a common buyer or technical layer (e.g., developer databases, frontend frameworks, observability tools).
|
|
32
36
|
|
|
33
|
-
### 2.
|
|
34
|
-
|
|
35
|
-
Search for each company to see what sources are indexed. If a company isn't in the system, it needs to be onboarded first.
|
|
36
|
-
|
|
37
|
-
### 3. Fetch recent releases
|
|
37
|
+
### 2. See what's indexed
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
Resolve each company with `search` (or `releases search`). For discovery-style cohorts ("find observability vendors with edge offerings"), `search` with `type: ["orgs","catalog"]` is vector-backed and matches on description and category — better than a slug-substring `list_catalog --query`. If a company isn't found, note it as a gap rather than fabricating data.
|
|
40
40
|
|
|
41
|
-
###
|
|
41
|
+
### 3. Pull latest releases with dates
|
|
42
42
|
|
|
43
|
-
Get structured release data
|
|
43
|
+
Get structured release data per source or per org. Scope by `organization` for a whole-company view, or by a single source/product for a narrower one. Use a `since` window (e.g. `"6m"`) or a count limit to bound the set. Dates are what you'll count for velocity, so keep them.
|
|
44
44
|
|
|
45
|
-
###
|
|
45
|
+
### 4. Search and cross-reference
|
|
46
46
|
|
|
47
|
-
Search across all indexed releases to find specific
|
|
47
|
+
Search across all indexed releases to find a specific feature, breaking change, or pattern. Release search is hybrid (lexical + semantic) by default, so natural-language queries like "auth refresh tokens" or "cold start improvements" work without exact keyword matches. Pass `mode: "lexical"` (CLI `--mode lexical`) when you need strict keyword behavior.
|
|
48
48
|
|
|
49
49
|
**Result shape:** every hit carries a `kind` discriminator:
|
|
50
|
-
- `kind: "release"` — a normal release row, use as-is.
|
|
51
|
-
- `kind: "changelog_chunk"` — a passage from a stored CHANGELOG.md file. The hit includes `sourceSlug`, `chunkOffset`, and `chunkLength`. Chain into `get_source_changelog({ slug: sourceSlug, offset: chunkOffset, limit: chunkLength * 3 })` to read the surrounding section before quoting it. Chunk hits often surface older or more granular notes than what's in the indexed release rows, so they're useful for "when did X first ship" questions.
|
|
52
50
|
|
|
53
|
-
|
|
51
|
+
- `kind: "release"` — a normal release row; use it directly.
|
|
52
|
+
- `kind: "changelog_chunk"` — a passage from a stored CHANGELOG.md. The hit includes the source id and the chunk's `offset` and `length`. To read the surrounding section before quoting, call `get_catalog_entry` with that source id and `changelog_offset` set to the chunk offset (add `changelog_tokens`, e.g. 2000, for a heading-aligned slice). Chunk hits often surface older or more granular notes than the indexed release rows, so they're useful for "when did X first ship" questions.
|
|
54
53
|
|
|
55
|
-
###
|
|
54
|
+
### 5. Synthesize
|
|
56
55
|
|
|
57
|
-
Combine
|
|
56
|
+
Combine the raw data into a structured analysis:
|
|
58
57
|
|
|
59
|
-
- **Release velocity table** — releases per company, cadence pattern
|
|
58
|
+
- **Release velocity table** — releases per company over the window, cadence pattern
|
|
60
59
|
- **Trends adopted across the board** — features 3+ companies shipped in the same window
|
|
61
60
|
- **Differentiating bets** — what each company is investing in that others aren't
|
|
62
|
-
- **Gaps** — what competitors shipped that a company hasn't
|
|
63
|
-
- **Forecasts** —
|
|
61
|
+
- **Gaps** — what competitors shipped that a given company hasn't
|
|
62
|
+
- **Forecasts** — predictions grounded in pre-release tracks, deprecations, and trajectory
|
|
64
63
|
|
|
65
64
|
## Output
|
|
66
65
|
|
|
67
|
-
Ask the user where to save the analysis, or use your best judgment based on the project's conventions. Include a "Process Notes" section
|
|
66
|
+
Ask the user where to save the analysis, or use your best judgment based on the project's conventions. Include a short "Process Notes" section listing the exact commands/tools used, so the analysis is reproducible.
|
|
68
67
|
|
|
69
68
|
## Important
|
|
70
69
|
|
|
71
|
-
- Focus on what companies shipped. If a source has noisy data (blog posts mixed in, missing dates), work around it silently
|
|
72
|
-
- Fill data gaps with web fetches
|
|
73
|
-
- For velocity counting,
|
|
74
|
-
-
|
|
70
|
+
- Focus on what companies shipped. If a source has noisy data (blog posts mixed in, missing dates), work around it silently — don't pad the report with source-quality commentary unless a company had to be substantially excluded.
|
|
71
|
+
- Fill data gaps with web fetches: list a source to get release URLs, then WebFetch to spot-check pages for a missing date, version, or detail.
|
|
72
|
+
- For velocity counting, lean on the dated rows from `get_latest_releases` / `releases tail --json`.
|
|
73
|
+
- Comparison and summarization are yours to synthesize from raw release data — there is no built-in tool that does it for you.
|
|
@@ -1,102 +1,62 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: releases-cli
|
|
3
|
-
description: Use the `releases` CLI to search,
|
|
3
|
+
description: Use the `releases` CLI to search, browse, and read the Releases.sh changelog registry from the terminal — the keyless, agent-friendly peer of the Releases MCP. Activate when the user mentions "releases CLI", runs a `releases` command, asks how to install it, or wants to look up releases, sources, orgs, collections, or changelogs from a shell.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# releases CLI
|
|
7
7
|
|
|
8
|
-
The `releases` CLI
|
|
8
|
+
The `releases` CLI is a first-class, **keyless** way to query the public changelog registry at [releases.sh](https://releases.sh) — the terminal peer of the Releases MCP. Anyone can search, tail, list, and inspect releases with no account and no API key; it talks to `api.releases.sh` by default with zero configuration. (A separate, invite-only `admin` surface exists for maintainers — see the short note at the end — but reads never need it.)
|
|
9
|
+
|
|
10
|
+
Reach for the CLI when the user is working in a shell or wants piped/scriptable output; reach for the MCP when you're answering conversationally with typed tools. They cover the same registry.
|
|
9
11
|
|
|
10
12
|
## Install
|
|
11
13
|
|
|
12
14
|
```bash
|
|
13
15
|
brew install buildinternet/tap/releases # recommended on macOS / Linux
|
|
14
|
-
npm install -g @buildinternet/releases
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Or run one-off without installing:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npx @buildinternet/releases search "react"
|
|
16
|
+
npm install -g @buildinternet/releases # or via npm
|
|
17
|
+
npx @buildinternet/releases search "react" # one-off, no install
|
|
21
18
|
```
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### Refreshing this skill
|
|
20
|
+
## Reader commands (no auth, no key)
|
|
26
21
|
|
|
27
|
-
|
|
22
|
+
Full reference: **[references/reader.md](references/reader.md)**. The shape is verb-first, and every command takes `--json`.
|
|
28
23
|
|
|
29
24
|
```bash
|
|
30
|
-
releases
|
|
31
|
-
releases
|
|
25
|
+
releases search "breaking change" # unified search: orgs, catalog, collections, releases
|
|
26
|
+
releases tail next-js # latest releases from one source (slug or src_…)
|
|
27
|
+
releases tail --org vercel --count 20 # latest across a whole org
|
|
28
|
+
releases list --category ai # browse sources (alias: `releases sources`)
|
|
29
|
+
releases list --query shadcn # name / slug / url substring
|
|
30
|
+
releases get vercel # inspect any entity by id or slug
|
|
31
|
+
releases lookup domain vercel.com # resolve a domain/URL to its registry entry
|
|
32
|
+
releases collection list # browse curated cross-org playlists
|
|
33
|
+
releases collection releases frontier-ai-labs # the feed for one collection
|
|
34
|
+
releases stats # registry overview
|
|
35
|
+
releases categories # valid --category values (fixed taxonomy)
|
|
32
36
|
```
|
|
33
37
|
|
|
34
|
-
|
|
38
|
+
Two commands built for agents specifically:
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
- `releases agent-context` — emits a versioned JSON document describing every command, argument, and option. When in doubt about exact flags, call this instead of guessing; it's the CLI's machine-readable source of truth.
|
|
41
|
+
- `releases skills install` — installs/refreshes the bundled skills (`-g` for user-wide). Symlinked by default, so re-running refreshes atomically.
|
|
37
42
|
|
|
38
|
-
|
|
39
|
-
- **Writes (`admin <noun> <verb>`):** `releases admin source update` · `releases admin source create` · `releases admin product create` · `releases admin org create`
|
|
40
|
-
- List sources with `releases list` (also `releases sources` — alias). Do NOT guess `releases sources list`; that path does not exist.
|
|
41
|
-
- Writes live under `releases admin <noun> <verb>`, not at the top level.
|
|
43
|
+
### Conventions worth knowing (all in the reader reference)
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- **
|
|
46
|
-
- **[Admin commands](references/admin.md)** — Add/edit sources, manage orgs and products, fetch releases, run policies. Requires `RELEASES_API_KEY`.
|
|
47
|
-
|
|
48
|
-
## Quick Reference
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
# Reader (no auth required)
|
|
52
|
-
releases search "breaking change" # hybrid FTS + semantic search
|
|
53
|
-
releases tail next-js # latest releases from one source
|
|
54
|
-
releases tail src_abc123 # IDs work anywhere a slug does
|
|
55
|
-
releases tail --org vercel --count 20 # latest from a whole org
|
|
56
|
-
releases list --category ai # browse sources
|
|
57
|
-
releases get vercel # dispatch by id or slug
|
|
58
|
-
releases get org_abc123 # typed IDs are accepted
|
|
59
|
-
releases stats # registry overview
|
|
60
|
-
releases categories # list valid category values
|
|
61
|
-
|
|
62
|
-
# Admin (requires RELEASES_API_KEY)
|
|
63
|
-
releases admin source create "Linear" --url https://linear.app/changelog
|
|
64
|
-
releases admin source fetch <source> --max 50 # source = src_… or slug
|
|
65
|
-
releases admin org create "Acme" --category cloud
|
|
66
|
-
releases admin product create "CLI" --org acme # --org accepts org_…, slug, domain, name, or handle
|
|
67
|
-
releases admin discovery onboard "Stripe" # AI-powered discovery agent
|
|
68
|
-
|
|
69
|
-
# Local stdio MCP bridge (proxies to api.releases.sh)
|
|
70
|
-
releases admin mcp serve
|
|
71
|
-
```
|
|
45
|
+
- **IDs and slugs are interchangeable** wherever an identifier is expected (`org_…`, `prod_…`, `src_…`, `rel_…`); IDs are stable across renames. Source/product commands also take an `org/slug` coordinate (e.g. `vercel/vercel-ai-sdk`), which skips a resolver round-trip.
|
|
46
|
+
- **`--json` everywhere** for stable output. Release readers (`get`, `search`, `tail`) return a **slim** shape by default (core fields + markdown-stripped `excerpt` + `contentTokens` hint) to save tokens; pass `--full` for the complete payload. (`list` is the inverse: verbose by default, `--compact` for less.)
|
|
47
|
+
- **Piped output is bare TSV** (no headers/color/truncation), so `releases list | cut -f2` works without parsing ANSI — but note release rows repeat the title across several columns, so check the layout or just use `--json` before slicing by column number. `COLUMNS=<n>` overrides detected width.
|
|
72
48
|
|
|
73
|
-
|
|
49
|
+
### Reading a tracked changelog
|
|
74
50
|
|
|
75
|
-
|
|
51
|
+
`releases get <source> --json` reports `hasChangelogFile` and the `changelogUrl` keyless, so you can tell whether a source maintains a checked-in CHANGELOG.md. To read the **sliced content** keyless, use the MCP's `get_catalog_entry` (with `changelog_tokens` / `nextOffset`) or fetch the `changelogUrl` directly — the CLI's `releases admin source changelog` wrapper is key-gated and won't run without auth.
|
|
76
52
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
Every mutating admin command accepts `--dry-run` to print the planned write (with all validations applied) without calling the API. Pair with `--json` for a machine-readable plan. See `references/admin.md` for the full coverage list.
|
|
80
|
-
|
|
81
|
-
## Authentication
|
|
82
|
-
|
|
83
|
-
Reader access is unauthenticated and may be rate-limited per IP.
|
|
84
|
-
|
|
85
|
-
**Admin access is closed beta.** `releases admin …` commands require a Bearer token, but the hosted registry does not currently expose a self-serve flow for generating keys — an external user cannot create one on their own. If the user asks how to get an API key, explain this and point them at the project repo to request access. Don't invent a signup URL.
|
|
86
|
-
|
|
87
|
-
If a key is available:
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
export RELEASES_API_KEY=your_key
|
|
91
|
-
export RELEASES_API_URL=https://api.releases.sh # optional, this is the default
|
|
92
|
-
```
|
|
53
|
+
## Common Mistakes
|
|
93
54
|
|
|
94
|
-
|
|
55
|
+
- `releases list` lists sources (alias `releases sources`). Do NOT write `releases sources list` — it reads `list` as a source slug and fails with "Source not found: list".
|
|
56
|
+
- Default read cap is 200 releases per source; use `--max <n>` or `--all` to override.
|
|
57
|
+
- There is **no** `summary` or `compare` command in this CLI, and **no** AI summarization tools on the hosted MCP (`summarize_changes` / `compare_products` do not exist). To summarize or compare, read each entity with `releases get` / `releases tail` (or `--json`) and synthesize the answer yourself.
|
|
58
|
+
- Don't reach for `admin` commands to do reads — every read above is keyless. `admin` is only for registry maintenance and requires a key (below).
|
|
95
59
|
|
|
96
|
-
##
|
|
60
|
+
## Admin surface (invite-only — reads never need it)
|
|
97
61
|
|
|
98
|
-
|
|
99
|
-
- Slug renames (`admin source update <identifier> --slug new-slug`) require `--confirm-slug-change` because they break web links.
|
|
100
|
-
- `releases admin source fetch` with no source or filter is blocked in remote mode. Use `--stale`, `--unfetched`, `--retry-errors`, `--changed`, or a source identifier (src_… or slug).
|
|
101
|
-
- Default fetch cap is 200 releases per source (GitHub pagination limits). Use `--max <n>` or `--all` to override.
|
|
102
|
-
- `summary` and `compare` are *not* in this CLI. Those commands require AI provider calls and live in the private maintainer tooling. Use the hosted MCP tools `summarize_changes` / `compare_products` at `mcp.releases.sh` instead.
|
|
62
|
+
`releases admin <noun> <verb>` manages the registry (create/update sources, orgs, products; fetch; discovery; policies). It requires `RELEASES_API_KEY`, and **keys are not self-serve** — there's no public signup. Admin commands fail fast at startup without a key, so don't retry them unauthenticated, and don't fall back to them for read tasks. If a user asks how to get a key, tell them access is currently invite-only and point them at the project repo; don't invent a signup URL. Full operator reference: **[references/admin.md](references/admin.md)**.
|
|
@@ -4,6 +4,8 @@ Reader commands are unauthenticated — no API key required. They talk to `api.r
|
|
|
4
4
|
|
|
5
5
|
**Release JSON is slim by default.** `get`, `search`, and `tail`/`latest` return a lean release shape — `id`, `version`, `title`, `summary`, a markdown-stripped `excerpt`, `url`, `publishedAt`, nested `source`/`org`, and `contentChars`/`contentTokens` size hints. This drops storage internals (`contentHash`, `sourceId`, `versionSort`, `fetchedAt`, …) and the redundant `title*` variants to keep token usage low. Add `--full` when you need the complete payload (including the full `content` body). `summary` may be `null`; lean on `excerpt` / `contentChars` to decide whether to pull more.
|
|
6
6
|
|
|
7
|
+
> **Piping note:** in the default (non-`--json`) TSV output, release rows repeat the title across several columns (raw title, normalized title, version). Don't assume `cut -f2` lands on a unique field — check the row layout first, or just use `--json` for stable parsing.
|
|
8
|
+
|
|
7
9
|
## Search
|
|
8
10
|
|
|
9
11
|
Unified search across organizations, the catalog (products + standalone sources), and releases.
|
|
@@ -100,15 +102,40 @@ releases categories --json
|
|
|
100
102
|
|
|
101
103
|
The category list is fixed — adding a new category requires a code change in `@buildinternet/releases-core`.
|
|
102
104
|
|
|
103
|
-
##
|
|
105
|
+
## Reading a tracked changelog
|
|
106
|
+
|
|
107
|
+
`releases get <source> --json` reports `hasChangelogFile` and `changelogUrl` keyless, so you can detect whether a source maintains a checked-in CHANGELOG.md. This only exists for **sources that track one** — tag-only repos (e.g. Next.js, which ships GitHub releases but no CHANGELOG file) and products report `hasChangelogFile: false`.
|
|
108
|
+
|
|
109
|
+
To read the **sliced content** without a key, use one of:
|
|
110
|
+
|
|
111
|
+
- The MCP tool `get_catalog_entry` with `changelog_tokens` (heading-aligned; recommended brackets 2000 / 5000 / 10000 / 20000) and chain via the returned `nextOffset`. Every response reports `totalTokens` so you can budget calls upfront.
|
|
112
|
+
- Fetch the `changelogUrl` directly (it points at the raw file on GitHub).
|
|
113
|
+
|
|
114
|
+
> The CLI also has a `releases admin source changelog <slug>` wrapper, but it lives under `admin` and is **key-gated** — it fails with `"admin" requires an API key` for keyless users. Prefer the two keyless paths above unless you already hold an admin key.
|
|
115
|
+
|
|
116
|
+
## Collections
|
|
117
|
+
|
|
118
|
+
Curated cross-org "playlists" (e.g. Frontier AI Labs, Coding Agents), keyless:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
releases collection list # all collections
|
|
122
|
+
releases collection get frontier-ai-labs # members of one collection
|
|
123
|
+
releases collection releases frontier-ai-labs # interleaved cross-org release feed (--limit <n>, --json)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Domain lookup
|
|
127
|
+
|
|
128
|
+
Resolve a domain or URL to the org/product that owns it (keyless):
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
releases lookup domain vercel.com
|
|
132
|
+
releases lookup domain https://tailwindcss.com/blog
|
|
133
|
+
```
|
|
104
134
|
|
|
105
|
-
|
|
135
|
+
## Agent self-discovery
|
|
106
136
|
|
|
107
137
|
```bash
|
|
108
|
-
releases
|
|
109
|
-
releases admin source changelog apollo-client --limit 10000 # first 10k chars, heading-aligned
|
|
110
|
-
releases admin source changelog apollo-client --tokens 5000 # first ~5k cl100k_base tokens
|
|
111
|
-
releases admin source changelog apollo-client --offset 10000 --json
|
|
138
|
+
releases agent-context # versioned JSON: every command, argument, and option
|
|
112
139
|
```
|
|
113
140
|
|
|
114
|
-
|
|
141
|
+
When unsure of exact flags or subcommands, call `agent-context` rather than guessing — it's the CLI's own machine-readable contract, versioned via `schemaVersion`.
|
|
@@ -5,7 +5,7 @@ description: Use when the user asks about recent releases, changelogs, what's ne
|
|
|
5
5
|
|
|
6
6
|
# Releases.sh — Changelog Lookup
|
|
7
7
|
|
|
8
|
-
When the user asks about releases, changelogs, or version updates, use the Releases.sh MCP tools to fetch current data instead of relying on training data.
|
|
8
|
+
When the user asks about releases, changelogs, or version updates, use the Releases.sh MCP tools to fetch current data instead of relying on training data. Training data is stale for fast-moving libraries; these tools read the live registry.
|
|
9
9
|
|
|
10
10
|
## When to Use This Skill
|
|
11
11
|
|
|
@@ -15,43 +15,57 @@ Activate when the user:
|
|
|
15
15
|
- Wants recent releases or changelogs ("Show me the latest Tailwind releases")
|
|
16
16
|
- Asks about breaking changes or migration ("Were there breaking changes in Prisma 6?")
|
|
17
17
|
- Wants to compare release activity between products ("Compare Bun vs Deno releases")
|
|
18
|
-
- Mentions version updates, release notes, or changelogs
|
|
18
|
+
- Mentions version updates, release notes, or changelogs for a specific product
|
|
19
|
+
- Asks about a curated topic feed ("what's new across the AI labs?")
|
|
20
|
+
|
|
21
|
+
## The Tools
|
|
22
|
+
|
|
23
|
+
The hosted server exposes these tools. There is no AI summarization or comparison tool — you synthesize those yourself from the data below.
|
|
24
|
+
|
|
25
|
+
- `search` — unified search across four sections: orgs, catalog (products + standalone sources), collections, and releases. Your default entry point.
|
|
26
|
+
- `get_latest_releases` — recent releases, optionally scoped by `organization` or `product`. Use `since` / `until` for time windows.
|
|
27
|
+
- `list_organizations` / `get_organization` — browse and inspect orgs.
|
|
28
|
+
- `list_catalog` / `get_catalog_entry` — browse and inspect catalog entries. Each entry carries `entryType: "product" | "source"`. `get_catalog_entry` also serves CHANGELOG slices (see below).
|
|
29
|
+
- `get_release` — fetch one release in full by its `rel_` id (ids come from `search` / `get_latest_releases`).
|
|
30
|
+
- `list_collections` / `get_collection` / `get_collection_releases` — curated cross-org "playlists" (e.g. "Frontier AI Labs", "Coding Agents") independent of the category taxonomy.
|
|
31
|
+
- `lookup_domain` — resolve a URL/domain to the org that owns it. Use when you have a URL-shaped input rather than a name.
|
|
19
32
|
|
|
20
33
|
## How to Look Up Releases
|
|
21
34
|
|
|
22
|
-
### Step 1:
|
|
35
|
+
### Step 1: Resolve the entity
|
|
36
|
+
|
|
37
|
+
Start with `search` and the product or company name — it returns orgs, catalog, collections, and releases in one call, so you usually don't need a separate lookup. Narrow with `type` (e.g. `type: ["catalog"]` for a fast registry-only lookup, `type: ["releases"]` for pure release content).
|
|
38
|
+
|
|
39
|
+
If a name doesn't resolve, try variations:
|
|
23
40
|
|
|
24
|
-
|
|
41
|
+
- The company instead of the product ("Vercel" rather than "Next.js")
|
|
42
|
+
- The GitHub org ("supabase")
|
|
43
|
+
- A domain — or use `lookup_domain` directly (e.g. "tailwindcss.com")
|
|
44
|
+
- A `{org}/{repo}` GitHub coordinate ("vercel/next.js"). When nothing matches a coordinate-shaped query, the registry probes GitHub on demand and the response carries a `lookup` field with status `indexed` / `existing` / `empty` / `not_found` / `deferred`. Coordinate matching is case-insensitive.
|
|
25
45
|
|
|
26
|
-
|
|
46
|
+
### Step 2: Pick the right follow-up
|
|
27
47
|
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
48
|
+
- **"What's new?" / "Latest releases"** → `get_latest_releases` with `organization` or `product`. Add `since` (e.g. `"30d"`, `"6m"`, or an ISO date) for "last month" / "since v4" style asks.
|
|
49
|
+
- **Keyword across the whole registry** → `search` with a descriptive query; narrow with `type`.
|
|
50
|
+
- **One release in full** (to quote a note verbatim) → `get_release` with the `rel_` id from search results.
|
|
51
|
+
- **Entity metadata** → `get_catalog_entry` (products/sources) or `get_organization` (orgs, with an AI overview preview; `include_overview: true` for the full briefing).
|
|
52
|
+
- **Full maintained CHANGELOG.md** → `get_catalog_entry` with `include_changelog: true`. This only applies to **source** entries that track a checked-in CHANGELOG.md — products and tag-only repos (e.g. Next.js, which ships GitHub releases but no CHANGELOG file) return none. For large files, pass `changelog_tokens` (recommended brackets: 2000 / 5000 / 10000 / 20000) to get a heading-aligned slice, then chain via the returned `nextOffset`. Every response reports `totalTokens` so you can budget calls upfront.
|
|
53
|
+
- **A curated topic feed** → `list_collections` to discover, `get_collection_releases` for the interleaved cross-org feed.
|
|
33
54
|
|
|
34
|
-
### Step
|
|
55
|
+
### Step 3: Compare products (no built-in tool)
|
|
35
56
|
|
|
36
|
-
|
|
37
|
-
- **Specific feature or keyword across orgs + catalog + releases** → Use `search` (unified) with a descriptive query; narrow via `type: ["releases"]` etc.
|
|
38
|
-
- **Releases-only search** → Use `search_releases` (kept for back-compat) when you only want release rows
|
|
39
|
-
- **Single release by id** → Use `get_release` when you already have a `rel_` id (search results include ids)
|
|
40
|
-
- **Catalog deep-dive (product or standalone source)** → Use `get_catalog_entry` for metadata, tags, and linkage
|
|
41
|
-
- **Organization detail** → Use `get_organization`
|
|
42
|
-
- **Canonical CHANGELOG.md from a GitHub repo** → Use `get_catalog_entry` with `include_changelog: true` when the user wants the full maintained file, not just the tagged releases (refreshed on every fetch). For large files, pass `changelog_tokens` (cl100k_base budget, e.g. 5000 or 10000) to get a heading-aligned slice that fits a known context window; chain via the returned `nextOffset`. Every response reports `totalTokens` so you can plan how many calls you need upfront.
|
|
43
|
-
- **Compare two products** → Fetch each product separately with `get_catalog_entry` (and `get_latest_releases` for recent activity), then synthesize the comparison from the returned data. The hosted MCP server does not expose AI summarization tools.
|
|
57
|
+
There is no `compare_products` or `summarize_changes` tool on the hosted server. To compare, fetch each product separately (`get_catalog_entry` for metadata, `get_latest_releases` for recent activity) and synthesize the comparison yourself. Both products must be indexed — if one isn't found, say which is missing rather than guessing.
|
|
44
58
|
|
|
45
|
-
### Step
|
|
59
|
+
### Step 4: Present results
|
|
46
60
|
|
|
47
|
-
- Lead with
|
|
48
|
-
- Include version numbers and dates when available
|
|
49
|
-
- Quote key changes
|
|
50
|
-
- If results are sparse,
|
|
61
|
+
- Lead with what answers the user's question.
|
|
62
|
+
- Include version numbers and dates when available.
|
|
63
|
+
- Quote key changes from the release notes (keep quotes short).
|
|
64
|
+
- If results are sparse, say the product may not be fully indexed yet — don't fabricate release info.
|
|
51
65
|
|
|
52
66
|
## Guidelines
|
|
53
67
|
|
|
54
|
-
- Pass the user's full question
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
68
|
+
- Pass the user's full question into query parameters for better relevance.
|
|
69
|
+
- For time windows, use `since` / `until` on `get_latest_releases` and `search` (relative shorthand like `"90d"` or ISO dates).
|
|
70
|
+
- The `kind` filter (`platform|sdk|mobile|desktop|docs|integration|tool`) behaves differently by surface: on **release** results a source inherits its parent product's kind, so `kind: "sdk"` returns content under any SDK product; on **catalog** results it matches the row's own kind only. Reach for it when a query is explicitly scoped to one kind ("which SDKs shipped this week").
|
|
71
|
+
- If a product isn't found, say so clearly — don't invent releases.
|