{"ok":true,"site":{"host":"line-mate.vercel.app","url":"https://line-mate.vercel.app/","type":"live","desc":"One more technician on the line: a WebMCP-native shop floor where the manager and a browser agent recover a failing schedule together — the manager keeps authority.","tools":[{"name":"inspect_system","kind":"act","impl":"imperative","description":"Overview of the active scenario: shift clock, constraints, bays and technicians, waiting jobs with their promises, the latest simulation KPIs, and recent human/agent changes. Includes a briefing on the room you have to act, and — while a proposal is on the manager's screen — the current draft with who set each choice. Use this first.","title":"Inspect system","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"scenarioId":{"type":"string","minLength":1}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_resource","kind":"act","impl":"imperative","description":"Detail for one bay or station: status and blocking reason, the jobs routed to it, its utilisation and queue from the last run, and which technicians can work there.","title":"Inspect resource","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"resourceId":{"type":"string","minLength":1},"scenarioId":{"type":"string","minLength":1}},"required":["resourceId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_work_item","kind":"answer","impl":"imperative","description":"Detail for one vehicle's job: promise, priority, steps with the skill each needs and who has it, current route, and a feasibility signal (work remaining versus time to the promise). Includes last-run timings.","title":"Inspect work item","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"workItemId":{"type":"string","minLength":1},"scenarioId":{"type":"string","minLength":1}},"required":["workItemId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_simulation_results","kind":"answer","impl":"imperative","description":"Structured results of the last run for one scenario: promises met, completions, revenue and cost, utilisation, late and unfinished jobs, bottleneck. Fails if the scenario has not been simulated yet.","title":"Get simulation results","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"scenarioId":{"type":"string","minLength":1},"includeTimeline":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_scenarios","kind":"act","impl":"imperative","description":"Aligned KPIs for two to four scenarios (promises, completions, revenue, labor cost, wait, lead time, constraint violations) with deltas against the first one and a one-line verdict. Simulates on the fly if needed.","title":"Compare scenarios","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"scenarioIds":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"string","minLength":1}}},"required":["scenarioIds"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_scenario","kind":"act","impl":"imperative","description":"Clone a scenario into a named experiment and make it active. Do this before changing anything so the baseline stays intact for comparison.","title":"Create scenario","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"description":{"type":"string","maxLength":280},"fromScenarioId":{"type":"string","minLength":1},"activate":{"type":"boolean"}},"required":["name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_resource","kind":"act","impl":"imperative","description":"Validated partial update of a bay or station: status, blocking, capacity, availability, cost, name. Cannot add resources or technicians.","title":"Update resource","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"resourceId":{"type":"string","minLength":1},"scenarioId":{"type":"string","minLength":1},"allowBaselineEdit":{"type":"boolean"},"changes":{"type":"object","properties":{"name":{"type":"string","minLength":1},"capacity":{"type":"integer","minimum":1,"maximum":8},"availability":{"type":"number","exclusiveMinimum":0,"maximum":1},"costPerHour":{"type":"number","minimum":0},"status":{"type":"string","enum":["idle","working","blocked","down"]},"blockedUntilMinute":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"blockingReason":{"type":["string","null"]}}}},"required":["resourceId","changes"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_work_item","kind":"act","impl":"imperative","description":"Change a job's priority (1 = first). Promises, steps and revenue are facts about the customer and cannot be edited; cancelling is not allowed.","title":"Update work item","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"workItemId":{"type":"string","minLength":1},"scenarioId":{"type":"string","minLength":1},"allowBaselineEdit":{"type":"boolean"},"changes":{"type":"object","properties":{"priority":{"type":"integer","minimum":1,"maximum":5}},"required":["priority"]}},"required":["workItemId","changes"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"route_work_item","kind":"act","impl":"imperative","description":"Send a job to a specific bay or station, optionally at a queue position (1 = next). resourceId null clears the pin so the job takes any eligible bay. The target must be able to run at least one of the job's steps. While a proposed plan is on the manager's screen for the active scenario, this edits that visible draft instead — attributed to you, and nothing lands in the world until the manager applies the plan.","title":"Route work item","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"workItemId":{"type":"string","minLength":1},"resourceId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":1,"maximum":20},{"type":"null"}]},"scenarioId":{"type":"string","minLength":1},"allowBaselineEdit":{"type":"boolean"}},"required":["workItemId","resourceId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_plan","kind":"act","impl":"imperative","description":"Apply a whole schedule plan — the ordered priority and routing changes explore_schedules returned, or the version the manager edited — as one attributed change. Same validation as the individual commands, and the baseline stays protected: branch with create_scenario first.","title":"Apply plan","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"scenarioId":{"type":"string","minLength":1},"plan":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"changes":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","properties":{"command":{"type":"string","const":"update_work_item"},"workItemId":{"type":"string","minLength":1},"priority":{"type":"integer","minimum":1,"maximum":5}},"required":["command","workItemId","priority"]},{"type":"object","properties":{"command":{"type":"string","const":"route_work_item"},"workItemId":{"type":"string","minLength":1},"resourceId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"required":["command","workItemId","resourceId","position"]}]}}},"required":["id","label","changes"]},"allowBaselineEdit":{"type":"boolean"}},"required":["plan"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"post_shift_note","kind":"act","impl":"imperative","description":"Tell the team what changed. Records the shift note in the shop log against the scenario, tagged with its channels (slack, email, sms). This tool performs no external delivery of any kind: it makes no network request and no data leaves the page.","title":"Post shift note","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"scenarioId":{"type":"string","minLength":1},"text":{"type":"string","minLength":1,"maxLength":400},"channels":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["slack","email","sms"]}},"recipients":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["text","channels"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"run_simulation","kind":"act","impl":"imperative","description":"Run the deterministic shift simulation for a scenario and cache the result. Same scenario in, same numbers out. Returns bounded results; pass includeTimeline: true for the event list.","title":"Run simulation","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"scenarioId":{"type":"string","minLength":1},"includeTimeline":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"explore_schedules","kind":"act","impl":"imperative","description":"Search for a better shift. Generates a bounded set of alternative schedules (promised jobs first, bay pins, queue positions, released pins) and scores each one across seeded replications of the day, so the answer carries how often it holds, not just one lucky run. Deterministic: the same seed always returns the same ranking. Returns the best plan and up to eight runners-up, ready to hand to apply_plan. Run it when the manager asks for options or a recovery — not as part of a look or a diagnosis. The manager's screen animates this search live for about ten seconds — you can narrate over it instead of describing it afterwards.","title":"Explore schedules","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"scenarioId":{"type":"string","minLength":1},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"replications":{"type":"integer","minimum":1,"maximum":64},"includeTrace":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/line-mate.vercel.app.svg","apiSurface":"spec","toolCount":13}}