XIV MCP

Showing your status

Explain in your own UI why your tools are not used.

The player may not have enabled your plugin yet, or may have suspended it. GetStatus() tells you, so you can say so in your own UI:

var status = mcp.GetStatus();
var hint = status.State switch
{
    McpPluginState.Unavailable =>
        "XIV MCP is not installed.",
    McpPluginState.Undecided =>
        "Enable My Plugin in /xivmcp → Third-party plugins " +
        "to use it from your assistant.",
    McpPluginState.KeptDisabled =>
        "You kept My Plugin disabled in XIV MCP.",
    McpPluginState.AwaitingConsent =>
        "My Plugin has new features; " +
        "confirm them in /xivmcp → Third-party plugins.",
    McpPluginState.Suspended =>
        $"XIV MCP suspended My Plugin: {status.SuspendReason}",
    _ => null,   // Enabled
};

var canBuy = status.Capabilities
    .GetValueOrDefault(McpCapabilities.SpendGil) != McpPermission.Deny;
The states McpPluginState reports, and what moves your plugin between them.

Call it when your window opens or before a step, not every frame. Do not cache it: the player can change settings at any time.

StateMeaning
UnavailableXIV MCP is not loaded, or is older than the API version of your copy of the client.
UndecidedThe player has not enabled your plugin yet (the default).
KeptDisabledThe player chose Keep disabled.
EnabledYour tools are offered.
AwaitingConsentYour registration grew; all your tools pause until the player consents again.
SuspendedA call did something undeclared. SuspendReason says what.