Brain-dump → to-do list

Monday morning, everything's in your head, none of it is in your task app. Paste the mess as-is. The agent splits it into tasks, reads the urgency from your own words — "urgently", "asap", "no rush" — and even checks off the things you mentioned you'd already done.

The tools

ToolKindWhat it does
add_taskPage (exposeTool)Adds { title, priority } to the list
complete_taskPage (exposeTool)Checks a task off by title
read_tasksPage (exposeTool)Returns the list with priorities and status

How it works

The task list is a dynamic collection, so its tools are page-level — the same pattern as the recipe cart:

exposeTool({
  name: 'add_task',
  description: 'Add a task to the to-do list with a priority.',
  inputSchema: {
    type: 'object',
    properties: {
      title: { type: 'string' },
      priority: { type: 'string', enum: ['low', 'medium', 'high'] },
    },
    required: ['title'],
  },
  execute: ({ title, priority }) => {
    tasks.push({ title, priority: priority ?? 'medium', done: false });
    return { content: [{ type: 'text', text: `Added "${title}".` }] };
  },
});

The checkboxes in the list are ordinary <wmcp-checkbox> elements the human clicks — they're deliberately not exposed. Rule of thumb: expose the stable capability ("add a task"), not every transient row the capability produces. Tool names are page-global, and a list of twenty tasks shouldn't mean twenty fill_task-… tools crowding the agent's context.