LogPulse

Changelogs for coding agents: versions, breaking changes, migrations. Free changelog-to-JSON.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
97%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'compare_versions' description lacks action verbin compare_versions

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,690Tokens (tool definitions)
~2.5 KBTypical response size
Significant attention impact (2.10% of 128k context)

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-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools