Skip to content
Docs menu

Tool reference · Edit, history & reports

New in 14.6.0

memory_report

Builds an activity report for a project (or all projects) over a day, week, month, all time or custom dates: decisions with their reasons, fixes, errors, lessons, open next steps, files and a daily timeline.

local stdio server writes idempotent
Caution. Deterministic and local by default. include_llm_summary=true sends the report's headline items to the configured LLM provider to write one paragraph; the report stays complete if that fails.

When to use

  • Someone asks "what happened this week on my-api?" or wants a status update.
  • Preparing a weekly summary, a sprint review or a retrospective (offset=-1 for last week or last month).
  • Handing a project over and you want the key decisions and open items in one place.

Parameters

NameTypeDefaultDescription
project string — Project name; omit for all projects (min length 1, max length 128)
period "day" | "week" | "month" | "all" | "custom" "week" day = today, week = this ISO week, month = this calendar month, all = since the first record, custom = since/until
since string — custom only: first day YYYY-MM-DD (inclusive) or an ISO date-time (max length 40)
until string — custom only: last day YYYY-MM-DD (inclusive) or an ISO date-time (exclusive); default today (max length 40)
offset integer 0 day/week/month only: 0 = current, -1 = previous (yesterday, last week, last month) (min -520, max 0)
tz string — IANA timezone for period boundaries, e.g. Europe/Berlin; default: MEMORY_REPORT_TZ, TZ or the system zone (min length 1, max length 64)
limit integer 20 Maximum items per section (min 1, max 200)
format "markdown" | "json" "markdown" markdown (readable) or json (structured)
include_llm_summary boolean false Add an LLM-written paragraph (needs a configured LLM)
save boolean false Also write the Markdown under <memory dir>/reports/

Example

Arguments

{
  "project": "my-api",
  "period": "week",
  "offset": -1,
  "format": "json"
}

Result shape

{
  "report": {
    "schema_version": 1,
    "project": "my-api",
    "scope": null,
    "window": {
      "kind": "week",
      "label": "ISO week 2026-W39 (2026-09-21 – 2026-09-27)",
      "timezone": "Europe/Berlin",
      "start": "2026-09-21T00:00:00+02:00",
      "end": "2026-09-28T00:00:00+02:00",
      "start_utc": "2026-09-20T22:00:00Z",
      "end_utc": "2026-09-27T22:00:00Z",
      "first_day": "2026-09-21",
      "last_day": "2026-09-27",
      "days": 7,
      "in_progress": true
    },
    "generated_at": "2026-09-25T15:02:11Z",
    "empty": false,
    "summary": {
      "records": 18,
      "records_by_type": {
        "decision": 3,
        "solution": 5,
        "fact": 10
      },
      "new": 15,
      "updated": 3,
      "confirmed": 1,
      "superseded": 1,
      "errors": 4,
      "session_summaries": 3,
      "sessions": 6,
      "active_days": 4
    },
    "previous": null,
    "changes": [
      {
        "key": "records",
        "label": "Records",
        "current": 18,
        "previous": 11,
        "delta": 7,
        "change_pct": 63.6
      }
    ],
    "decisions": {
      "total": 3,
      "items": [
        {
          "title": "Use pgvector instead of ChromaDB",
          "type": "decision",
          "at": "2026-09-22T10:14:00Z",
          "status": "active",
          "why": "Per-tenant row-level security in one Postgres",
          "sources": [
            {
              "kind": "knowledge",
              "id": 412
            }
          ]
        }
      ]
    },
    "solutions": {
      "total": 5,
      "items": []
    },
    "errors": {
      "total": 4,
      "items": []
    },
    "lessons": {
      "total": 1,
      "items": []
    },
    "error_patterns": [
      {
        "pattern": "test DB not migrated",
        "count": 2,
        "total": 5,
        "recurring": true,
        "first_seen": "2026-08-30",
        "last_seen": "2026-09-24",
        "sources": []
      }
    ],
    "open_items": {
      "total": 2,
      "items": [
        {
          "kind": "next_step",
          "text": "Update the OpenAPI spec",
          "at": "2026-09-24T18:40:00Z",
          "occurrences": 1,
          "picked_up": false,
          "sources": []
        }
      ]
    },
    "files": {
      "total": 7,
      "items": [
        {
          "name": "src/auth/middleware.go",
          "kind": "file",
          "count": 4,
          "sources": []
        }
      ]
    },
    "entities": {
      "total": 5,
      "items": []
    },
    "tags": {
      "total": 6,
      "items": []
    },
    "timeline": [
      {
        "date": "2026-09-22",
        "weekday": "Mon",
        "records": 6,
        "by_type": {
          "decision": 1,
          "fact": 5
        },
        "errors": 1,
        "sessions": 2,
        "summaries": 1,
        "entries": [],
        "more": 0
      }
    ],
    "contributors": [],
    "llm_summary": null,
    "llm_summary_error": null
  },
  "saved_to": null
}

With format="markdown" (the default) the same data comes back as a readable report. Every item carries record IDs for memory_get. save=true also writes the Markdown to <memory dir>/reports/<project>/<period>-<date>.md.

Values are illustrative; the keys follow the server's handler. MCP clients receive the result as JSON text content.

Server description

The description the server sends to your agent in tools/list, captured from the v14.7.0 source:

Activity report for a project (or all projects) over a period: today (period=day), this week (week, ISO Monday-Sunday), this month (month), all time (all) or custom since/until dates; offset=-1 gives the previous day/week/month ('last week'). Sections: summary numbers with deltas against the previous equal period, key decisions with their WHY, solutions and fixes, errors with recurring patterns and lessons, open next steps and pitfalls from session summaries, most touched files, entities/technologies, and a day-by-day timeline. Every item carries source IDs (#id -> memory_get). Built deterministically from stored records, no LLM; include_llm_summary=true adds an optional paragraph from the configured LLM. Periods use the local timezone (or tz). save=true writes the Markdown to <memory dir>/reports/<project>/<period>-<date>.md. Use it when the user asks what happened, for a status/progress report, a weekly summary or a retrospective.

Found a mistake? Open an issue on GitHub.

Search