Changelogs your coding agents can read

Every LogPulse changelog is also an API. Agents like Claude Code, Cursor and Lovable can ask “what changed between v1.4 and v2.0, and what do I need to change?” and get an answer straight from the maintainers — not a guess from old training data.

Quickstart

1. Find the changelog. Search by package, repository or product name. Every result has a slug you use everywhere else.

Terminal
curl "https://release-ripple-roadmap.lovable.app/api/public/v1/search?q=@acme/analytics"

2. Ask for an upgrade guide. The diff endpoint returns every breaking change with its migration steps, every deprecation, and each release in between.

Terminal
curl "https://release-ripple-roadmap.lovable.app/api/public/v1/changelogs/acme/diff?from=1.4.0&to=2.0.0&format=markdown"

3. Or give your agent the MCP server and just ask in plain language.

Terminal
claude mcp add --transport http logpulse https://release-ripple-roadmap.lovable.app/mcp

“Using the LogPulse changelog "acme", what changed between v1.4.0 and v2.0.0, and what do I need to change in my code?”

Data model

A release is a normal, human-friendly release note plus structured upgrade details.

FieldTypeDescription
versionstring | nullVersion it ships in, e.g. 2.0.0. Unique per changelog.
titlestringHeadline.
summarystring | nullOne sentence.
categorynew | improved | fixedWhat kind of change it is.
published_atdate-timeWhen it went live.
notes_markdownstringFull release notes in Markdown.
has_breaking_changesbooleanTrue when breaking_changes is not empty.
breaking_changes[]object{ summary, affects?, migration? } — migration is Markdown steps.
deprecations[]object{ item, replacement?, removal_version?, note? }
urlstringThe release on the hosted changelog.
A breaking change
{
  "summary": "The callback option was removed from init()",
  "affects": "@acme/analytics",
  "migration": "Replace `init({ callback })` with `await init()`."
}

How versions compare

  • A diff covers releases after from up to and including to — the changes you get by upgrading.
  • Comparison is semver-style and forgiving: v2.0.0 equals 2.0.0, two- or four-part versions work, and pre-releases like 2.0.0-beta.1 sort before 2.0.0.
  • Releases without a version still appear in the feed, but can't be placed in a range, so diffs skip them.
  • Unknown versions don't fail: the diff still runs and adds a note to notes so agents can tell the user.

Publishing from agents

Create an API key in Dashboard → Agents & API, store it as LOGPULSE_API_KEY, and post a release right after you ship. Publishing updates the widget, the hosted changelog, every feed and the MCP server at once — and emails subscribers on paid plans.

Terminal
curl -X POST https://release-ripple-roadmap.lovable.app/api/public/v1/releases \
  -H "Authorization: Bearer $LOGPULSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Webhooks retry automatically",
    "version": "2.1.0",
    "category": "improved",
    "status": "published",
    "body": "Failed webhook deliveries now retry with backoff for 24 hours.",
    "deprecations": [{ "item": "retry_once option", "replacement": "retry_policy", "removal_version": "3.0" }]
  }'

Drop this into your AGENTS.md or CLAUDE.md so your coding agent does it for you:

AGENTS.md
## Release notes (LogPulse)

After you ship a user-facing change, publish a release note to our LogPulse changelog "your-slug":

