Skip to main content
Glama

Dandori

Créer ou modifier un élément

dandori_save

Créer (sans id) ou modifier (avec id ; seuls les champs fournis changent) un élément qu'aucun outil dédié ne couvre. Les champs vont dans fields ; parent_id est obligatoire pour milestone (ID du projet) et key_result (ID de l'objectif). Entités et champs :

  • milestone : title (obligatoire à la création), due_date, is_completed. Les jalons d'un projet sont dans dandori_get_project

  • key_result : title et target_value (> 0) obligatoires à la création, current_value, unit (20 caractères), step (le pas d'un clic). Plan Plus requis. Ceux d'un objectif : fetch goal:ID

  • important_date : title et date (entre 1900 et 2100 ; la date de naissance pour un anniversaire) obligatoires à la création, time (HH:MM), recurrence (yearly, monthly, none), category (birthday, medical, administrative, symbolic, other), notes, notify_days_before (jours avant, ex. [7, 1])

  • home_item : name (obligatoire à la création), category (appliance, furniture, electronic, vehicle, tool, other), room, brand, model, serial_number, purchase_date, purchase_price, warranty_until, description, is_active

  • maintenance_task : home_item_id et title obligatoires à la création, description, recurrence_type (none, daily, weekly, monthly, yearly, custom), recurrence_interval (en mois, avec custom), last_done_at, next_due_at (calculée sinon), notify_days_before (0 à 90), is_active. Plan Plus requis

  • wish : modification seulement (création : dandori_create_wish) : title, description, category (experience, achat, voyage, food, apprentissage, cadeau, autre), status (envie, planifie, economie, realise, abandonne), target_price, priority (low, medium, high), url, planned_date, reminder_at

  • transaction : modification seulement (création : dandori_add_transaction) : amount (null la remet à compléter), type (income, expense), description, date, budget_category_id

  • budget_category : name (obligatoire à la création, unique dans l'espace), type (income, expense, both), icon (nom d'icône Material, ex. shopping_cart), color (#rrggbb), space_id (à la création)

  • recurring_expense : type (income, expense), amount, description et frequency (weekly, monthly, yearly) obligatoires à la création, day_of_month (monthly : jour du mois, 1 à 31), next_due_date (weekly, yearly : une échéance, qui fixe le jour de la semaine ou de l'année ; sans elle, le jour de la création), budget_category_id, is_active, space_id. Les existantes : dandori_budget_dashboard (recurring)

  • subscription : modification seulement (création : dandori_create_subscription) : name, amount, next_renewal_date, billing_cycle, billing_interval_months, kind, currency, started_at, auto_create_transaction, reminder_days (jours avant le prélèvement où prévenir, ex. [7, 3] ; [] : aucun rappel), budget_category_id, usage_rating (1 à 5), notes, is_active

  • list : modification seulement (création : dandori_create_list) : name, kind (simple, watch, shop, recipe, wish), color (rose, peach, butter, mint, sky, lavender), icon (emoji), description

  • list_fields : id = celui de la liste ; fields : la liste complète de ses champs, qui remplace l'ancienne, [{key, label, type (text, textarea, number, rating, checkbox, date, url, select, tags), options (avec select), required, show_in_card, card_width (third, half, full)}]

  • contract : modification seulement (création : dandori_create_contract) : title, description, stake, deadline, weekly_target (1 à 7), status (active, completed, failed), tags

  • learning_session : modification seulement (création : dandori_log_learning_session) : date, progress_added, time_spent_minutes, notes. Les séances d'une lecture : fetch learning:ID. Plan Plus requis

  • learning_quote : modification seulement (création : dandori_add_learning_quote) : content, chapter_or_position, personal_note, is_favorite. Plan Plus requis

  • tag : name (obligatoire à la création, 50 caractères), color

  • task_status : colonne du kanban : label (obligatoire à la création), color, is_terminal (true : une tâche y est terminée ; sans effet sur les statuts système)

  • task_template : name et payload obligatoires à la création, description, icon ; payload : {title, description, notes, priority, energy_level, estimated_duration, deadline_offset_days (0 = le jour où on l'applique), project_id, goal_id, subtasks: [{title}], tag_names: []}

  • screen_time : date (aujourd'hui ou passé) et duration_minutes (1 à 1440) obligatoires à la création, category (social, video, gaming, work, other), app_name. Celles d'un jour : dandori_unplug_dashboard (entries)

  • timer_session : modification seulement (une session de chrono, voir dandori_tracking_dashboard avec history) : label, task_id, project_id

  • inbox : modification seulement (création : dandori_quick_capture) : content (corriger le texte), deferred (true : garder pour plus tard, false : remettre à trier)

  • exercise : name, muscle_group (chest, back, shoulders, arms, abs, legs, glutes, full_body), equipment (body, dumbbell, kettlebell, band, ball, foam_roller, barbell, cable, machine, other) et measure (reps_weight, reps, time, time_distance) obligatoires à la création, type (strength, cardio, stretching), video_url (https), note. Plan Plus requis

  • workout_template : modèle de séance : name (obligatoire à la création), note, exercises : [{exercise_id, sets (1 à 20), reps, weight_kg, duration_sec, distance_m, rest_sec (0 à 600, obligatoire)}]. Plan Plus requis

  • workout : création seulement, une séance faite : name, started_at et ended_at (dates-heures ISO), sets [{exercise_id, position (0 à 99, l'ordre des exercices), reps, weight_kg, duration_sec, distance_m}] obligatoires, duration_min, intensity (low, medium, high), note, template_id. Exercices et modèles : dandori_get_fitness. Plan Plus requis

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": {
      "entity": "<entity>",
      "fields": "<fields>"
    },
    "name": "dandori_save"
  }
}

Input Schema

NameRequiredDescriptionDefault
idNoID de l'élément à modifier ; absent pour en créer un
entityYesType de l'élément
fieldsYesLes champs de l'élément, par nom (voir la liste)
parent_idNomilestone : ID du projet ; key_result : ID de l'objectif

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Beyond the annotations it discloses genuinely important behavior: partial-update semantics ("seuls les champs fournis changent"), that list_fields replaces the full previous field set, plan gating ("Plan Plus requis") for key_result, maintenance_task, learning_session, learning_quote, exercise, workout_template and workout, validation ranges, and null semantics ("amount (null la remet à compléter)"). It does not say what the call returns or how a created item is identified, so a 4 rather than 5.

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 core create/update semantics are front-loaded before the long bulleted entity catalogue, and every bullet carries field names, required markers or constraints that are not stated anywhere else. It is dense and long, but the length is forced by 24 entity types with nested payloads; minor cost is that creation-alternative notes are interleaved with field lists rather than grouped.

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 high-complexity multiplexer covering 24 entities with nested objects it covers inputs thoroughly, including conditional requirements and enum domains. With no output schema, it should still say what comes back on create/update (e.g. the new id), which it omits.

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 far more: a per-entity catalogue of valid field names, which fields are required at creation, parent_id obligations for milestone and key_result, and enumerated value sets. Given that `fields` is a free-form object, this text is the only source of field-level 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?

The opening sentence states a specific verb pair and resource: "Créer (sans id) ou modifier (avec id ; seuls les champs fournis changent) un élément qu'aucun outil dédié ne couvre." It distinguishes the two modes by the presence of id and explicitly scopes itself to entities without a dedicated tool, which separates it from the many named siblings.

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?

Guidance is explicit and per-entity: for wish, transaction, subscription, list, contract, learning_session, learning_quote, timer_session and inbox it names the sibling tool to use instead for creation (e.g. "création : dandori_create_wish"), and it points to reads via dandori_get_project, dandori_budget_dashboard, dandori_unplug_dashboard. It also states the inversion for workout ("création seulement"). No routing decision is left to inference.

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.

Resources