Skip to main content
Glama
andreasd083

amazing-marvin-complete-mcp

create_category_or_project

Create a Marvin category or project by title and kind, including labels and a parent, with scheduling, priority, frog and date fields limited to projects.

Instructions

Create a category (via /doc/create, Full Access Token) or a project (via /addProject). Categories can contain categories; projects cannot. day/due_date/priority/frog are rejected for kind='category' for a structural reason, not a technical one: a category can never be completed or checked off, and deadline, scheduling, priority and frog belong to things that can be finished — projects and tasks. The API accepts the fields on categories (live-tested 2026-09-11) but they are not meaningful there (rule 2026-09-11). label_ids applies to both categories and projects. startDate/endDate cannot be set at creation (/addProject ignores them, verified live 2026-08-29) — use update_category_or_project afterwards.

Note: project titles must not contain '#word' — /addProject has the same corruption bug as /addTask (the string is stored unresolved as parentId and the project becomes invisible) but ignores the X-Auto-Complete header (verified against the live API 2026-08-20), so the client blocks it locally before any API call. Category titles are unaffected (/doc/create parses nothing).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dayNoProjects ONLY: schedule on YYYY-MM-DD or 'today' (blocked for categories — a category is never completed)
frogNoProjects ONLY: frog marker 1=normal, 2=baby, 3=monster
iconNoIcon name with a library prefix, e.g. 'lucide-Rocket' (Lucide, PascalCase) or 'huge-happy' (verified in the app 2026-08-29); the app's picker also allows emoji. Categories ONLY — projects NEVER render their own icon (the flag stays; only the color is used)
kindYesKind
noteNoNote
colorNoColor '#rrggbb'. Categories ONLY at creation — /addProject ignores the field (verified live 2026-08-29); set project color with update_category_or_project afterwards
titleYesName
due_dateNoProjects ONLY: deadline YYYY-MM-DD (blocked for categories — a category is never completed)
priorityNoProjects ONLY: priority as a string — high=Most important (red), mid=Very important (orange), low=Important (yellow, the one-star level — NOT the app's 'Low priority', which projects do not have). Projects do not use isStarred (verified live 2026-08-29; mapping verified against the app's code 2026-08-30)
label_idsNoLabel IDs (from get_labels) — categories AND projects: categories have labels, stored in the same field as projects' and rendered in the app (live-tested + verified in the app 2026-09-11)
parent_idNoID of the parent category, or 'root' for the top levelroot
review_dateNoReview date YYYY-MM-DD (Review Date strategy)
planned_weekNoPlan into a week: the week's Monday YYYY-MM-DD (Planning Ahead strategy; mainly projects)
planned_monthNoPlan into a month: YYYY-MM (Planning Ahead strategy; mainly projects)
time_estimate_minutesNoTime estimate in minutes. NOTE: rendered as the project's OWN estimate — the UI does not aggregate it with the children's, despite the wiki's claim (verified in the app 2026-08-29)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.6.0
    • changedInput schema / properties / day / description
      Previous value: -"Projects ONLY: schedule on YYYY-MM-DD or 'today' (categories cannot be scheduled)"New value: +"Projects ONLY: schedule on YYYY-MM-DD or 'today' (blocked for categories — a category is never completed)"
    • changedInput schema / properties / due_date / description
      Previous value: -"Projects ONLY: deadline YYYY-MM-DD (categories have no dueDate)"New value: +"Projects ONLY: deadline YYYY-MM-DD (blocked for categories — a category is never completed)"
    • changedInput schema / properties / label_ids / description
      Previous value: -"Projects ONLY: label IDs (from get_labels)"New value: +"Label IDs (from get_labels) — categories AND projects: categories have labels, stored in the same field as projects' and rendered in the app (live-tested + verified in the app 2026-09-11)"
  2. Changed1 schema field changedv1.4.0
    • changedInput schema / properties / priority / description
      Previous value: -"Projects ONLY: priority as a string — projects do not use isStarred (verified live 2026-08-29)"New value: +"Projects ONLY: priority as a string — high=Most important (red), mid=Very important (orange), low=Important (yellow, the one-star level — NOT the app's 'Low priority', which projects do not have). Projects do not use isStarred (verified live 2026-08-29; mapping verified against the app's code 2026-08-30)"
  3. First observedv1.3.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations mark it as a non-read-only, non-destructive, non-idempotent mutation; the description goes well beyond that by disclosing endpoint divergence (/doc/create vs /addProject), live-verified field-ignoring behavior, and a client-side local block that prevents the '#word' corruption bug before any API call. Minor gap: it does not spell out permissions/auth for the project path or what the response contains, though an output schema exists.

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?

Front-loaded with the action and the category/project split, then ordered by caveat severity (field rejection → creation-time ignores → title corruption bug). It is long and mildly redundant, since the schema already labels several fields 'Projects ONLY', so parts of the body repeat structured data.

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 15-parameter creation tool with two divergent API backends, the description supplies the cross-parameter rules, the workaround path (update afterwards), and the title validation rule that no other field covers. Annotations and the output schema handle the safety and return-value halves, so nothing material is missing.

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 coverage is already 100%, yet the description adds cross-field semantics the schema cannot express: day/due_date/priority/frog are structurally meaningless for categories, label_ids applies to both kinds, and startDate/endDate are silently ignored at creation. These are genuine usage-critical constraints beyond per-parameter text.

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?

Opens with a specific verb+resource pair and immediately disambiguates the two modes ('Create a category (via /doc/create...) or a project (via /addProject)'), which is exactly the distinction an agent needs given both live behind one tool name. It also states the containment rule (categories can contain categories; projects cannot), separating it from sibling tools like create_task and create_event.

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?

Gives clear conditional routing for the two kinds and explicitly redirects to update_category_or_project for startDate/endDate that cannot be set at creation. It does not, however, state when to prefer this tool over create_task/create_event or note prerequisites such as the Full Access Token requirement beyond the parenthetical mention of it for /doc/create.

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