- If the LogPulse MCP server is connected (https://release-ripple-roadmap.lovable.app/mcp, with our API key in its Authorization header), call publish_release. Otherwise POST https://release-ripple-roadmap.lovable.app/api/public/v1/releases with header `Authorization: Bearer $LOGPULSE_API_KEY`.
- Fields: "title", "version", "category": "new" | "improved" | "fixed", "body" (markdown), "status": "published"
- List breaking changes in "breaking_changes": [{ "summary", "affects", "migration" }] and deprecations in "deprecations": [{ "item", "replacement", "removal_version" }]
- Use "status": "draft" when a human should review it first.
- When a roadmap item ships, call post_roadmap_update (or PATCH https://release-ripple-roadmap.lovable.app/api/public/v1/roadmap/{id}) with { "status": "shipped", "linked_release": "<version>" }.
- Never paste the API key into chat or commit it; it lives in the environment.

Spec: https://release-ripple-roadmap.lovable.app/openapi.json

Agents connected to the MCP server can do the same with the publish_release and post_roadmap_update tools, using the key as an HTTP header. Every write needs a key, so nobody can write to your changelog without one. See the REST reference and the MCP write tools.

Changelog converter (free)

For projects that aren't on LogPulse yet: send a CHANGELOG.md or a GitHub URL and get the same structured shape back — versions, dates, breaking changes with migration steps, deprecations — plus an llms.txt-style summary. No key, nothing stored. Try it in the browser at Changelog to JSON, or from MCP with convert_changelog.

A GitHub release as llms.txt
curl "https://release-ripple-roadmap.lovable.app/api/public/v1/convert?url=https://github.com/vercel/next.js/releases/tag/v15.0.0&format=llms"
A local file as JSON
curl -X POST https://release-ripple-roadmap.lovable.app/api/public/v1/convert \
  -H "Content-Type: text/markdown" \
  --data-binary @CHANGELOG.md
  • Endpoint: https://release-ripple-roadmap.lovable.app/api/public/v1/convert. GET with ?url=, or POST JSON { "markdown": … } / { "url": … }, or a raw text/markdown body. Add format=llms for plain text only.
  • GitHub URLs: a release (…/releases/tag/v1.2.0, …/releases/latest), the releases page (100 most recent), a repository (its CHANGELOG.md, or its releases) or any markdown file in a public repo.
  • Breaking changes come from Breaking / Major Changes / Migration headings, BREAKING, ⚠️ or 💥 markers and conventional commits with !. Removed items count as breaking unless the changelog marks breaking changes itself.
  • Limits: 10 conversions per minute and 100 per day per IP, shared between the API and MCP; up to 1 MB per changelog.

Agent discovery

Agents and crawlers can find everything above from the domain alone:

FieldTypeDescription
/llms.txttext/plainWhat LogPulse is and where to read more (llms-full.txt has the full docs).
/.well-known/api-cataloglinkset+jsonRFC 9727 API catalog: links the REST API to its OpenAPI spec and docs, and the MCP server to its card.
/mcp/server-cardmcp-server-card+jsonMCP Server Card: endpoint, transport, protocol versions, optional API-key header and every tool with its input schema.
/.well-known/mcp/server-card.jsonmcp-server-card+jsonThe same card at the older well-known path.
/.well-known/ai-catalog.jsonai-catalog+jsonAI Catalog entry pointing to the server card.
/openapi.jsonapplication/jsonOpenAPI 3.1 description of the REST API.
Terminal
curl https://release-ripple-roadmap.lovable.app/.well-known/api-catalog
curl https://release-ripple-roadmap.lovable.app/mcp/server-card
curl -I https://release-ripple-roadmap.lovable.app/.well-known/api-catalog

A HEAD request to the API catalog answers with Link: <…/.well-known/api-catalog>; rel="api-catalog", and every page carries <link rel="api-catalog"> in its head, so an agent that lands anywhere on release-ripple-roadmap.lovable.app can find the APIs.

Limits & caching

  • Feed responses are cached for 60 seconds. New releases appear within a minute.
  • All feed endpoints allow cross-origin requests and need no authentication.
  • Rate limits: 300 REST requests and 120 MCP requests per minute per IP, and 120 per minute per API key. The free converter allows 10 conversions per minute and 100 per day per IP. Over the limit you get 429 with Retry-After.
  • Only releases that are published, not scheduled for later and not targeted at a segment appear in feeds.
  • Request bodies are limited to 200 KB; up to 50 breaking changes and 50 deprecations per release.
  • Errors always look like { "error": { "code", "message", "details?" } }.

Open-source projects

Public repositories with an open-source license get every paid feature free — unlimited releases, AI drafts from GitHub and email blasts. Link your changelog from your README and verify in Dashboard → Billing. Learn more.