LogPulse
Changelogs for coding agents: versions, breaking changes, migrations. Free changelog-to-JSON.
Should I use this
Quality & Safety
Findings (1)
- LOWin compare_versions
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"logpulse": {
"url": "https://release-ripple-roadmap.lovable.app/mcp"
}
}
}Remote endpoints
https://release-ripple-roadmap.lovable.app/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢search_changelogs(query, limit)
Find a public LogPulse changelog by package name, repository, product name or slug. Returns slugs to use with the other tools.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Package (e.g. @acme/analytics), repository (acme/analytics-js), product name or slug."
},
"limit": {
"description": "Maximum results. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_changelog(changelog)
Get a changelog's name, repository, packages, latest version and feed links.
Input Schema
{
"type": "object",
"properties": {
"changelog": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Changelog slug, e.g. \"acme\". Use search_changelogs to find it from a package, repository or product name."
}
},
"required": [
"changelog"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢list_releases(changelog, limit, since, breaking_only)
List published releases, newest first, with versions, breaking changes, migration steps and deprecations.
Input Schema
{
"type": "object",
"properties": {
"changelog": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Changelog slug, e.g. \"acme\". Use search_changelogs to find it from a package, repository or product name."
},
"limit": {
"description": "Maximum releases. Default 20.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"since": {
"description": "Only releases published at or after this ISO 8601 time, e.g. 2026-01-01.",
"type": "string",
"maxLength": 40
},
"breaking_only": {
"description": "Only releases that contain breaking changes.",
"type": "boolean"
}
},
"required": [
"changelog"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_release(changelog, release)
Get one release by version (2.0.0 or v2.0.0) or URL slug, with full notes, breaking changes and deprecations.
Input Schema
{
"type": "object",
"properties": {
"changelog": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Changelog slug, e.g. \"acme\". Use search_changelogs to find it from a package, repository or product name."
},
"release": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Version like 2.0.0, or the release's URL slug."
}
},
"required": [
"changelog",
"release"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢compare_versions(changelog, from, to, format)
Answer “what changed between two versions, and what do I need to change?”: breaking changes with migration steps, deprecations and every release after `from` up to `to`.
Input Schema
{
"type": "object",
"properties": {
"changelog": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Changelog slug, e.g. \"acme\". Use search_changelogs to find it from a package, repository or product name."
},
"from": {
"description": "The version the user is on, e.g. 1.4.0. Omit to start from the first release.",
"type": "string",
"maxLength": 40
},
"to": {
"description": "The version to upgrade to. Omit for the latest.",
"type": "string",
"maxLength": 40
},
"format": {
"description": "markdown (default) returns an upgrade guide; json returns structured data only.",
"type": "string",
"enum": [
"markdown",
"json"
]
}
},
"required": [
"changelog"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_roadmap(changelog, status)
Get the public roadmap: items under review, planned, in progress and shipped, with vote counts.
Input Schema
{
"type": "object",
"properties": {
"changelog": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Changelog slug, e.g. \"acme\". Use search_changelogs to find it from a package, repository or product name."
},
"status": {
"description": "Only items in this column.",
"type": "string",
"enum": [
"under_review",
"planned",
"in_progress",
"shipped"
]
}
},
"required": [
"changelog"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢convert_changelog(url, markdown, name, include_notes)
Turn any project's CHANGELOG.md text, or a GitHub release, releases page, repository or changelog file URL, into a machine-readable changelog: versions, dates, breaking changes with migration steps, and deprecations. Works for projects that aren't on LogPulse. Returns an llms.txt-style summary plus structured JSON.
Input Schema
{
"type": "object",
"properties": {
"url": {
"description": "GitHub URL: a release (github.com/owner/repo/releases/tag/v1.2.0), the releases page, a repository, or a CHANGELOG.md file. Use this or markdown.",
"type": "string",
"maxLength": 2000
},
"markdown": {
"description": "The changelog text itself, e.g. the contents of CHANGELOG.md. Use this or url.",
"type": "string",
"maxLength": 900000
},
"name": {
"description": "Project name to use in the summary.",
"type": "string",
"maxLength": 100
},
"include_notes": {
"description": "Include each release's full notes in the JSON. Default false to keep the answer short.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡publish_release(title, version, summary, body, category, ...)
Publish a release note to your LogPulse changelog right after shipping — with version, breaking changes, migration steps and deprecations. Needs a LogPulse API key with the “Publish releases” permission, sent as the Authorization header.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Short, user-facing headline, e.g. “Webhooks retry automatically”."
},
"version": {
"type": "string",
"pattern": "^[vV]?[0-9A-Za-z][0-9A-Za-z.+_-]{0,39}$",
"description": "Version this release ships in, e.g. 2.0.0. Unique per changelog."
},
"summary": {
"description": "One sentence for lists and link previews.",
"type": "string",
"maxLength": 300
},
"body": {
"default": "",
"description": "Release notes in Markdown.",
"type": "string",
"maxLength": 100000
},
"category": {
"default": "new",
"description": "new, improved or fixed. Default new.",
"type": "string",
"enum": [
"new",
"improved",
"fixed"
]
},
"labels": {
"description": "Up to 10 short labels, e.g. API, Dashboard.",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"status": {
"default": "published",
"description": "published (default) goes live now, or at published_at. draft saves it for a human to review in LogPulse.",
"type": "string",
"enum": [
"published",
"draft"
]
},
"published_at": {
"description": "Schedule a future time, or backdate an import.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"breaking_changes": {
"description": "What breaks for existing users, each with migration steps.",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"summary": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "One line: what broke."
},
"affects": {
"description": "What is affected, e.g. REST API, @acme/sdk.",
"type": "string",
"maxLength": 120
},
"migration": {
"description": "Markdown steps to migrate.",
"type": "string",
"maxLength": 4000
}
},
"required": [
"summary"
]
}
},
"deprecations": {
"description": "What is deprecated, its replacement and planned removal version.",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"item": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "What is deprecated."
},
"replacement": {
"type": "string",
"maxLength": 200
},
"removal_version": {
"type": "string",
"maxLength": 40
},
"note": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"item"
]
}
},
"author_name": {
"description": "Shown as the author. Defaults to the API key's name.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"slug": {
"description": "URL slug. Defaults to the title.",
"type": "string",
"maxLength": 80
}
},
"required": [
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡post_roadmap_update(id, title, description, status, label, ...)
Add an item to your LogPulse roadmap, or update one by id — move it to in progress or shipped, change its ETA, or link the release that shipped it. Needs a LogPulse API key with the “Update roadmap” permission, sent as the Authorization header.
Input Schema
{
"type": "object",
"properties": {
"id": {
"description": "Update this item instead of creating a new one.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"title": {
"description": "Item title. Required when creating.",
"type": "string",
"minLength": 1,
"maxLength": 140
},
"description": {
"description": "What and why, in a sentence or two.",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"status": {
"description": "Roadmap column. New items default to planned.",
"type": "string",
"enum": [
"under_review",
"planned",
"in_progress",
"shipped"
]
},
"label": {
"description": "Short tag, e.g. API or Mobile.",
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"eta": {
"description": "Free text, e.g. Q3 or July.",
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"is_public": {
"description": "Show on the public roadmap. Defaults to true for new items.",
"type": "boolean"
},
"linked_release": {
"description": "Release id, version or slug that shipped this item.",
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence