Skip to content

Expired trial is invisible to the MCP agent, which then plans work against a dead instance #8546

Description

@allthedoll

Description

What happened

I asked Claude (via the FlowFuse MCP server) to build a wind farm pipeline and dashboard in FlowFuse. It discovered my team and my one hosted instance, planned the whole build against that instance, and only found out the instance was unusable when it opened the editor in a browser and saw "Suspended Instance" plus the "Your trial has ended" banner. By then it had already committed to a plan. I own a second team it could have used, and it could not see that team at all.

What I expected

When the team I am working in cannot run instances, I expect that surfaced before any work is
planned, and I expect to be asked something like "this team's trial has ended, here are the teams you
could use instead".

Why it happened

The session's real constraints are not discoverable from the tools the agent is given (as of today).

- Team and instance health are absent from the list endpoints

platform_list_teams reports this team as healthy:

{
  "type": { "id": "5KgL1Km3yW", "name": "Pro", "active": false },
  "role": 50,
  "instanceCount": 1,
  "id": "rgN7E9bL1M",
  "name": "Team jamie",
  "slug": "jamie-449b",
  "suspended": false
}

The agent read suspended: false and it is false...the trial has ended and the only instance is suspended.

platform_list_hosted_instances returns no state field at all:

{
  "id": "1e33c4a6-101c-408c-aed3-40b1400f3620",
  "name": "team-jamie-jamie-449b-02747b3a",
  "url": "https://team-jamie-jamie-449b-02747b3a.flowfuse.cloud",
  "application": { "id": "o34oQd2mg8", "name": "Jamie's Application" },
  "projectType": { "id": "r2bz4m3Xjx", "name": "Small" },
  "stack": { "id": "wky36LEvDE", "name": "Node-RED-4.1.1_Small-2.24.0" },
  "template": { "id": "AOjzm2v7aG", "name": "Default" }
}

The agent doesn't appear to have called these:

platform_get_hosted_instance_status

{ "meta": { "state": "suspended", "isDeploying": false } }

platform_get_team (trimmed, the full response is roughly 200 lines)

{
  "billing": {
    "active": false,
    "trial": true,
    "trialEnded": true,
    "trialProjectAllowed": false
  }
}

trialEnded does appear in platform_get_team but it was buried under stripe price IDs.

- The token is read only, and every write tool is still offered

platform_get_active_user reports:

{
  "token": {
    "readOnly": true,
    "allTeams": false,
    "teams": ["rgN7E9bL1M"]
  }
}

list_tools still shows the full write catalog (platform_create_hosted_instance, flow_building_add_nodes, and the rest), and invoke_write_tool is presented as callable. The agent
only discovers by failure:

403 Forbidden. The request may have been blocked by a firewall or security service.

It cost real time before the actual cause (a read-only token) was found, and it was initially reported to me as a client-side problem, which was wrong.

- Token team scoping makes "use another team instead" impossible to offer

token.allTeams: false with teams: ["rgN7E9bL1M"] means platform_list_teams returns one team, but I am an owner of a second team. 😦 There is no way to know that team exists inside the MCP session so the agent can't offer to switch over to unblock me/itself.

Technical deets

  • Team rgN7E9bL1M (jamie-449b), type Pro, trial ended, billing not set up
  • Instance 1e33c4a6-101c-408c-aed3-40b1400f3620, Node-RED 4.1.1, stack Node-RED-4.1.1_Small-2.24.0, state suspended, flows never deployed
  • MCP token: read only, scoped to one team
  • Client: Claude (Cowork) over the FlowFuse MCP server, with the platform MCP browser session toggle
    enabled

Epic/Story

No response

Have you provided an initial effort estimate for this issue?

I can not provide an initial effort estimate

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

taskA piece of work that isn't necessarily tied to a specific Epic or Story.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions