# rewelo (oci · ghcr.io/sebs/rewelo:0.7.3)

Prioritise a backlog with the relative weight method: score, rank, simulate and plan tickets

- Trust score: 41/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-29

## Components

- npm · `rewelo`: 86/100, [markdown](https://verifymcp.io/servers/sebs-rewelo/rewelo.md), [page](https://verifymcp.io/servers/sebs-rewelo/rewelo)
- oci · `ghcr.io/sebs/rewelo:0.7.3`: 41/100 (this document), [markdown](https://verifymcp.io/servers/sebs-rewelo/ghcr-io-sebs-rewelo-0-7-3.md), [page](https://verifymcp.io/servers/sebs-rewelo/ghcr-io-sebs-rewelo-0-7-3)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/sebs/rewelo:0.7.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-29.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
- **Provenance & Transparency**: 35/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 3 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 87/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4700 tokens (~111/item across 42 items; 42 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (93% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 43 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 2 categories.** Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the rewelo MCP server?

rewelo runs locally as a container image, launched with docker run --rm -i ghcr.io/sebs/rewelo:0.7.3. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add sebs-rewelo -- docker run --rm -i ghcr.io/sebs/rewelo:0.7.3
```

### Cursor

```json
{
  "mcpServers": {
    "sebs-rewelo": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/sebs/rewelo:0.7.3"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sebs-rewelo": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/sebs/rewelo:0.7.3"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sebs-rewelo -- docker run --rm -i ghcr.io/sebs/rewelo:0.7.3
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sebs-rewelo": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/sebs/rewelo:0.7.3"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  sebs-rewelo:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/sebs/rewelo:0.7.3"]
```

### Netclaw

```json
{
  "McpServers": {
    "sebs-rewelo": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/sebs/rewelo:0.7.3"
      ]
    }
  }
}
```

### Other

```json
{
  "mcpServers": {
    "sebs-rewelo": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/sebs/rewelo:0.7.3"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-28 (score 41, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-26 (score 41)

First indexed and scored.

## MCP tools (42)

### `server_version` (~22 tokens)

Return the server version string. Use to verify which build is running.

Output parameters:

- `version` (string)

### `project_create` (~50 tokens)

Create a new project. Name must be unique; letters, digits, spaces, hyphens and underscores (not starting with a space), max 100 characters.

Input parameters:

- `name` (string, required): Project name

Output parameters:

- `created_at` (string): ISO timestamp
- `id` (integer)
- `name` (string)
- `project_uuid` (string)

### `project_list` (~18 tokens)

List all projects with their IDs and creation dates.

Output parameters:

- `result` (array)

### `project_delete` (~59 tokens)

Delete a project and all its tickets, tags, relations, and history. Irreversible. When the client supports forms (elicitation), the user is asked to confirm first, as rw project delete does.

Input parameters:

- `name` (string, required): Project name

Output parameters:

- `deleted` (boolean)

### `ticket_create` (~248 tokens)

Create a new ticket with Fibonacci scores (1,2,3,5,8,13,21). Title must be unique per project. When the client supports forms (elicitation), the user is asked for omitted scores; otherwise, or when the user declines, they default to 1. Priority = (benefit + penalty) / (estimate + risk). Use ticket_upsert instead if the title may already exist.

Input parameters:

- `benefit`: Benefit if delivered (Fibonacci: 1,2,3,5,8,13,21)
- `description` (string): Ticket description (max 10000 chars)
- `estimate`: Implementation effort (Fibonacci: 1,2,3,5,8,13,21)
- `penalty`: Penalty if not delivered (Fibonacci: 1,2,3,5,8,13,21)
- `project` (string): Project name (falls back to .rewelo.json)
- `risk`: Implementation risk/uncertainty (Fibonacci: 1,2,3,5,8,13,21)
- `title` (string, required): Ticket title (max 500 chars)

Output parameters:

- `benefit` (integer)
- `created_at` (string): ISO timestamp
- `description` (string|null)
- `estimate` (integer)
- `id` (integer)
- `penalty` (integer)
- `project_id` (integer)
- `risk` (integer)
- `ticket_uuid` (string)
- `title` (string)
- `updated_at` (string): ISO timestamp

### `ticket_list` (~278 tokens)

List tickets with calculated value, cost, and priority. Supports tag filters (intersection), exclude-tags, title search, score thresholds, sort, and limit/offset pagination. Returns {total, offset, items[]}.

Input parameters:

- `excludeTags` (array): Exclude tickets with these tags. Each as prefix:value
- `limit` (integer): Max number of results to return (default 100; total gives the full count)
- `maxCost` (number): Maximum cost (estimate+risk) threshold
- `minPriority` (number): Minimum priority, compared with the exact value/cost (21/13 = 1.615 is below 1.62, though returned as 1.62)
- `minValue` (number): Minimum value (benefit+penalty) threshold
- `offset` (integer): Skip first N results (for pagination)
- `project` (string): Project name (falls back to .rewelo.json)
- `search` (string): Filter by title substring (case-insensitive)
- `sort` (string): Sort descending by: priority, benefit, penalty, estimate, risk, value, cost
- `tag` (string): Filter by tag (prefix:value) — single tag, kept for backward compat
- `tags` (array): Filter by multiple tags (intersection). Each as prefix:value

Output parameters:

- `items` (array)
- `offset` (integer)
- `total` (integer): Matching tickets, before limit and offset

### `ticket_update` (~106 tokens)

Update a ticket's title, description, or scores. Only provided fields are changed. Identified by current title.

Input parameters:

- `benefit`: Benefit score
- `description` (string): New description
- `estimate`: Estimate score
- `newTitle` (string): New title
- `penalty`: Penalty score
- `project` (string): Project name (falls back to .rewelo.json)
- `risk`: Risk score
- `title` (string, required): Current ticket title

Output parameters:

- `benefit` (integer)
- `created_at` (string): ISO timestamp
- `description` (string|null)
- `estimate` (integer)
- `id` (integer)
- `penalty` (integer)
- `project_id` (integer)
- `risk` (integer)
- `ticket_uuid` (string)
- `title` (string)
- `updated_at` (string): ISO timestamp

### `ticket_upsert` (~196 tokens)

Create or update a ticket matched by exact title. Returns {ticket, action: 'created'|'updated'|'unchanged'}. Idempotent — safe to call repeatedly without duplicate errors.

Input parameters:

- `benefit`: Benefit score (Fibonacci: 1,2,3,5,8,13,21)
- `description` (string): Ticket description (max 10000 chars)
- `estimate`: Estimate score (Fibonacci: 1,2,3,5,8,13,21)
- `penalty`: Penalty score (Fibonacci: 1,2,3,5,8,13,21)
- `project` (string): Project name (falls back to .rewelo.json)
- `risk`: Risk score (Fibonacci: 1,2,3,5,8,13,21)
- `title` (string, required): Ticket title (used as the unique key)

Output parameters:

- `action` (string)
- `ticket` (object)

### `ticket_delete` (~51 tokens)

Delete a ticket and its relations, revisions, and tag assignments. Irreversible.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `title` (string, required): Ticket title

Output parameters:

- `deleted` (boolean)

### `ticket_history` (~106 tokens)

Show revision history for a single ticket. Provide title or id. For project-wide history, use project_history instead.

Input parameters:

- `id` (integer): Ticket numeric ID (provide title or id)
- `limit` (integer): Maximum number of revisions to return (oldest first)
- `offset` (integer): Number of revisions to skip
- `project` (string): Project name (falls back to .rewelo.json)
- `title` (string): Ticket title (provide title or id)

Output parameters:

- `result` (array)

### `project_history` (~108 tokens)

List revision history across all tickets in a project: newest first, or with since the revisions right after it, oldest first. Use instead of calling ticket_history per ticket. Page with limit and offset.

Input parameters:

- `limit` (integer): Maximum number of revisions to return
- `offset` (integer): Number of revisions to skip
- `project` (string): Project name (falls back to .rewelo.json)
- `since` (string): Only show revisions after this ISO timestamp (then oldest first)

Output parameters:

- `result` (array)

### `tag_create` (~80 tokens)

Create a tag (prefix:value) without assigning it; tag_assign creates missing tags itself. Prefix and value must be lowercase alphanumeric/hyphens. Must be unique per project.

Input parameters:

- `prefix` (string, required): Tag prefix
- `project` (string): Project name (falls back to .rewelo.json)
- `value` (string, required): Tag value

Output parameters:

- `created_at` (string): ISO timestamp
- `id` (integer)
- `prefix` (string)
- `project_id` (integer)
- `updated_at` (string): ISO timestamp
- `value` (string)

### `tag_assign` (~154 tokens)

Assign tags to tickets, creating tags that don't exist yet (marked tagCreated), as rw tag assign does. Supports batch: single or multiple tags × single or multiple tickets in one call. A ticket holds one value per prefix: assigning state:done replaces state:wip (reported as 'replaced'), and requesting two values of one prefix is an error.

Input parameters:

- `prefix` (string): Tag prefix (single tag)
- `project` (string): Project name (falls back to .rewelo.json)
- `tags` (array): Multiple tags to assign
- `ticket` (string): Ticket title (single)
- `tickets` (array): Ticket titles (multiple)
- `value` (string): Tag value (single tag)

Output parameters:

- `result` (array)

### `tag_remove` (~67 tokens)

Remove a tag assignment from a ticket. The tag itself is not deleted.

Input parameters:

- `prefix` (string, required): Tag prefix
- `project` (string): Project name (falls back to .rewelo.json)
- `ticket` (string, required): Ticket title
- `value` (string, required): Tag value

Output parameters:

- `status` (string)
- `tag` (string)
- `ticket` (string)

### `tag_list` (~39 tokens)

List all tags defined in a project, sorted by prefix then value.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `result` (array)

### `tag_delete` (~66 tokens)

Delete a tag that no ticket holds (use tag_remove on its tickets first). Tickets' tag history is kept.

Input parameters:

- `prefix` (string, required): Tag prefix
- `project` (string): Project name (falls back to .rewelo.json)
- `value` (string, required): Tag value

Output parameters:

- `deleted` (boolean)
- `tag` (string)

### `tag_rename` (~83 tokens)

Rename a tag's value. All ticket assignments carry over. New value must not conflict with an existing tag under the same prefix.

Input parameters:

- `newValue` (string, required): New tag value
- `oldValue` (string, required): Current tag value
- `prefix` (string, required): Tag prefix
- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `created_at` (string): ISO timestamp
- `id` (integer)
- `prefix` (string)
- `project_id` (integer)
- `updated_at` (string): ISO timestamp
- `value` (string)

### `weight_get` (~50 tokens)

Get the weight configuration (w1-w4) for a project. Defaults are all 1.5 if not customized.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `project_id` (integer)
- `w1` (number)
- `w2` (number)
- `w3` (number)
- `w4` (number)

### `weight_set` (~106 tokens)

Set weight configuration (w1-w4) for a project. Each weight is 0 or between 0.01 and 100. Only provided weights change; omitted ones keep their current value.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `w1` (number): Benefit weight
- `w2` (number): Penalty weight
- `w3` (number): Estimate weight
- `w4` (number): Risk weight

Output parameters:

- `project_id` (integer)
- `w1` (number)
- `w2` (number)
- `w3` (number)
- `w4` (number)

### `weight_reset` (~37 tokens)

Reset weight configuration to defaults (all 1.5).

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `project_id` (integer)
- `w1` (number)
- `w2` (number)
- `w3` (number)
- `w4` (number)

### `calc_priority` (~267 tokens)

Calculate weighted priorities for all tickets, sorted descending. Inline w1-w4 override stored weights for this call only. Returns {title, priority, weighted} per ticket. For de-risk-first ordering, use ticket_list with sort='risk' instead.

Input parameters:

- `limit` (integer): Max number of entries to return (default: all)
- `offset` (integer): Number of entries to skip, to page through a list too large for one result
- `project` (string): Project name (falls back to .rewelo.json)
- `tag` (string): Only tickets with this tag (prefix:value)
- `tags` (array): Only tickets with all of these tags (intersection, also with tag). Each as prefix:value
- `w1` (number): Benefit weight (default 1.5). Higher = benefit matters more in value.
- `w2` (number): Penalty weight (default 1.5). Higher = penalty matters more in value.
- `w3` (number): Estimate weight (default 1.5). Higher = large estimates are penalised more.
- `w4` (number): Risk weight (default 1.5). Higher = risky items are penalised more. To de-risk first, sort by risk via ticket_list instead.

Output parameters:

- `result` (array)

### `calc_weights` (~154 tokens)

Calculate each ticket's relative share of total value and cost as fractions between 0 and 1 (0.25 = 25%). Shows how one ticket compares to the whole backlog, or to a tagged subset when tag is given.

Input parameters:

- `limit` (integer): Max number of entries to return (default: all)
- `offset` (integer): Number of entries to skip, to page through a list too large for one result
- `project` (string): Project name (falls back to .rewelo.json)
- `tag` (string): Only compare tickets with this tag (prefix:value)
- `tags` (array): Only compare tickets with all of these tags (intersection, also with tag). Each as prefix:value

Output parameters:

- `result` (array)

### `simulate` (~250 tokens)

What-if: rank the open tickets (not state:done) as calc_priority does, under hypothetical score changes, new or removed tickets and weights, and compare with the current ranking. Nothing is written; use ticket_update to apply a scenario. Returns the scenario's top tickets and every ticket that is changed, added, removed or moves, with its rank and priority before and after.

Input parameters:

- `add` (array): Hypothetical new tickets; omitted scores are 1
- `changes` (array): Hypothetical scores for existing tickets; omitted scores stay
- `limit` (integer): Max number of changed or moved tickets to return (default 100)
- `project` (string): Project name (falls back to .rewelo.json)
- `remove` (array): Titles of tickets to leave out
- `tag` (string): Only rank tickets with this tag (prefix:value)
- `tags` (array): Only rank tickets with all of these tags (intersection, also with tag). Each as prefix:value
- `top` (integer): How many of the scenario's top tickets to list (default 10)
- `weights` (object): Hypothetical weights; omitted ones keep the project's

Output parameters:

- `baselineWeights` (object)
- `moved` (integer): Tickets whose rank changed, not counting added and removed ones
- `scenarioWeights` (object)
- `tickets` (array)
- `top` (array)
- `total` (integer): Tickets in the scenario's ranking

### `explain_priority` (~166 tokens)

Explain one ticket's priority: the formula with its scores and the project's weights, its rank among the open tickets (not state:done) as calc_priority ranks, and what it would take to reach the top N: the priority to beat, and the smallest change of each single score that gets there.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `tag` (string): Rank only among tickets with this tag (prefix:value); the ticket must have it
- `tags` (array): Rank only among tickets with all of these tags (intersection, also with tag); the ticket must have them. Each as prefix:value
- `title` (string, required): Ticket title
- `top` (integer): The rank to reach (default 1)

Output parameters:

- `formula` (string)
- `of` (integer)
- `priority` (number)
- `rank` (integer)
- `scores` (object)
- `target` (object)
- `title` (string)
- `weightedCost` (number): w3 × estimate + w4 × risk
- `weightedValue` (number): w1 × benefit + w2 × penalty
- `weights` (object)

### `suggest_scores` (~156 tokens)

Material to score a new ticket relative to the project's own backlog, before ticket_create: the most similar existing tickets (possible duplicates) with their scores; for each dimension and each score, the existing ticket closest to the new one as a reference; and the project's score distribution. With sample, and when the client supports MCP sampling, the client's model is also asked for scores, returned as suggestion.

Input parameters:

- `description` (string): The new ticket's description
- `project` (string): Project name (falls back to .rewelo.json)
- `sample` (boolean): Ask the client's model for scores (MCP sampling; the client may ask the user first). Default false
- `title` (string, required): The new ticket's title

Output parameters:

- `distribution` (array)
- `references` (object): Per dimension and score, the existing ticket closest to the new one
- `sampling` (string): With sample: whether the client's model gave scores
- `similar` (array): The most similar existing tickets: possible duplicates
- `suggestion` (object): The client's model's scores, with sample
- `tickets` (integer): Tickets in the project

### `report_summary` (~71 tokens)

Get project overview: total tickets, breakdown by state tag, and the top-N open (not state:done) tickets by priority. Good starting point for any project.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `topN` (integer): Number of top tickets

Output parameters:

- `byState` (object)
- `topByPriority` (array)
- `totalTickets` (integer)
- `withoutState` (integer)

### `report_times` (~75 tokens)

Calculate lead time (created→done) and cycle time (wip→done) per ticket, plus their averages (whole days; null where there is no value). Prerequisite: assign state:wip and state:done tags to tickets.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `averageCycleTimeDays` (number|null)
- `averageLeadTimeDays` (number|null)
- `tickets` (array)

### `report_health` (~98 tokens)

Assess backlog health: high/low priority ratio, open ticket count, total cost. highToLowRatio is null when no open ticket is low priority, also when there are no open tickets.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `threshold` (number): High priority threshold, greater than 0 (default 1.5), compared with the exact value/cost, not the rounded priority

Output parameters:

- `doneTickets` (integer)
- `highPriorityCount` (integer)
- `highToLowRatio` (number|null)
- `lowPriorityCount` (integer)
- `openTickets` (integer)
- `totalBacklogCost` (number)
- `totalTickets` (integer)

### `report_distribution` (~50 tokens)

Count how many tickets use each Fibonacci score (1-21), per dimension (benefit, penalty, estimate, risk).

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `result` (array)

### `report_group` (~61 tokens)

Group tickets by the values of one tag prefix (e.g. team), with ticket count and average priority per value.

Input parameters:

- `prefix` (string, required): Tag prefix to group by
- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `result` (array)

### `report_dashboard` (~79 tokens)

Render a self-contained HTML dashboard (tickets, distribution, health, relations). Returns the HTML document as text, or, when it is over 5 MB, a link to the resource with it.

Input parameters:

- `limit` (integer): Rows per table (default 500)
- `project` (string): Project name (falls back to .rewelo.json)

### `event_log` (~146 tokens)

Get a unified event stream combining ticket creates, updates, deletes, and tag changes. Without since/after: the newest events, newest first. With since or after: the events after it, oldest first. To poll incrementally without missing events, pass the sequence of the last event received as the next after.

Input parameters:

- `after` (integer): Only events written after this sequence number (an earlier event's sequence), in write order
- `limit` (integer): Maximum number of events to return (default 50)
- `project` (string): Project name (falls back to .rewelo.json)
- `since` (string): Only events after this ISO timestamp (then oldest first)

Output parameters:

- `result` (array)

### `project_diff` (~85 tokens)

Compare project state against a point in time. Returns new tickets, title/description/score changes, deleted tickets, and tag changes since the timestamp.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `since` (string, required): ISO timestamp to diff from (e.g. '2026-03-10T00:00:00Z')

Output parameters:

- `deletedTickets` (array)
- `newTickets` (array)
- `now` (string): ISO timestamp
- `since` (string): ISO timestamp
- `tagChanges` (array)
- `updatedTickets` (array)

### `export_csv` (~75 tokens)

Export all tickets as CSV. Optionally includes calculated value, cost, and priority columns. Over 5 MB, returns a link to the resource with the CSV instead.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `withCalculations` (boolean): Include value/cost/priority columns

### `export_json` (~135 tokens)

Export a project as JSON: tickets, tags, relations and weights; with withHistory also each ticket's createdAt, updatedAt, revisions and tagChanges, and the project's deleted tickets (deletions), so lead and cycle times and the event log survive a restore. Use for backups of a single project; import_json restores it. Over 5 MB, returns a link to the resource with the export instead.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `withHistory` (boolean): Include each ticket's creation and update time, revisions and tag changes, and the deleted tickets

### `import_csv` (~94 tokens)

Import tickets from CSV string. Only 'title' column is required; missing score columns default to 1. Tags column optional (comma-separated prefix:value). Columns other than title, description, benefit, penalty, estimate, risk, tags (and the calculated value, cost, priority) are rejected.

Input parameters:

- `csv` (string, required): CSV content
- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `imported` (integer)

### `import_json` (~209 tokens)

Import a project from JSON as export_json writes it: {tickets: [{title, description?, benefit?, penalty?, estimate?, risk?, tags?: [{prefix, value}], createdAt?, updatedAt?, revisions?, tagChanges?}], tags?, relations?: [{source, type, target}], weights?: {w1, w2, w3, w4}, deletions?: [{title, createdAt, deletedAt}]}. The history keys (createdAt, updatedAt, revisions, tagChanges, deletions) come from export_json with withHistory: pass them back as they are. Unknown keys are refused. Tags are created as needed and the project if it does not exist. Relations are added, and weights in the file replace the project's; the result reports relationsCreated, relationsSkipped (relations the others contradict, left out, with why) and the weights set.

Input parameters:

- `json` (string, required): JSON content
- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `imported` (integer)
- `projectCreated` (boolean)
- `relationsCreated` (integer)
- `relationsSkipped` (array): Relations of the file left out because the others contradict them (reversed, contradicting, or closing a cycle), with why
- `tagsCreated` (integer)
- `weights` (object): The file's weights, which replaced the project's

### `relation_create` (~108 tokens)

Create a bidirectional relation between two tickets. Types: blocks, depends-on, relates-to, duplicates, supersedes, precedes, tests, implements, addresses, splits-into, informs, see-also.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `source` (string, required): Source ticket title
- `target` (string, required): Target ticket title
- `type` (string, required): Relation type (e.g. blocks, depends-on, relates-to)

Output parameters:

- `created` (boolean)
- `source` (string)
- `target` (string)
- `type` (string)

### `relation_remove` (~74 tokens)

Remove a relation between two tickets (removes both directions). Errors if the relation does not exist.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `source` (string, required): Source ticket title
- `target` (string, required): Target ticket title
- `type` (string, required): Relation type

Output parameters:

- `removed` (boolean)

### `relation_list` (~54 tokens)

List relations for a single ticket. For all relations in a project, use relation_list_all instead.

Input parameters:

- `project` (string): Project name (falls back to .rewelo.json)
- `ticket` (string, required): Ticket title

Output parameters:

- `result` (array)

### `relation_list_all` (~97 tokens)

List every relation in a project in one call. Returns source/target IDs, titles, and relation type. Use instead of calling relation_list per ticket.

Input parameters:

- `limit` (integer): Max number of entries to return (default: all)
- `offset` (integer): Number of entries to skip, to page through a list too large for one result
- `project` (string): Project name (falls back to .rewelo.json)

Output parameters:

- `result` (array)

### `apply_changes` (~238 tokens)

Apply a list of changes in one transaction: all of them or, when one fails, none. Operations: ticket_create, ticket_update, ticket_delete, tag_assign and tag_remove (tag as prefix:value; a missing tag is created), relation_create, relation_remove, each with the parameters of the tool of that name. With dryRun, nothing is written: the result shows what the changes would do. Returns each operation's outcome and how the ranking of the open tickets (not state:done, as simulate ranks) changes; a ticket the changes close or reopen is marked done or reopened. Use it to groom a backlog in one step, and dryRun to review a plan with the user first.

Input parameters:

- `dryRun` (boolean): Only show what the changes would do (default false)
- `limit` (integer): Max number of changed or moved tickets to return (default 100)
- `operations` (array, required): Changes, applied in order
- `project` (string): Project name (falls back to .rewelo.json)
- `top` (integer): How many top tickets of the new ranking to list (default 10)

Output parameters:

- `applied` (boolean): false for a dry run: nothing was written
- `operations` (array): Each operation's outcome, in order
- `ranking` (object): The ranking of the open tickets before (baseline) and after the changes (scenario), as simulate ranks; done: the changes closed the ticket, reopened: they reopened it

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/sebs-rewelo/ghcr-io-sebs-rewelo-0-7-3#diagnostics

## Score history

- 2026-09-29: 41
- 2026-09-28: 41
- 2026-09-27: 41
- 2026-09-26: 41

## Common questions

### What is the rewelo MCP server?

rewelo is an MCP server listed in the public MCP registry as io.github.sebs/rewelo. Prioritise a backlog with the relative weight method: score, rank, simulate and plan tickets. This page covers its container image (ghcr.io/sebs/rewelo:0.7.3).

### Is the rewelo MCP server safe to use?

rewelo scores 41 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the rewelo MCP server expose?

rewelo exposes 42 tools: server_version, project_create, project_list, project_delete, ticket_create, and 37 more. Their descriptions and schemas cost roughly 4,666 tokens of context every time the server is loaded.

### Is the rewelo MCP server still maintained?

rewelo is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- GitHub Container Registry: https://ghcr.io/sebs/rewelo
- Repository: https://github.com/sebs/rewelo
- Website: https://sebs.github.io/rewelo/
- Changelog RSS feed: https://verifymcp.io/servers/sebs-rewelo/ghcr-io-sebs-rewelo-0-7-3.xml
- Changelog JSON feed: https://verifymcp.io/servers/sebs-rewelo/ghcr-io-sebs-rewelo-0-7-3.json
- HTML version of this page: https://verifymcp.io/servers/sebs-rewelo/ghcr-io-sebs-rewelo-0-7-3
