Skip to main content
Glama

Try It

  • Cloud -- Use instantly at konbu-cloud.codenica.dev (free, no setup)

  • Self-hosted -- Run on your own server with Docker (see below)

Related MCP server: cairnos

What is konbu?

konbu is a personal digital planner — a Filofax-style system planner, digitized. A self-hostable Go binary that binds your memos, todos, schedule, and structured tables into one notebook, kept by an AI butler, and surfaces everything from a single search interface. It's yours alone — nothing is ever shared out. Not a replacement for Notion + Todoist + Calendar — a replacement for the act of searching four apps to find one thing.

What's different:

  • Native MCP server + CLI client -- Two parallel routes for the AI butler (Claude / Cursor / any MCP client) or shell / scripts to operate your planner.

  • Cross-resource full-text search -- One query across memos, todos, events, and structured tables. This is the core UX, not a side feature.

  • Structured tables (= table-memo, planned) -- Track blood pressure, household budgets, or inventory. Markdown can't express these; tables can.

  • BYOK AI chat -- Bring your own OpenAI/Anthropic API key, or use the included free tier.

  • Personal by design -- One notebook, for you only. Pulls in from outside (Google Calendar), never leaks out.

  • Self-hostable -- One Go binary, Docker compose, or use the hosted version.

End the state of having your day scattered across four different apps.

Features

  • Cross-resource Full-text Search -- Search across memos, todos, events, and structured tables in one query (core UX)

  • CLI & MCP Server -- Built-in CLI client and MCP server. AI agents like Claude and Cursor can read and write your data directly

  • AI Agent Chat -- "Add groceries to my todo" "What's on my schedule tomorrow?" in natural language. BYOK supported, free tier included

  • Memos -- Markdown notes with tagging, live preview

  • ToDo -- Inline task creation with due dates, tags, and notes

  • Calendar -- Monthly view with event CRUD and iCal import (personal, owner-only)

  • Structured Tables (= table-memo, planned) -- Track structured data (blood pressure, household budget, inventory) as rows × columns

  • Export/Import -- JSON export, Markdown ZIP export, iCal import

  • i18n -- English and Japanese

Quick Start

cp .env.example .env
docker compose up -d

Open http://localhost:8080 and create your account. The dev compose file sets DEV_USER=dev@local to skip registration.

Production (with Traefik)

# Edit .env with real credentials and your domain
docker compose -f docker-compose.prod.yml up -d

Native (without Docker)

# Prerequisites: Go 1.25+, Node.js 22+, PostgreSQL 16+

# Build frontend
cd web/frontend && npm ci && npm run build && cd ../..

# Build server
go build -o bin/server ./cmd/server

# Start (runs all SQL migrations automatically on boot)
DATABASE_URL="postgres://..." SESSION_SECRET="..." ./bin/server

Configuration

Variable

Required

Default

Description

DATABASE_URL

Yes

--

PostgreSQL connection string

SESSION_SECRET

Yes

dev fallback

Session signing key

PORT

No

8080

Server port

DEV_USER

No

--

Auto-login as this email (dev only)

OPEN_REGISTRATION

No

--

Set true to allow anyone to register (for Cloud)

BASE_URL

No

--

Public app URL used for OAuth callbacks

GOOGLE_CLIENT_ID

No

--

Enable Google OAuth login

GOOGLE_CLIENT_SECRET

No

--

Enable Google OAuth login

WEBHOOK_SECRET

No

--

GitHub Sponsors webhook secret

STRIPE_SECRET_KEY

No

--

Enable Stripe checkout and subscription billing

STRIPE_WEBHOOK_SECRET

No

--

Verify incoming Stripe webhook events

STRIPE_PRICE_MONTHLY

No

--

Stripe Price ID used for monthly Pro checkout

STRIPE_PRICE_YEARLY

No

--

Stripe Price ID used for yearly Pro checkout

GITHUB_FEEDBACK_TOKEN

No

--

GitHub token used to create anonymized feedback issues

GITHUB_FEEDBACK_REPO

No

--

Repository to receive feedback issues, e.g. krtw00/konbu

GITHUB_FEEDBACK_LABELS

No

--

Comma-separated labels added to forwarded feedback issues

AI_ENCRYPTION_KEY

No

--

64 hex chars used to encrypt BYOK AI keys

DEFAULT_AI_PROVIDER

No

openai

Server-side free-tier AI provider

DEFAULT_AI_API_KEY

No

--

Server-side free-tier AI key

DEFAULT_AI_ENDPOINT

No

--

Override free-tier provider endpoint

DEFAULT_AI_MODEL

No

--

Override free-tier provider model

R2_ACCESS_KEY_ID

No

--

Attachment upload credentials

R2_SECRET_ACCESS_KEY

No

--

Attachment upload credentials

R2_ENDPOINT

No

Cloudflare R2 default

Attachment storage endpoint

R2_BUCKET

No

konbu-attachments

Attachment storage bucket

R2_PUBLIC_URL

No

--

Optional public base URL for attachments

SMTP_HOST

No

--

SMTP relay host for reminder emails (e.g. smtp-relay.brevo.com). Notifications are disabled unless all five SMTP_* variables are set.

SMTP_PORT

No

--

SMTP relay port (typically 587 for STARTTLS)

SMTP_USERNAME

No

--

SMTP relay login

SMTP_PASSWORD

No

--

SMTP relay password / API key

SMTP_FROM

No

--

From address for outgoing reminder emails

NOTIFICATION_TICK_INTERVAL

No

1m

Notification sweep interval (Go duration, e.g. 30s, 2m)

Reminders / notifications

When the SMTP_* variables above are all set, the server starts a single in-process sweep loop that sends email reminders for upcoming events and due ToDos. Each user opts in via Settings (user_settings.notifications.enabled = true) and can override the recipient email, lead time, due-time, and timezone.

