{"ok":true,"site":{"host":"toban.app","url":"https://toban.app/","desc":"Free duty-roster maker for building cleaning, lunch, and daily-monitor rotation charts in the browser — no signup, print-quality output. WebMCP tools let an agent create and manage rosters, members, and duty assignments.","type":"live","category":"Productivity & Work","prominence":3,"favicon":"/favicons/toban.app.png","tools":[{"name":"list_schedules","kind":"read","impl":"imperative","description":"List all duty rosters (当番表) the user has. Returns each roster's name, member count, and group count; the currently displayed roster is marked. Use to see what rosters exist or before switching rosters.","inputSchema":{"type":"object","properties":{}},"page":"/"},{"name":"get_current_assignments","kind":"read","impl":"imperative","description":"Get who is currently on duty for the active duty roster: each task group paired with its assigned member, plus the current rotation step. Use when the user asks who is on duty now.","inputSchema":{"type":"object","properties":{}},"page":"/"},{"name":"get_schedule_details","kind":"read","impl":"imperative","description":"Get the full setup of the active duty roster: member names, task groups, rotation mode (manual or date-based), and assignment mode. Use before editing or to explain how the roster is configured.","inputSchema":{"type":"object","properties":{}},"page":"/"},{"name":"get_share_link","kind":"read","impl":"imperative","description":"Get the public share URL of the active roster if it has already been shared. Does NOT create or publish a new link — sharing must be done by the user via the share button.","inputSchema":{"type":"object","properties":{}},"page":"/"},{"name":"switch_schedule","kind":"action","impl":"imperative","description":"Switch the active duty roster to the one with the given name. Use the exact roster name as shown by list_schedules.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Exact name of the roster to switch to"}},"required":["name"]},"page":"/"},{"name":"advance_rotation","kind":"action","impl":"imperative","description":"Move the active roster's rotation one step forward or backward. Only works for manually-rotated rosters; date-based rosters advance automatically by date and cannot be moved manually.","inputSchema":{"type":"object","properties":{"direction":{"type":"string","enum":["forward","backward"],"description":"forward = next turn, backward = previous turn"}},"required":["direction"]},"page":"/"},{"name":"change_view","kind":"action","impl":"imperative","description":"Switch how the active roster is displayed: cards, table, or calendar.","inputSchema":{"type":"object","properties":{"view":{"type":"string","enum":["cards","table","calendar"],"description":"Display mode"}},"required":["view"]},"page":"/"},{"name":"create_schedule","kind":"write","impl":"imperative","description":"Create a new duty roster from a built-in template, identified by the template's name. The new roster becomes the active one.","inputSchema":{"type":"object","properties":{"template":{"type":"string","description":"Name of the template to create from"}},"required":["template"]},"page":"/"},{"name":"update_schedule","kind":"write","impl":"imperative","description":"Update the active roster's settings: name, pinned state, and/or assignment mode (member = one person per group, task = one person per task). Provide only the fields you want to change.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"New roster name"},"pinned":{"type":"boolean","description":"Pin or unpin the roster"},"assignment_mode":{"type":"string","enum":["member","task"],"description":"Assignment mode"}}},"page":"/"},{"name":"duplicate_schedule","kind":"action","impl":"imperative","description":"Duplicate the active roster as a new copy (members, groups, and settings are copied; the copy becomes active).","inputSchema":{"type":"object","properties":{}},"page":"/"},{"name":"add_member","kind":"write","impl":"imperative","description":"Add a member (a person or team) to the active duty roster by name. A display color is assigned automatically.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the member to add"}},"required":["name"]},"page":"/"},{"name":"remove_member","kind":"write","impl":"imperative","description":"Remove a member from the active duty roster by name.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the member to remove"}},"required":["name"]},"page":"/"},{"name":"update_member","kind":"write","impl":"imperative","description":"Update a member of the active roster by name: rename and/or mark them as resting (skip = excluded from rotation) or active. Provide name plus the fields to change.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Current name of the member"},"new_name":{"type":"string","description":"New name (rename)"},"skip":{"type":"boolean","description":"true = rest (exclude from rotation), false = active"}},"required":["name"]},"page":"/"},{"name":"set_rotation","kind":"write","impl":"imperative","description":"Set the active roster's rotation to a specific turn number (0 = initial). Only for manually-rotated rosters; date-based rosters advance automatically.","inputSchema":{"type":"object","properties":{"rotation":{"type":"number","description":"Turn number, 0 or greater"}},"required":["rotation"]},"page":"/"},{"name":"configure_rotation","kind":"action","impl":"imperative","description":"Configure how the active roster rotates. mode 'manual' = advance by hand; mode 'date' = auto-advance by date (requires start_date as YYYY-MM-DD and cycle_days). Optionally skip Saturdays / Sundays / Japanese holidays. Provide only the fields you want to change.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["manual","date"],"description":"Rotation mode"},"start_date":{"type":"string","description":"Start date YYYY-MM-DD (date mode)"},"cycle_days":{"type":"number","description":"Days per rotation, positive integer (date mode)"},"skip_saturday":{"type":"boolean"},"skip_sunday":{"type":"boolean"},"skip_holidays":{"type":"boolean"}}},"page":"/"},{"name":"print_schedule","kind":"action","impl":"imperative","description":"Open the browser print dialog for the active roster in its current view (cards / table / calendar).","inputSchema":{"type":"object","properties":{}},"page":"/"}],"apiSurface":"spec","_scrape":{"etag":null,"lastModified":null,"scrapedAt":"2026-06-05T06:35:56.387Z"},"toolCount":16}}