← UniSea MaindeckCONTENT HISTORY

Update to UniSea Maindeck

Snapshot Oct 31, 2026 · 01:21 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save UniSea Maindeck and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Minimal working guide for the UniSea Maindeck MCP server: core terms, phases, statuses, tags, cost item rules, allowed HTML and how to call the tools efficiently and safely. Use it before any Maindeck MCP call, whenever the user asks about their Maindeck projects, vessels, work orders, cost items, owner supply, actions, tender status or activity updates, or says 'the project', 'the WO', 'the spec' or 'the yard quote', even if they do not mention the MCP.",
  "included_files": [],
  "name": "maindeck-mcp",
  "skill_md_contents": "---\nname: maindeck-mcp\ndescription: \"Minimal working guide for the UniSea Maindeck MCP server: core terms, phases, statuses, tags, cost item rules, allowed HTML and how to call the tools efficiently and safely. Use it before any Maindeck MCP call, whenever the user asks about their Maindeck projects, vessels, work orders, cost items, owner supply, actions, tender status or activity updates, or says 'the project', 'the WO', 'the spec' or 'the yard quote', even if they do not mention the MCP.\"\n---\n\n# Maindeck MCP: the essentials\n\nUniSea Maindeck plans and runs dry-docking and ship repair projects: write the specification, tender it to\nshipyards, run the yard visit, close against the yard's invoice. The MCP acts **as the signed-in user**, with their\nrole, in one organization. It has **no delete tools**.\n\n## 1. Golden rules\n\n1. **Confirm every write** with the user first. Nothing can be deleted, so a wrong record stays. Fix mistakes by\n   renaming or changing the record, or by setting it to `cancelled`.\n2. **Resolve before acting.** `list_vessels` then `list_projects` (with `vessel_id`) to get the project. Never guess ids.\n3. **Never hardcode tags.** Tags are configured per organization. Call `list_work_order_tags` first and use the\n   `complete_key` (for example `executed_by_yard`).\n4. **Count, do not page.** Use `count_only=true` or `total_count` instead of fetching long lists.\n5. **Relay error messages** as they come. Do not retry blindly. \"Not found\" also means \"no access\".\n6. **Change phases in the web app.** No MCP tool sets the phase, because the web app runs checks and\n   cost steps when the phase changes. Tell the user to change the phase there.\n7. **Do not invent data.** If a tool does not return it, say so and point to the web app (section 7).\n\n## 2. Terms\n\n| Term | Meaning |\n|---|---|\n| Organization | The customer account (\"team\" in the API) |\n| Vessel | A ship (\"ship\" in the API). Has many projects over time |\n| Project | One docking or repair job on one vessel. Has a phase and a survey type |\n| Group | Flat, ordered section of a project that holds work orders |\n| Work order | One job: specified, quoted, executed and paid. Two words, WO only in tables |\n| SFI field (`sfi_code`) | A job code. Follow the project's existing numbering; never \"correct\" it or derive the group from it |\n| Specification | The work order description (`content`), written to the party doing the work |\n| Executed by | Key tag category: Yard, Specialist or Crew. Yard puts the work order in the tender |\n| Cost item | A scope line the yard prices (quantity, unit, type). Carries **no price** |\n| Estimate | One typed budget figure per work order. Not the sum of cost items |\n| Yard candidate | A yard invited to quote in Yard selection |\n| Owner supply | What the owner buys outside the yard's quote (spares, paint, service engineers) |\n| Action | A to-do on a project or a work order |\n| Activity update | Progress report with notes and photos; sets the work order's progress |\n| Variation order | Work added from Execution onward |\n\nSay **vessel** and **organization** to users. Write **Maindeck** with a lowercase d.\n\n## 3. Phases\n\n- With a yard: `kick_off` > `planning` > `yard_selection` > `pre_execution` > `execution` > `closing` > `completed`\n- Without a yard: `kick_off` > `planning` > `execution` > `closing` > `completed`\n- The web app moves a project one phase forward or back. The MCP cannot change the phase.\n\n- Kick-off to Pre-execution: plan. Work orders use **`planning_status`**.\n- Execution onward: actual. Work orders use **`execution_status`**.\n- `get_project_stats` tells which status field is active.\n\n## 4. Statuses\n\n- `planning_status`: `spec_in_progress`, `pending_approval`, `requires_additional_info`,\n  `additional_info_provided`, `spec_approved`, `cancelled`. Do not use the legacy values `not_started`,\n  `in_progress`, `approved`, `sent_for_quotation`, `completed`.\n- `execution_status`: `not_started`, `in_progress`, `delayed`, `pending_approval`, `completed`, `cancelled`.\n- `cancelled` is the only way to take a work order out of scope.\n- Progress above 0 sets In progress; progress 100 sets Completed.\n- `project_status` (health, not phase): `on_schedule`, `attention_required`, `behind_schedule`.\n\n## 5. Writing rules\n\n**Description formatting (CKEditor)**\n\nUsers read and edit descriptions in the web app's CKEditor. Write `content` in the same shape CKEditor produces,\nminus the attributes the MCP rejects, so the text looks and edits exactly like text typed in the editor.\n\n- **Structure:** four sections, each under an `<h2>` heading:\n  1. **Scope:** what is to be done, on which equipment or location. Use exact names and IMO or SFI references\n     where known.\n  2. **Specification:** materials, standards and method.\n  3. **Access / prerequisites:** staging, permits, isolation, owner supply.\n  4. **Deliverables:** reports, certificates and photos expected on completion.\n- **Paragraphs:** one `<p>` per paragraph. `<br>` only for a line break inside a paragraph. No empty paragraphs\n  and no `&nbsp;` for spacing. `<blockquote>` is allowed.\n- **Headings:** `<h1>` to `<h6>` are allowed. Use `<h2>` for the four sections. Plain text inside headings, no\n  `<strong>`.\n- **Inline:** bold `<strong>` or `<b>`, italic `<em>` or `<i>`, underline `<u>`. No nested emphasis.\n- **Lists:** `<ul>` or `<ol>` with plain text in each `<li>`, no `<p>` inside `<li>`. A nested list goes inside its\n  parent `<li>`.\n- **Tables:** `<table><thead><tr><th>..</th></tr></thead><tbody><tr><td>..</td></tr></tbody></table>`. Always a\n  header row, plain text in cells, no `figure`, caption, widths or merged cells.\n- **Links:** `<a href=\"...\">text</a>` with an http, https, mailto or tel link, or a relative link. `title` is the\n  only other attribute allowed.\n- **The MCP rejects:** any other tag, such as `div`, `span`, `figure` or `img`, and any other attribute, such as\n  `style`, `class` or `data-*`. The editor adds its own wrappers and ids when a user next saves; that is expected.\n- **Do not send Markdown or `&nbsp;`.** The MCP accepts them, but the editor shows Markdown as plain symbols, and\n  `&nbsp;` is not how the editor spaces text.\n- **Editing an existing description:** keep the wording and structure, but rebuild it as clean HTML. Existing\n  markup carries editor attributes (`data-list-item-id`, `<figure class=\"table\">`) and is rejected if sent back\n  unchanged.\n\n**Description content**\n- Address the executing party, be specific, no placeholders, do not repeat what other fields already hold.\n- Write for the yard estimator who quotes the job and the crew who does it. Use the imperative (\"Blast and coat\",\n  \"Renew gasket\"). No marketing language and no hedging.\n- Cost-driving figures (areas, lengths, hours) go in cost item quantities, not in the text.\n- Keep the language of the existing description.\n\n**Cost items (`add_cost_item`)**\n- Only on work orders tagged Executed by: Yard.\n- Always pass `cost_type`, `quantity` and, for `per_unit`, `unit`. The defaults break the rules.\n- `lump_sum`: quantity 1, no unit. Quantity 0 only for optional or contingency pricing.\n- Staging is its own line, per m3.\n- Before Execution, a new cost item is copied to **every yard candidate**. Check with the user if yards are already\n  invited.\n- **Keep the returned id.** No tool lists cost items or actions later; report ids back to the user.\n\n## 6. Recipes\n\n**Create a work order**\n1. Resolve the project; `list_project_groups`; `list_work_order_tags`.\n2. `create_work_order` with `name`, `group_id`, `content` and `sfi_code` in the project's numbering.\n3. `tag_work_order`: Executed by first, then other categories that apply.\n4. Yard work only: `add_cost_item` per line (section 5).\n5. Report the work order slug and cost item ids.\n\n**Counting**\n- Projects in a phase: `list_projects` + `phase` + `count_only=true`.\n- Work orders per status: `list_work_orders` + `group_by=status`.\n- Work orders with one tag: `list_work_orders` + `tags=[<complete_key>]` + `count_only=true`. Treat `group_by=tag`\n  as indicative only.\n- Owner supply per category: `list_owner_supply` + `group_by=category`.\n\n**Project overview:** `get_project`, `get_project_stats`, `get_tender_status` (when tendering),\n`list_activity_updates` with `from`.\n\n**Tool quirks**\n- `get_work_order` returns no tags, cost items or actions. Check a tag with the `tags` filter.\n- Project, work order and vessel accept id or slug. All other ids need the UUID.\n- Group and account code cannot change after creation. Locked work orders reject every edit.\n- Dates are ISO 8601 (`2026-09-01`).\n\n## 7. Not possible through the MCP\n\nPoint the user to the web app for: deleting anything; reading existing cost items or listing actions; editing\nowner supply; attachments and documents; quote lines, yard selection, exchange rates and budgets; actual, billed\nand variation order costs; reports and templates; creating groups, activity updates or comments; external users;\nmoving work orders between projects.\n"
}

SHA-256 of public snapshot: 2a7fcd1ea9d268339828b8977727b8ec3e2dd8f877e6e610df8b6f90c1e2b64c