Skip to main content
Glama

Create Private Memo

create-private-memo

Save a PRIVATE memory to memocore ("mc") — visible only to you, never shared. Use for personal facts, preferences or notes. Keep ONE coherent topic per memo; split unrelated topics (e.g. overview, tech stack, pricing) into separate memos. Before saving, run search-memo: if a memo on this topic already exists, merge the new facts into it with update-private-memo instead of creating a duplicate — save a new memo only when none fits. Always fill meta with retrieval cues and preview with a short public summary. To tag, first run search-tag (create-tag only if none fits) and pass its id — private memos may use only your private tags. For a shared project, use create-project-memo instead. The response includes a share_url field; for a private memo it explains there is no link (private memos cannot be shared) — never build one from id. The response may carry a recommendation with similar (near-duplicate memos in this scope — if any is truly the same, consolidate: merge into one, delete the extras with delete-memo) and suggested_tags (fitting tags for this memo — add the relevant ones, especially if it has none yet).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "content": "<content>",
      "meta": "<meta>",
      "preview": "<preview>",
      "changes": "<changes>"
    },
    "name": "create-private-memo"
  }
}

Input Schema

NameRequiredDescriptionDefault
metaYesRetrieval cues for finding this later: keywords, topics, questions or situations under which it should surface in search. Weighted highest in search — write the terms someone would actually query. Internal: never shown in search results, so it may include specifics.
tagsNoIds of your PRIVATE tags to attach (from search-tag / create-tag)
datesNoMoments this memo should resurface at: an event, a deadline, or an earlier reminder before it (add that as its own entry). An agent looking ahead finds the memo with search-memo `date_from`/`date_to`. Omit when the memo is not tied to a moment.
linksNoIds of your other PRIVATE memos (from search-memo) that are related to this one but cover a separate topic — e.g. a billing overview and the memo for each plan. Link instead of merging when both should stay separate. A link is one-way and belongs to this memo: the linked memo is not modified, it just lists this one under `linked_by`.
titleNoShort human label for the memo
changesYesOne short line, written as a plain statement of what this memo records — written to its change history and shown in your activity feed on the dashboard (e.g. "noted preferred flight times", "started a shopping list"). Do not prefix it with a label like "created:".
contentYesThe memory text — one coherent, self-contained piece of information. Plain text only, no Markdown formatting (no **bold**, headings, bullet lists or code fences).
previewYesA SHORT summary of the memo, max 200 characters. This is the ONLY body field shown in search results and may be exposed in public share links, so it MUST NOT contain any private, personal or sensitive data — keep it a safe, generic one-line description.
expires_inNoOptional lifetime for a TEMPORARY memo, given as a duration FROM NOW — "30m", "2h", "3d", "1w" (units m/h/d/w, max 365d). The memo auto-moves to the archive once it elapses. Always pass how LONG it should live, never an absolute date — the server anchors it to its own clock, so timezone mismatches cannot occur. Omit for a permanent memo. The response echoes the remaining lifetime in `expires_in`; tell the user how long the memo will live, not the date.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / dates / items / properties / at / description
      Previous value: -"ISO 8601 date and time WITH \"Z\" or an offset — \"2026-10-25T10:00:00+03:00\" or \"2026-10-25T07:00:00Z\". Stored and returned in UTC."New value: +"ISO 8601 date and time WITH \"Z\" or an offset — \"2026-10-25T10:00:00+03:00\" or \"2026-10-25T07:00:00Z\". Stored and returned in UTC. For a repeating date this is the FIRST occurrence."
    • addedInput schema / properties / dates / items / properties / repeat
      Added value: +{
      +  "description": "Makes the date recur — one entry instead of one per occurrence. Omit for a one-off moment.",
      +  "properties": {
      +    "type": {
      +      "description": "Repeat every day, week (same weekday as `at`), month (same day of month — the last day in shorter months) or year.",
      +      "enum": [
      +        "day",
      +        "week",
      +        "month",
      +        "year"
      +      ],
      +      "type": "string"
      +    },
      +    "until": {
      +      "description": "Last moment an occurrence may fall at, inclusive, same format as `at` — e.g. \"2026-12-05T23:59:59+03:00\". Omit to repeat forever.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "type"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / dates / items / properties / tz
      Added value: +{
      +  "description": "IANA time zone of the date, e.g. \"Europe/Berlin\". Always pass the user's own zone: it defaults to UTC, and a repeating date keeps its wall-clock time in this zone across daylight saving — a UTC repeat drifts by an hour of local time when it switches.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / dates
      Added value: +{
      +  "description": "Moments this memo should resurface at: an event, a deadline, or an earlier reminder before it (add that as its own entry). An agent looking ahead finds the memo with search-memo `date_from`/`date_to`. Omit when the memo is not tied to a moment.",
      +  "items": {
      +    "properties": {
      +      "at": {
      +        "description": "ISO 8601 date and time WITH \"Z\" or an offset — \"2026-10-25T10:00:00+03:00\" or \"2026-10-25T07:00:00Z\". Stored and returned in UTC.",
      +        "type": "string"
      +      },
      +      "title": {
      +        "description": "What happens at that moment, max 200 characters — e.g. \"Call with the design team\", \"Pay for the domain\".",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "at",
      +      "title"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "type": "array"
      +}
  3. First observed

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, and the description adds real behavior beyond them: share_url is always returned but there is no link for private memos, a recommendation block may return similar/suggested_tags, and private memos cannot be shared. Those disclosures are valuable, but it never covers failure modes such as tag-id rejection or what happens when required fields are malformed, keeping it below the top band for a 9-parameter mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and privacy scope are front-loaded, and most sentences carry non-obvious rules (one topic per memo, consolidation path, never build a share URL from id). It is a dense single block of roughly 230 words with some restatement of schema guidance for meta and preview, and bullet-style separation of the workflow versus response rules would make it easier to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter write tool with no output schema, it covers the full call lifecycle: pre-checks, required-field intent, tag resolution, alternative tool selection, and post-call handling of share_url and recommendation.similar/suggested_tags. Nothing an agent needs in order to invoke it correctly is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds procedural meaning the schema does not: tags must be ids obtained from search-tag/create-tag and must be private, meta must be populated with retrieval cues and preview with a public-safe summary. It also warns against using an absolute date for expires_in where the schema only says duration-from-now.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ("Save a PRIVATE memory to memocore") and immediately bounds scope: visible only to you, never shared, for personal facts/preferences/notes. It explicitly contrasts with create-project-memo for shared projects, so an agent can route without opening sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit pre-flight workflow: run search-memo first, merge into an existing memo with update-private-memo if one fits, create only when none does, and use create-project-memo for shared projects. Also states the tagging prerequisite chain (search-tag, then create-tag only if none fits) and that only private tags are permitted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.