T

toban.app

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.

4read
6write
6action
https://toban.app/

live · Productivity & Work · JSON · API for agents

Tools 16 tools

list_schedulesread

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.

View tool JSON
{
  "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": "/"
}
get_current_assignmentsread

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.

View tool JSON
{
  "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": "/"
}
get_schedule_detailsread

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.

View tool JSON
{
  "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": "/"
}
get_share_linkread

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.

View tool JSON
{
  "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": "/"
}
switch_scheduleaction

Switch the active duty roster to the one with the given name. Use the exact roster name as shown by list_schedules.

View tool JSON
{
  "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": "/"
}
advance_rotationaction

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.

View tool JSON
{
  "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": "/"
}
change_viewaction

Switch how the active roster is displayed: cards, table, or calendar.

View tool JSON
{
  "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": "/"
}
create_schedulewrite

Create a new duty roster from a built-in template, identified by the template's name. The new roster becomes the active one.

View tool JSON
{
  "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": "/"
}
update_schedulewrite

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.

View tool JSON
{
  "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": "/"
}
duplicate_scheduleaction

Duplicate the active roster as a new copy (members, groups, and settings are copied; the copy becomes active).

View tool JSON
{
  "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": "/"
}
add_memberwrite

Add a member (a person or team) to the active duty roster by name. A display color is assigned automatically.

View tool JSON
{
  "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": "/"
}
remove_memberwrite

Remove a member from the active duty roster by name.

View tool JSON
{
  "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": "/"
}
update_memberwrite

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.

View tool JSON
{
  "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": "/"
}
set_rotationwrite

Set the active roster's rotation to a specific turn number (0 = initial). Only for manually-rotated rosters; date-based rosters advance automatically.

View tool JSON
{
  "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": "/"
}
configure_rotationaction

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.

View tool JSON
{
  "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": "/"
}
print_scheduleaction

Open the browser print dialog for the active roster in its current view (cards / table / calendar).

View tool JSON
{
  "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": "/"
}