XIV MCP

Step by step or as a job

Who runs the steps of a task, the assistant or XIV MCP, and what each costs.

A long-running tool is one tool that takes a while, such as run_duty. A job is a list of tool calls that XIV MCP runs by itself. Any task with several steps can be run either way. The difference is who runs the steps: the assistant, or XIV MCP.

Step by step

The assistant calls a tool, reads the result, and picks the next call.

Every call, and every check while waiting, is a request to the AI model.
  • It adapts to every result: full bags, a missing NPC, a price that moved.
  • It is expensive. Each call is a model request, and waiting means asking again and again.
  • Each call has to finish within the AI app's time limit, often a minute, and the chat has to stay open.

As a job

The assistant sends the whole list once. XIV MCP runs the steps, passes results from one to the next, and needs no model while it does.

XIV MCP works through the steps itself. The assistant only starts the job and looks in when it wants to.
  • It is cheap. Starting costs one request; the steps cost none.
  • Steps can take hours, and the chat can be closed.
  • It follows the plan and cannot decide anything on its own. If a step fails, the job waits as pending until someone retries, skips or changes it.

Side by side

Step by stepAs a job
Who runs the stepsThe assistantXIV MCP
Model requestsOne per call and per checkOne to start, plus any checks
SurprisesHandled after every stepThe step fails, the job waits
Long stepsWithin the app's time limitHours
The chatMust stay openCan be closed

Both follow the same permission settings.

Which one to use

A rule of thumb.

They mix well: look around step by step, hand the long stretch to a job, then decide what to do with its result.

For your plugin

  • Make long-running tools safe to stop and to run again, and return results the next step can use. See Long-running tools.
  • Fail with what is left ("3 Iron Ore still missing"), so whoever fixes the pending step knows what to do.
  • Jobs your plugin starts have no assistant watching. Check GetJob(id), and cancel a pending job or tell the player. See Starting jobs.
  • Offer quick, read-only status tools, so checks are cheap when the assistant drives.

On this page