Starting jobs
Run steps one after another, your tools and XIV MCP's own, for as long as they take.
A job runs steps one after another, each as long as it needs. Steps can be your tools, other plugins' tools or XIV MCP's own. Steps that take a while are long-running tools: the job is what lets them run for hours, stops them when it is paused or cancelled, and keeps their progress in its log. A job costs far fewer tokens than the assistant calling the same tools one by one, but it cannot adapt to surprises: see Step by step or as a job.
var job = mcp.StartJob("Farm, then head to a bell",
new McpJobStep("myplugin_farm", new { minutes = 90 }, Id: "farm"),
new McpJobStep("navigate_to", new { destination = "summoning_bell" }),
new McpJobStep("myplugin_report",
new { text = "Farmed {{farm.kills}} kills." }));Placeholders
"{{farm.kills}}"on its own becomes that value, with its type. Inside a longer string it becomes text.- Paths go into objects and arrays:
{{plan.list.id}},{{search.items.0.id}}. - Paths ignore case, so a result
new { Kills = 12 }(sent as{"kills": 12}) is read by{{farm.kills}}.
Other plugins' tools
Steps can call XIV MCP's tools and other plugins' tools too. Declare the ones you use with UsesTools, so the player sees what is missing before a job is refused. See Using other tools in your jobs and the example.
XIV MCP's own tools
They are listed with their purpose in the tools reference, and with their arguments in tools/list. The ones that need other plugins are on Plugins XIV MCP uses. For example, new McpJobStep("sell_item", new { retainer = "{{pick.retainer}}", item = "Iron Ore" }) passes your result into one of them.
Permissions and control
- Every step is checked against the player's settings and your plugin's permissions for what the step does: a step set to Ask waits for the player, and one your plugin isn't allowed is refused. Some of XIV MCP's tools are never available to plugins. See Security model.
- Control:
GetJob(id),ListJobs(),PauseJob,ResumeJobandCancelJob, for the jobs your plugin started. - Your jobs show in
/xivmcp→ Jobs with your plugin's name. - Nobody watches your jobs. When a step fails, the job waits as pending. Check
GetJob(id), and cancel it or tell the player, who can retry or skip the step in/xivmcp→ Jobs (or ask their assistant to). The client cannot retry or skip a step itself.
Why not MCP tasks?
MCP has its own mechanism for long work, the Tasks extension, but no common AI app supports it yet. Jobs work with every app, through ordinary tools.