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
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_teamsreports 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: falseand it is false...the trial has ended and the only instance is suspended.platform_list_hosted_instancesreturns 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 } }trialEndeddoes appear inplatform_get_teambut it was buried under stripe price IDs.- The token is read only, and every write tool is still offered
platform_get_active_userreports:{ "token": { "readOnly": true, "allTeams": false, "teams": ["rgN7E9bL1M"] } }list_toolsstill shows the full write catalog (platform_create_hosted_instance,flow_building_add_nodes, and the rest), andinvoke_write_toolis presented as callable. The agentonly discovers by failure:
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: falsewithteams: ["rgN7E9bL1M"]meansplatform_list_teamsreturns 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
rgN7E9bL1M(jamie-449b), type Pro, trial ended, billing not set up1e33c4a6-101c-408c-aed3-40b1400f3620, Node-RED 4.1.1, stackNode-RED-4.1.1_Small-2.24.0, state suspended, flows never deployedenabled
Epic/Story
No response
Have you provided an initial effort estimate for this issue?
I can not provide an initial effort estimate