Notifications are a server-only feature — they run inside the API server process and require PostgreSQL. The MCP --standalone mode (SQLite) does not send reminders.

Docker Compose (prod) variables

Variable

Description

POSTGRES_PASSWORD

PostgreSQL password

KONBU_DOMAIN

Domain for Traefik TLS routing

CLI

The CLI is a standalone client that connects to a remote konbu server via API. Server code is not included in the CLI binary.

go install github.com/krtw00/konbu/cmd/konbu@latest

Setup

# Set environment variables (recommended: add to ~/.zshrc or ~/.bashrc)
export KONBU_API=https://konbu.example.com
export KONBU_API_KEY=your-api-key

# Or pass as flags
konbu --api https://... --api-key your-key memo list

Generate an API key in Settings > Security on the web UI.

Commands

All commands support --json flag for machine-readable output.

konbu memo list                        # List memos
konbu memo show <id>                   # Show memo content
konbu memo add "title" -c "content"    # Create memo (-c - for stdin)
konbu memo edit <id> --title "new"     # Update memo
konbu memo rm <id>                     # Delete memo

konbu todo list                        # List todos
konbu todo show <id>                   # Show todo details
konbu todo add "task" -t "tag1,tag2"   # Create todo
konbu todo add "task" -d 2025-04-01    # Create with due date
konbu todo edit <id> --desc "notes"    # Update todo
konbu todo done <id>                   # Mark done
konbu todo reopen <id>                 # Reopen
konbu todo rm <id>                     # Delete

konbu event list                       # List events
konbu event show <id>                  # Show event details
konbu event add "title" -s <RFC3339>   # Create event
konbu event edit <id> --title "new"    # Update event
konbu event rm <id>                    # Delete

konbu tag list                         # List tags
konbu tag rm <id>                      # Delete tag

konbu search "query"                   # Cross-search

konbu api-key list                     # List API keys
konbu api-key create "key-name"        # Create API key
konbu api-key rm <id>                  # Delete API key

konbu export json -o backup.json       # Export as JSON
konbu export markdown -o backup.zip    # Export as Markdown ZIP
konbu import ical calendar.ics         # Import iCal file

Short IDs (first 8 chars) can be used in place of full UUIDs.

MCP Server

konbu can run as a built-in MCP (Model Context Protocol) server in two modes — pick whichever fits.

Standalone mode (SQLite, no server required)

If you just want konbu as a local MCP backend for Claude Desktop, Cursor, or any MCP client, install the CLI and run it with --standalone. No PostgreSQL, no web server, no API key — everything is stored in a local SQLite file.

go install github.com/krtw00/konbu/cmd/konbu@latest
konbu mcp --standalone

Data is persisted at ~/.konbu/konbu.db by default. Override with --db /path/to/db.sqlite if needed.

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "konbu": {
      "command": "konbu",
      "args": ["mcp", "--standalone"]
    }
  }
}

Cursor accepts the same config at ~/.cursor/mcp.json (or via the settings UI).

Docker

A multi-arch image (linux/amd64, linux/arm64) is published to GitHub Container Registry. Pull it directly — no build step needed:

docker pull ghcr.io/krtw00/konbu-mcp:latest

For reproducible setups, pin to a release tag instead — e.g. docker pull ghcr.io/krtw00/konbu-mcp:v0.2.0.

Then point your MCP client at it. Data persists in a named volume:

{
  "mcpServers": {
    "konbu": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "-v", "konbu-data:/data", "ghcr.io/krtw00/konbu-mcp:latest"]
    }
  }
}

Prefer building from source? docker build -f docker/Dockerfile.mcp -t konbu-mcp . from the repo root produces the same image (CGO-free, distroless static, ~22 MB).

Standalone mode exposes memo / todo / calendar event CRUD plus cross-resource search. Tags, attachments, and AI chat are server-only (use the connected mode below for those).

Connected mode (talk to a konbu server)

If you're running a konbu server (self-hosted or konbu Cloud), point the MCP server at it over HTTP. You get the full feature set: tags, attachments, and AI chat.

  1. Install the konbu CLI binary (see CLI section above)

  2. Generate an API key in Settings > Security on the web UI

  3. Add konbu to your MCP client config:

{
  "mcpServers": {
    "konbu": {
      "command": "konbu",
      "args": ["mcp"],
      "env": {
        "KONBU_API": "http://localhost:8080",
        "KONBU_API_KEY": "your-api-key"
      }
    }
  }
}

Usage examples

After restarting your MCP client, interact with konbu in natural language:

  • "What's on my schedule tomorrow?"

  • "Add a dentist appointment next Friday at 1pm"

  • "Create a todo to buy groceries with tag 'shopping'"

  • "Show me notes tagged 'meeting' from last week"

  • "Mark the 'review PR' todo as done"

API

Base path: /api/v1

Resource

Endpoints

Auth

POST /auth/register, POST /auth/login, POST /auth/logout, GET /auth/setup-status, GET /auth/providers, GET /auth/google/login, GET /auth/google/callback

User

GET/PUT /auth/me, GET/PUT /auth/settings, POST /auth/change-password, POST /auth/delete-account

API Keys

GET/POST /api-keys, DELETE /api-keys/:id

Memos

GET/POST /memos, GET/PUT/DELETE /memos/:id, GET/POST /memos/:id/rows, POST /memos/:id/rows/batch, GET /memos/:id/rows/export, PUT/DELETE /memos/:id/rows/:rowId

ToDos

GET/POST /todos, GET/PUT/DELETE /todos/:id, PATCH /todos/:id/done, PATCH /todos/:id/reopen

Events

GET/POST /events, GET/PUT/DELETE /events/:id

Calendars

GET/POST /calendars, GET/PUT/DELETE /calendars/:id (owner-only)

Tags

GET/POST /tags, PUT/DELETE /tags/:id

Search

GET /search?q=...

Chat

GET/POST /chat/sessions, GET/PUT/DELETE /chat/sessions/:id, POST /chat/sessions/:id/messages, GET/PUT /chat/config

Attachments

POST /attachments, GET /attachments/*

Export

GET /export/json, GET /export/markdown

Import

POST /import/ical

Development

# Start PostgreSQL
docker compose up -d postgres

# Frontend dev server
cd web/frontend && npm run dev

# Run server
DEV_USER=dev@local go run ./cmd/server

# Build CLI
go build -o bin/konbu ./cmd/konbu

# Run tests
go test ./...
cd web/frontend && npm test
cd web/frontend && npm run test:e2e

Project Structure

cmd/
  server/       # API server
  konbu/        # CLI client
internal/
  handler/      # HTTP handlers
  service/      # Business logic
  repository/   # DB access (sqlc)
  middleware/   # Auth, logging
  client/       # API client (used by CLI)
  mcp/          # MCP server
web/frontend/   # React + Vite SPA
sql/            # Schema and migrations
docker/         # Dockerfile

Roadmap

  • Browser push reminders (email reminders are already supported when SMTP_* env is configured)

  • Mobile UI improvements

  • CI test coverage

  • AI chat enhancements (context improvements, new model support)

Sponsors

If you find konbu useful, consider sponsoring the project.

License

MIT

Available Tools

18 tools
create_eventA

Create a calendar event with a fixed start time (and optional end time). Use this for time-bound items such as meetings or appointments; use create_todo for deadline-style tasks without a specific time, and create_memo for free-form notes. Returns the created event with its assigned UUID. Example: {"title":"Dentist","start_at":"2026-06-15T13:00:00+09:00","end_at":"2026-06-15T14:00:00+09:00","tags":["health"]} → {"id":"...","title":"Dentist",...}. Side effects: writes a new record on each call — calling twice creates two events. Not idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
all_dayNoIf true, the event spans the whole day(s); the time portion of start_at / end_at is ignored.
descriptionNoLonger description or notes for the event (optional).
end_atNoEnd datetime in ISO 8601 with timezone offset (optional). Must be after start_at.
start_atYesStart datetime in ISO 8601 with timezone offset, e.g. "2026-06-15T13:00:00+09:00". Required.
tagsNoTag names to attach (optional).
titleYesEvent title. Required.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Clearly states side effects ('writes a new record on each call — calling twice creates two events. Not idempotent.') and returns created event with UUID. No contradictions.

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

Conciseness5/5

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

Two paragraphs: first sentence states purpose, then usage guidelines, then example, then side effects. No wasted words, well front-loaded.

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?

With 6 parameters, 2 required, no output schema, and no annotations, description covers purpose, usage differentiation, side effects, and return value (UUID + example). Adequately complete for agent decision-making.

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 schema already describes parameters. Description adds value with a concrete example showing parameter format and combination, but otherwise does not elaborate beyond schema. Minor added enrichment.

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?

States 'Create a calendar event with a fixed start time (and optional end time)' and distinguishes from create_todo and create_memo by specifying use cases. Clear verb+resource+scope.

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?

Explicitly says when to use this tool ('time-bound items such as meetings or appointments') and when not, naming alternatives create_todo and create_memo with their purposes.

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

create_memoA

Create a new memo (free-form Markdown note) in the konbu planner. Returns the created memo with its assigned UUID. Use this for notes without a due date or completion state; use create_todo for actionable tasks, and create_event for time-bound calendar items. Example: {"title":"Q3 plans","content":"## Goals\n- ship MCP","tags":["work","planning"]} → {"id":"...","title":"Q3 plans",...}. Side effects: writes a new record on each call — calling twice creates two memos. Not idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoMemo body in Markdown. Supports headings, lists, code blocks, and inline tag references such as #project. Optional.
tagsNoTag names to attach to the memo. Tags are created on-the-fly if they don't exist yet. Optional.
titleYesMemo title — short, indexed for search. Required.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses side effects ('writes a new record on each call — calling twice creates two memos. Not idempotent.') and return value (memo with UUID). No annotations, so description carries full burden and does so thoroughly.

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

Conciseness5/5

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

Two concise sentences plus an example that illustrates usage. No unnecessary words.

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?

Given 3 parameters (1 required) and no output schema, description covers return value details (UUID) and side effects. Complete for the tool's complexity.

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

Parameters3/5

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

Input schema has 100% coverage, so baseline is 3. Description adds an example but no additional parameter details beyond schema.

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?

Clearly states 'Create a new memo (free-form Markdown note)' and distinguishes from siblings create_todo and create_event by specifying the type of content.

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?

Explicitly advises when to use this tool ('notes without a due date or completion state') and when to use alternatives ('use create_todo for actionable tasks, and create_event for time-bound calendar items').

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

create_todoA

Create a new todo (actionable task) in the konbu planner. Returns the created todo with its assigned UUID and status="open". Use this for tasks that need completion tracking; use create_memo for free-form notes, and create_event for items with a specific start time. Example: {"title":"Buy groceries","due_date":"2026-06-01","tags":["shopping"]} → {"id":"...","title":"Buy groceries","status":"open",...}. Side effects: writes a new record on each call — calling twice creates two todos. Not idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNoLonger description or notes for the task (optional).
due_dateNoDue date in YYYY-MM-DD format, e.g. "2026-06-15". Optional.
tagsNoTag names to attach (optional). Tags are created on-the-fly if missing.
titleYesTodo title — short imperative phrase, e.g. "Buy groceries". Required.

TDQS

A4.9/5.0
Behavior5/5

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

Despite no annotations, the description discloses key behaviors: it writes a new record on each call, is not idempotent, and returns the todo with an assigned UUID and status. This exceeds basic expectations for a create tool.

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

Conciseness5/5

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

The description is concise yet comprehensive, front-loading the main purpose, then differentiating from siblings, providing an example, and noting side effects. No unnecessary text.

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?

Given the tool's simplicity, the description covers all essential aspects: purpose, usage, parameters, return value, and side effects. It is sufficient for an agent to invoke correctly without additional information.

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%, but the description adds value by explaining that tags are created on-the-fly if missing and provides a concrete example. This goes beyond merely restating schema fields.

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?

The description clearly states the tool creates a todo (actionable task) and returns the created object with UUID and status. It explicitly distinguishes from siblings create_memo and create_event, making the purpose unambiguous.

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?

The description provides explicit guidance on when to use this tool vs. alternatives (notes vs. events) and notes that it is not idempotent, helping the agent decide correctly.

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

delete_eventA

Permanently delete a calendar event by ID. This action cannot be undone. Example: {"id":"ghi09876"} → "deleted". Side effects: destructive, irreversible. The first call deletes; subsequent calls with the same id error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the event to delete.

TDQS

A4.1/5.0
Behavior5/5

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

Explicitly notes destructive, irreversible side effects and that subsequent calls with the same ID error. Since no annotations are provided, the description fully covers behavioral traits.

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

Conciseness5/5

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

Three sentences with no waste: purpose, irreversibility warning, example and side effect. Front-loaded with core action.

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 simple one-parameter tool with no annotations or output schema, the description covers purpose, side effects, example, and error behavior. Complete enough for correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds an example but does not provide additional semantics beyond the schema's description of 'UUID of the event to delete'.

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?

Clearly states 'Permanently delete a calendar event by ID', specifying verb and resource. Distinguishes from sibling tools like create_event, update_event, list_events, and delete_memo/todo.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like update_event for cancellation. Only mentions irreversibility, but does not provide context for selection.

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

delete_memoA

Permanently delete a memo by ID. This action cannot be undone. Returns the string "deleted" on success. Example: {"id":"abc12345"} → "deleted". Side effects: destructive, irreversible. The first call deletes; subsequent calls with the same id error because the memo no longer exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the memo to delete.

TDQS

A4.2/5.0
Behavior5/5

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

No annotations provided, but description fully discloses destructive, irreversible nature, return value, and error on repeated calls.

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?

Clear and front-loaded; each sentence adds value, though slightly verbose.

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?

Complete for a simple delete tool with one parameter; covers return value and behavior.

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

Parameters3/5

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

Schema coverage 100% with clear description of 'id' as UUID; description adds example but no significant extra meaning.

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?

Description states specific verb and resource ('permanently delete a memo by ID'), distinguishes from siblings like delete_event and delete_todo.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives. Implies usage for deletion but lacks guidance on when not to use or alternative actions.

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

delete_todoA

Permanently delete a todo by ID. This action cannot be undone. Prefer mark_todo_done if you only want to record completion — completed todos remain searchable and visible in history. Example: {"id":"def67890"} → "deleted". Side effects: destructive, irreversible. The first call deletes; subsequent calls with the same id error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the todo to delete.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: 'destructive, irreversible', 'first call deletes; subsequent calls error'. This clearly communicates that the tool is a mutation with side effects and specific error handling.

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

Conciseness5/5

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

The description is concise (three sentences plus example and side effects), front-loaded with the core action, and every sentence adds value: purpose, alternative, example, and behavioral notes.

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?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description fully covers its purpose, usage guidance, side effects, and error behavior, leaving no gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100% (the id parameter is fully described as 'UUID of the todo to delete'). The description adds an example but does not significantly enhance meaning beyond the schema, so baseline score of 3 is appropriate.

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?

The description clearly states that the tool permanently deletes a todo by ID, using a specific verb ('delete') and resource ('todo'). It distinguishes itself from the sibling tool 'mark_todo_done' by explicitly recommending that alternative for mere completion.

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?

The description provides explicit when-to-use ('permanently delete'), when-not-to-use ('prefer mark_todo_done'), and details on error behavior ('subsequent calls with the same id error'). This gives the AI agent clear decision criteria.

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

get_eventA

Fetch the full details of a single calendar event by ID, including description, all-day flag, and tags. Example: {"id":"ghi09876"} → {"id":"ghi09876-...","title":"...","description":"...","start_at":"...","end_at":"...","all_day":false,"tags":[...]}. Side effects: read-only. Errors if the id does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEvent UUID. Short IDs (first 8 characters) are also accepted.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses read-only side effects and error condition (id not found). It does not cover permissions or rate limits, but for a simple read operation, these are less critical. The disclosure is adequate and adds value beyond the schema.

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

Conciseness5/5

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

The description is concise (two sentences plus example) with no wasted words. It front-loads the purpose, then provides an illustrative example, and ends with behavioral notes. Every sentence serves a purpose.

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?

Despite lacking an output schema, the description includes a detailed example of the return object listing all fields. It also covers the error condition. For a single-parameter get tool, this provides sufficient context for an agent to invoke and interpret the response.

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 has 100% coverage of parameter description, so baseline is 3. The description adds an example showing the parameter in context and the return shape, which enriches understanding beyond the schema's description of the id field.

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?

The description clearly states 'Fetch the full details of a single calendar event by ID', specifying the action and resource. It lists included fields (description, all-day flag, tags) and distinguishes from siblings like list_events (multiple events) and other get tools.

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

Usage Guidelines4/5

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

The description implies usage when a single event's full details are needed by ID. It does not explicitly exclude other scenarios, but the context of siblings (list_events for multiple, other get tools) makes the usage context clear.

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

get_memoA

Fetch the full details of a single memo by ID, including the Markdown content body. Typically called after list_memos or search to read a memo's body. Example: {"id":"abc12345"} returns {"id":"abc12345-...","title":"...","content":"# heading...","tags":[...]}. Side effects: read-only. Errors if the id does not exist or belongs to another user.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMemo UUID. Short IDs (first 8 characters of the UUID) are also accepted.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description explicitly states 'Side effects: read-only' and 'Errors if the id does not exist or belongs to another user.' This provides good transparency beyond the tool's name.

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

Conciseness5/5

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

The description is four sentences with no wasted words: purpose, usage context, example, and error conditions. It is front-loaded and efficient.

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?

Given no output schema, the description explains the return includes Markdown content and an example structure. It covers common errors and usage context, making it complete for a single-parameter read tool.

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%, and the description provides an example showing the id parameter format and return structure, adding value beyond the schema's description of the parameter.

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?

The description clearly states 'Fetch the full details of a single memo by ID, including the Markdown content body.' It distinguishes from sibling tools list_memos and search by specifying it is called after them to read a memo's body.

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

Usage Guidelines4/5

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

It says 'Typically called after list_memos or search to read a memo's body.' and provides an example and error conditions. It does not explicitly state when not to use it, but the context is clear.

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

get_todoA

Fetch the full details of a single todo by ID, including description, status, due date, and tags. Example: {"id":"def67890"} → {"id":"def67890-...","title":"...","description":"...","status":"open","due_date":"2026-06-01","tags":[...]}. Side effects: read-only. Errors if the id does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTodo UUID. Short IDs (first 8 characters) are also accepted.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description adds value by explicitly stating 'Side effects: read-only' and 'Errors if the id does not exist'. It also provides an example output, giving sufficient behavioral context for a read operation. Could optionally mention rate limits or caching, but not required.

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

Conciseness5/5

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

Three efficient sentences: purpose/fields, example, and side effects/errors. No redundant information, perfectly front-loaded with the core action.

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

Completeness4/5

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

For a simple single-resource fetch tool with no output schema, the description covers input format, what fields are returned via example, and error conditions. It is adequately complete, though adding explicit mention of return type could push it to 5.

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

Parameters3/5

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

Schema coverage is 100% and already documents the 'id' parameter. The description adds that short IDs (first 8 characters) are accepted and provides an example, which is minimal extra value. Baseline 3 is appropriate since schema does most of the work.

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?

The description clearly states 'Fetch the full details of a single todo by ID', which is a specific verb and resource. It lists the fields returned (description, status, due date, tags) and provides an example, making it easy to distinguish from sibling tools like list_todos or update_todo.

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

Usage Guidelines4/5

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

The description implies usage when you have a specific todo ID, and mentions that it errors if the ID doesn't exist. However, it does not explicitly contrast with alternatives like list_todos for fetching multiple todos, leaving a slight gap in when-not-to-use guidance.

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

list_eventsA

List calendar events belonging to the user, ordered by start time. Returns id, title, start_at, end_at, all_day flag, and tags for each event. For tasks without a fixed time use list_todos; for free-form notes use list_memos. Example: returns [{"id":"ghi09876-...","title":"Standup","start_at":"2026-05-28T10:00:00+09:00","end_at":"2026-05-28T10:15:00+09:00","all_day":false,"tags":["work"]}, ...]. Workflow: typically followed by get_event(id) for full details or update_event(id, ...) to reschedule. Side effects: read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Discloses read-only side effect and ordering by start time. With no annotations, the description carries full burden; it provides key behavioral traits but could mention pagination or date range limitations.

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

Conciseness5/5

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

Front-loaded with purpose, each sentence adds value (example, workflow, side effects). No wasted words.

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 zero-parameter tool with no output schema, the description covers all needed context: purpose, return fields, example, sibling alternatives, workflow, and side effects.

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

Parameters3/5

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

Input schema has zero parameters, schema description coverage is 100%. Baseline 3 is appropriate; description does not need to add parameter details, but it adds value by listing returned fields.

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?

Clearly states verb 'list', resource 'calendar events', and scope 'belonging to the user, ordered by start time'. Additionally distinguishes from sibling tools list_todos and list_memos, fulfilling a specific verb+resource+scope criterion.

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?

Explicitly instructs when to use alternatives ('For tasks without a fixed time use list_todos; for free-form notes use list_memos') and describes typical workflow ('typically followed by get_event(id) or update_event(id, ...)').

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

list_memosA

List all memos (free-form Markdown notes) belonging to the user, newest first. Returns id, title, tags, and timestamps for each memo, but NOT the full Markdown body — call get_memo to read a specific memo's body. Memos have no status or due date; for actionable tasks use list_todos. Example: returns [{"id":"abc12345-...","title":"Daily notes","tags":["work"],"created_at":"2026-05-27T..."}, ...]. Workflow: typically followed by get_memo(id) when the user wants to read a specific memo's content. Side effects: read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A5/5.0
Behavior5/5

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

Discloses read-only side effect, return fields (id, title, tags, timestamps, but not body), and ordering (newest first). No annotations to contradict.

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

Conciseness5/5

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

Concise yet comprehensive; each sentence adds value (purpose, limitations, example, workflow, side effects). No wasted words.

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?

Fully covers what the tool does, its output, limitations, and relationship to siblings. No output schema needed; description is self-sufficient.

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

Parameters5/5

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

No parameters, so schema coverage is 100% (empty). Description adds value by explaining what the tool returns and behavior, exceeding the baseline.

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?

The description clearly states it lists memos (free-form Markdown notes) for the user, newest first. It distinguishes from siblings like get_memo (for full body) and list_todos (for actionable tasks).

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?

Explicitly tells when not to use (for actionable tasks use list_todos) and workflow hint to call get_memo for full body. No ambiguity.

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

list_todosA

List all todos (actionable tasks with status and optional due date), newest first. Returns id, title, status (open / done), due_date, and tags for each todo. For free-form notes without status use list_memos; for time-bound calendar items use list_events. Example: returns [{"id":"def67890-...","title":"Buy groceries","status":"open","due_date":"2026-06-01","tags":["shopping"]}, ...]. Workflow: typically followed by mark_todo_done(id) when the user reports completion, or get_todo(id) to read the full description. Side effects: read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

In the absence of annotations, the description explicitly states 'Side effects: read-only', disclosing the tool's safety profile. It also describes the output format and ordering, providing sufficient behavioral context.

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?

The description is well-structured and front-loaded with purpose, but could be slightly more concise. Every sentence adds value, but the example and workflow sentences could be integrated.

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?

Given no parameters and no output schema, the description covers the tool's purpose, output, ordering, side effects, sibling differentiation, and typical workflow, making it highly complete.

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?

With zero parameters and 100% schema coverage, the description doesn't need to add param details. It adds value by explaining the return structure and example, meeting the baseline expected.

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?

The description clearly specifies the verb 'list' and resource 'todos', differentiating them as actionable tasks with status and due dates, and explicitly distinguishes from sibling tools list_memos and list_events.

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

Usage Guidelines4/5

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

The description provides explicit alternatives (list_memos, list_events) and a typical workflow (followed by mark_todo_done or get_todo). While it doesn't exhaustively cover all scenarios, it gives strong context for when to use this tool.

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

mark_todo_doneA

Mark a todo as completed (status="done"). Convenience shortcut for the most common state transition; equivalent to update_todo with status="done" but communicates intent more clearly. Returns the string "marked as done" on success. Example: {"id":"def67890"} → "marked as done". Side effects: idempotent — calling on an already-completed todo is a no-op that still returns success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the todo to mark as done.

TDQS

A4.9/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses behavior: it returns the string 'marked as done' on success and is idempotent (calling on an already-completed todo is a no-op). This meets the transparency burden.

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

Conciseness5/5

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

The description is concise with three sentences: purpose, usage equivalence, return/example, and side effects. Each sentence adds value, and key info is front-loaded.

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 simple one-parameter tool with no output schema, the description covers all necessary aspects: what it does, how it relates to other tools, return format, and side effects. It is complete without missing critical details.

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?

The schema provides 100% coverage for the single 'id' parameter with a description. The description adds an example and context, slightly enhancing understanding. Baseline is 3 due to high coverage, but the example pushes it to 4.

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?

The description clearly states the tool's purpose: 'Mark a todo as completed (status="done")'. It distinguishes itself from sibling tools like update_todo and reopen_todo by describing it as a convenience shortcut for the most common state transition.

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?

The description provides explicit usage guidance: it is a convenience shortcut equivalent to update_todo with status='done' but communicates intent more clearly. It also mentions idempotency, which guides the agent on when it is safe to use.

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

reopen_todoA

Reopen a completed todo (transition status from "done" back to "open"). Use this when the user wants to undo a completion. Returns the string "reopened" on success. Example: {"id":"def67890"} → "reopened". Side effects: idempotent — calling on an already-open todo is a no-op that still returns success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the completed todo to reopen.

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description fully carries the burden. It discloses idempotence (calling on already-open todo is a no-op but returns success) and the return value 'reopened', offering comprehensive behavioral insights.

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

Conciseness5/5

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

Three sentences convey the action, usage, and side effects with an example. No unnecessary words; highly efficient.

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 simple tool with one parameter, the description covers operation, conditions, idempotency, and return value. No gaps given the complexity and available schema.

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

Parameters3/5

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

Schema coverage is 100% with a good description for the 'id' parameter. The tool description does not add new semantics beyond the schema, but the example with a UUID is helpful. Baseline 3 is appropriate.

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?

The description clearly states the tool reopens a completed todo by transitioning status from 'done' to 'open'. It distinguishes itself from sibling tools like mark_todo_done and create_todo by specifying the exact action.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this when the user wants to undo a completion', providing clear context. It lacks explicit mention of alternatives but the sibling list includes mark_todo_done, implying the opposite. The example and side effects further clarify usage.

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

update_eventA

Update an existing calendar event. Only the fields provided are modified; omitted fields are left unchanged. The tags array (if provided) REPLACES the existing tag set. Returns the updated event. Example: {"id":"ghi09876","start_at":"2026-06-16T13:00:00+09:00","end_at":"2026-06-16T14:00:00+09:00"} reschedules the event by one day. Side effects: idempotent for the same input; only specified fields change. Errors if the id does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
all_dayNoSet the all-day flag (optional).
descriptionNoNew description (optional).
end_atNoNew end datetime in ISO 8601 with timezone offset (optional). Must be after start_at.
idYesUUID of the event to update. Required.
start_atNoNew start datetime in ISO 8601 with timezone offset, e.g. "2026-06-15T13:00:00+09:00" (optional).
tagsNoNew tag list (optional). Replaces existing tags entirely.
titleNoNew title (optional).

TDQS

A4.2/5.0
Behavior4/5

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

Despite no annotations, the description discloses key traits: partial update (only provided fields change), tags replacement, idempotency, and error condition for nonexistent id. It also includes an example. This is comprehensive, though could mention permission or concurrency aspects.

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

Conciseness5/5

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

The description is three sentences plus an example, front-loading the key purpose and update behavior. No redundant information; every sentence adds value.

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

Completeness4/5

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

Given 7 parameters and no output schema, the description adequately covers behavior, side effects, and error condition. It explains return value ('Returns the updated event'). Minor missing details like full error handling or pagination, but sufficient for the tool's complexity.

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 covers 100% of parameters with descriptions. The tool description adds value by explaining partial update semantics and tag replacement behavior, which goes beyond raw schema definitions.

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?

The description clearly states 'Update an existing calendar event,' specifying the verb and resource. It also explains partial update behavior, distinguishing it from create_event (creation) and get_event (reading).

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

Usage Guidelines3/5

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

The description implies when to use (to modify an existing event) but does not explicitly state when not to use or compare with sibling tools like delete_event or create_event. It provides functional behavior but lacks explicit alternative guidance.

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

update_memoA

Update an existing memo's title, content, and/or tags. Only the fields provided are modified; omitted fields are left unchanged. Note that the tags array (if provided) REPLACES the existing tag set — pass the full desired list, not a delta. Returns the updated memo. Example: {"id":"abc12345","title":"New title"} renames the memo and leaves content/tags untouched. Side effects: idempotent for the same input; only specified fields change. Errors if the id does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoNew Markdown body (optional). Replaces the existing body entirely.
idYesUUID of the memo to update. Required.
tagsNoNew tag list (optional). Replaces existing tags entirely — pass the full desired list.
titleNoNew title (optional).

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are present, so the description fully discloses behavior: idempotent for same input, only specified fields change, errors if id does not exist. This provides adequate transparency for an update operation.

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

Conciseness5/5

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

The description is two sentences plus an example, efficiently conveying purpose and key details. It is well-structured and front-loaded.

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?

Given the tool's simplicity (4 parameters, no output schema), the description covers return behavior, side effects, and parameter semantics comprehensively. No gaps remain.

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

Parameters5/5

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

Schema description coverage is 100%, and the description adds crucial context like 'tags array replaces existing tags entirely' and an example. This adds significant meaning beyond the schema.

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?

The description clearly specifies the verb 'update' and the resource 'memo', listing the updatable fields. It distinguishes from siblings like create_memo, get_memo, and delete_memo.

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

Usage Guidelines4/5

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

The description explains that only provided fields are modified and that tags replace the entire set. It does not explicitly mention when not to use or compare to alternatives, but the context from sibling tools is sufficient.

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

update_todoA

Update an existing todo's fields. Only the fields provided are modified; omitted fields are left unchanged. For toggling completion state alone, prefer mark_todo_done / reopen_todo for clearer intent; use update_todo when you also need to change title, description, due_date, or tags. The tags array (if provided) REPLACES the existing tag set. Example: {"id":"def67890","due_date":"2026-07-01","description":"Updated context"} changes only those two fields. Side effects: idempotent for the same input; only specified fields change. Errors if the id does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNoNew description (optional).
due_dateNoDue date in YYYY-MM-DD format, e.g. "2026-06-15" (optional).
idYesUUID of the todo to update. Required.
statusNoCompletion status: "open" (incomplete) or "done" (completed). Prefer mark_todo_done / reopen_todo for status-only changes.
tagsNoNew tag list (optional). Replaces existing tags entirely.
titleNoNew title (optional).

TDQS

A4.9/5.0
Behavior5/5

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

Discloses partial update semantics, tag replacement, idempotence, and error handling ('Errors if the id does not exist'). No annotations provided, so description carries full burden.

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

Conciseness5/5

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

Concise three-sentence description plus example. Front-loaded key behavior, no redundant information.

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?

Given no output schema, the description covers all needed aspects: side effects, error handling, usage guidance, and parameter behavior. No gaps.

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% and descriptions are clear. The description adds value by summarizing partial update behavior, clarifying tag replacement, and providing an example, which aids understanding beyond schema.

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?

Description clearly states 'Update an existing todo's fields' and distinguishes from siblings mark_todo_done/reopen_todo by specifying when to use each.

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?

Explicitly states when to use update_todo vs alternatives ('prefer mark_todo_done / reopen_todo for clearer intent'), describes partial update behavior, idempotence, and error condition.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.4
    • Changedsearch1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Search keyword. Matches against titles, content/description bodies, and tag names. Whitespace separates terms and is treated as AND."New value: +"Search keyword. Matches against titles, content/description bodies, and tag names. Whitespace separates terms and is AND-combined."
  2. 18 tool updatesv0.1.3
    • Changedcreate_event6 fields changed
      • addedInput schema / properties / all_day / description
        Added value: +"If true, the event spans the whole day(s); the time portion of start_at / end_at is ignored."
      • addedInput schema / properties / description / description
        Added value: +"Longer description or notes for the event (optional)."
      • changedInput schema / properties / end_at / description
        Previous value: -"ISO 8601"New value: +"End datetime in ISO 8601 with timezone offset (optional). Must be after start_at."
      • changedInput schema / properties / start_at / description
        Previous value: -"ISO 8601"New value: +"Start datetime in ISO 8601 with timezone offset, e.g. \"2026-06-15T13:00:00+09:00\". Required."
      • addedInput schema / properties / tags / description
        Added value: +"Tag names to attach (optional)."
      • addedInput schema / properties / title / description
        Added value: +"Event title. Required."
    • Changedcreate_memo3 fields changed
      • addedInput schema / properties / content / description
        Added value: +"Memo body in Markdown. Supports headings, lists, code blocks, and inline tag references such as #project. Optional."
      • addedInput schema / properties / tags / description
        Added value: +"Tag names to attach to the memo. Tags are created on-the-fly if they don't exist yet. Optional."
      • addedInput schema / properties / title / description
        Added value: +"Memo title — short, indexed for search. Required."
    • Changedcreate_todo4 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Longer description or notes for the task (optional)."
      • changedInput schema / properties / due_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Due date in YYYY-MM-DD format, e.g. \"2026-06-15\". Optional."
      • addedInput schema / properties / tags / description
        Added value: +"Tag names to attach (optional). Tags are created on-the-fly if missing."
      • addedInput schema / properties / title / description
        Added value: +"Todo title — short imperative phrase, e.g. \"Buy groceries\". Required."
    • Changeddelete_event1 field changed
      • addedInput schema / properties / id / description
        Added value: +"UUID of the event to delete."
    • Changeddelete_memo1 field changed
      • addedInput schema / properties / id / description
        Added value: +"UUID of the memo to delete."
    • Changeddelete_todo1 field changed
      • addedInput schema / properties / id / description
        Added value: +"UUID of the todo to delete."
    • Changedget_event1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Event UUID. Short IDs (first 8 characters) are also accepted."
    • Changedget_memo1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"メモID"New value: +"Memo UUID. Short IDs (first 8 characters of the UUID) are also accepted."
    • Changedget_todo1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Todo UUID. Short IDs (first 8 characters) are also accepted."
    • Changedlist_events1 field changed
      • removedInput schema / description
        Removed value: -"イベント一覧"
    • Changedlist_memos1 field changed
      • removedInput schema / description
        Removed value: -"メモ一覧"
    • Changedlist_todos1 field changed
      • removedInput schema / description
        Removed value: -"ToDo一覧"
    • Changedmark_todo_done1 field changed
      • addedInput schema / properties / id / description
        Added value: +"UUID of the todo to mark as done."
    • Changedreopen_todo1 field changed
      • addedInput schema / properties / id / description
        Added value: +"UUID of the completed todo to reopen."
    • Changedsearch1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"検索キーワード"New value: +"Search keyword. Matches against titles, content/description bodies, and tag names. Whitespace separates terms and is treated as AND."
    • Changedupdate_event7 fields changed
      • addedInput schema / properties / all_day / description
        Added value: +"Set the all-day flag (optional)."
      • addedInput schema / properties / description / description
        Added value: +"New description (optional)."
      • addedInput schema / properties / end_at / description
        Added value: +"New end datetime in ISO 8601 with timezone offset (optional). Must be after start_at."
      • addedInput schema / properties / id / description
        Added value: +"UUID of the event to update. Required."
      • addedInput schema / properties / start_at / description
        Added value: +"New start datetime in ISO 8601 with timezone offset, e.g. \"2026-06-15T13:00:00+09:00\" (optional)."
      • addedInput schema / properties / tags / description
        Added value: +"New tag list (optional). Replaces existing tags entirely."
      • addedInput schema / properties / title / description
        Added value: +"New title (optional)."
    • Changedupdate_memo4 fields changed
      • addedInput schema / properties / content / description
        Added value: +"New Markdown body (optional). Replaces the existing body entirely."
      • addedInput schema / properties / id / description
        Added value: +"UUID of the memo to update. Required."
      • addedInput schema / properties / tags / description
        Added value: +"New tag list (optional). Replaces existing tags entirely — pass the full desired list."
      • addedInput schema / properties / title / description
        Added value: +"New title (optional)."
    • Changedupdate_todo6 fields changed
      • addedInput schema / properties / description / description
        Added value: +"New description (optional)."
      • addedInput schema / properties / due_date / description
        Added value: +"Due date in YYYY-MM-DD format, e.g. \"2026-06-15\" (optional)."
      • addedInput schema / properties / id / description
        Added value: +"UUID of the todo to update. Required."
      • addedInput schema / properties / status / description
        Added value: +"Completion status: \"open\" (incomplete) or \"done\" (completed). Prefer mark_todo_done / reopen_todo for status-only changes."
      • addedInput schema / properties / tags / description
        Added value: +"New tag list (optional). Replaces existing tags entirely."
      • addedInput schema / properties / title / description
        Added value: +"New title (optional)."
  3. 18 tool updatesv0.1.0
    • First observedcreate_event
    • First observedcreate_memo
    • First observedcreate_todo
    • First observeddelete_event
    • First observeddelete_memo
    • First observeddelete_todo
    • First observedget_event
    • First observedget_memo
    • First observedget_todo
    • First observedlist_events
    • First observedlist_memos
    • First observedlist_todos
    • First observedmark_todo_done
    • First observedreopen_todo
    • First observedsearch
    • First observedupdate_event
    • First observedupdate_memo
    • First observedupdate_todo

TDQS

A4.5/5.0
Disambiguation5/5

Each tool targets a distinct resource (event, memo, todo) and action (create, get, list, update, delete, mark done, reopen). The descriptions explicitly differentiate between resource types, eliminating any ambiguity.

Naming Consistency4/5

All tools follow a verb_noun pattern (e.g., create_event, delete_todo), but list operations use plural nouns (list_events, list_memos, list_todos) while other operations use singular, causing a minor inconsistency.

Tool Count5/5

With 18 tools covering CRUD for three resource types plus status transitions and a cross-resource search, the count is well-scoped and each tool serves a clear, necessary purpose.

Completeness5/5

The tool set provides full lifecycle management for events, memos, and todos (create, read, update, delete) plus status toggles and search. No obvious gaps exist for the planner domain.

Maintenance

ActivityStale
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.
    6
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local MCP server for CairnOS, a local-first productivity app. Exposes 13 tools that let Claude read and write the same local SQLite "brain" the app uses — create and update tasks, projects, reminders, ideas, and notes; classify natural-language brain dumps; and query overdue/today tasks and project context.
    15
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Task and project management MCP server with OAuth for Claude Desktop, Cursor bridge, semantic search, staged write approval
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/krtw00/konbu'

If you have feedback or need assistance with the MCP directory API, please join our Discord server