Skip to main content
Glama

@floopfloop/mcp

npm version npm downloads CI Node.js Version License: MIT

Model Context Protocol server for the FloopFloop API — lets Claude Desktop, Cursor, Zed, and any other MCP-aware LLM host build, poll, and refine FloopFloop projects on the user's behalf.

Wraps the official @floopfloop/sdk and exposes a curated subset of its surface as MCP tools.

Tools

Tool

What it does

list_projects

List every project you have access to

get_project

Fetch a project by id or subdomain

project_status

Cheap status snapshot — safe to poll

create_project

Kick off a new build from a natural-language prompt

refine_project

Send a refinement message to an existing project

wait_for_live

Block until the project reaches a terminal state

cancel_project

Stop a queued or in-progress build

reactivate_project

Resume a cancelled / archived project

get_conversations

Read a project's message timeline (prompts + replies + deploy markers)

check_subdomain

Is a given slug available?

suggest_subdomain

Generate a friendly slug from a prompt

list_secrets

List secret keys on a project (names only)

set_secret

Create/overwrite a project secret

remove_secret

Delete a project secret

list_library_projects

Browse the public project library

clone_library_project

Duplicate a library project into the user's account

usage_summary

Plan limits + current-period credit / build / storage usage

list_api_keys

List the user's API keys (never returns the raw secret)

create_api_key

Mint a new API key — raw secret returned ONCE

remove_api_key

Revoke an API key by id or name

upload_from_path

Read a local file, presign + upload to S3, return an attachment ref

whoami

Show the authenticated user

current_subscription

Plan tier + credit balance (price, billing period, current/rolled-over credits)

Related MCP server: mcp-minecraft

Configuration

Grab an API key: floop keys create mcp-host (via the floop CLI) or the dashboard → Account → API Keys. Business plan required to mint new keys.

The server reads FLOOP_API_KEY from the environment. Optionally override FLOOP_API_URL to point at staging.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %AppData%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "floopfloop": {
      "command": "npx",
      "args": ["-y", "@floopfloop/mcp"],
      "env": { "FLOOP_API_KEY": "flp_..." }
    }
  }
}

Restart Claude Desktop; the tools show up under the 🔌 icon.

Cursor

~/.cursor/mcp.json (or Cursor Settings → Tools & Integrations → MCP):

{
  "mcpServers": {
    "floopfloop": {
      "command": "npx",
      "args": ["-y", "@floopfloop/mcp"],
      "env": { "FLOOP_API_KEY": "flp_..." }
    }
  }
}

Generic MCP host

Any host that speaks the MCP stdio transport can run the server:

FLOOP_API_KEY=flp_... npx -y @floopfloop/mcp

Install

The package is pulled in automatically via npx -y @floopfloop/mcp in the config snippets above. If you prefer a pinned install:

npm install -g @floopfloop/mcp
which floop-mcp

Usage notes

  • create_project starts a build right away. Follow up with wait_for_live (blocks) or project_status (poll) to know when it's up.

  • wait_for_live defaults to a 10-minute ceiling (bounded by timeoutMs, capped at 30 min). Most builds finish in under two minutes.

  • upload_from_pathrefine_project is the canonical attachment flow: call upload_from_path with a local file, get back an UploadedAttachment ({key, fileName, fileType, fileSize}), then pass it as attachments: [<that object>] on refine_project. The LLM host's process needs read access to the file path; max 5 MB.

  • refine_project codeEditOnly: true runs a 3-step in-place patch instead of a full 6-step rebuild and charges roughly half the credits — use it for copy edits, colour swaps, or typo fixes on a project that's already live. The backend won't promote a code-edit to a full refinement automatically, so prefer plain refine_project when the change actually needs redesign.

  • cancel_projectreactivate_project is the abort/redo pattern. cancel_project is destructiveHint: true; hosts should confirm before calling it. reactivate_project triggers a fresh build at the project's most recent prompt.

  • set_secret / remove_secret are marked destructiveHint: true — hosts may ask the user to confirm before they run.

  • list_secrets only returns names, never values. Secret values cannot be retrieved once written; rotate them by re-setting.

  • On failure, tools return an MCP isError content result rather than tearing down the session, so the host displays the error to the user.

Development

git clone https://github.com/FloopFloopAI/floop-mcp.git
cd floop-mcp
npm install
npm run typecheck
npm run build

FLOOP_API_KEY=flp_... node dist/index.js

To smoke-test the stdio handshake without an LLM host:

printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | FLOOP_API_KEY=flp_dummy node dist/index.js 2>/dev/null

Releasing

.github/workflows/release.yml publishes to npm with provenance whenever a tag matching mcp-v* is pushed. One-time setup before the first release:

  1. Create an automation npm token on the @floopfloop scope (publishes bypass 2FA by design when tokens are marked automation).

  2. Add it as the repo secret NPM_TOKEN:

    gh secret set NPM_TOKEN --repo FloopFloopAI/floop-mcp
    # paste token when prompted — do NOT use --body, which can leak it to
    # shell history.
  3. Tag + push:

    npm version 0.1.0-alpha.1 --no-git-tag-version  # if needed
    git tag mcp-v$(node -p "require('./package.json').version")
    git push --follow-tags

The workflow typechecks, builds, runs the stdio smoke test, verifies the tag matches package.json, then publishes and cuts a GitHub Release (prerelease, auto-generated notes).

License

MIT

Available Tools

12 tools
check_subdomainCheck subdomain availabilityA
Read-onlyIdempotent

Check whether a given subdomain slug is free.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already explicitly mark as readOnly (readOnlyHint: true) and idempotent (idempotentHint: true). Description adds confirmation of read-only check behavior ('Check whether'). No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and simple input (1 string), description is adequate for a basic check. However, lacks details on return format (boolean vs status) or error conditions, which with simple tools may be acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage for the 'slug' parameter, but the description adds meaning by stating it checks availability, implying 'slug' is the subdomain to check. No additional details on format or constraints beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool checks subdomain availability with 'Check whether a given subdomain slug is free.' This is specific enough, but doesn't differentiate from sibling 'suggest_subdomain' which might also check availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs alternative tools like 'suggest_subdomain'. No context on prerequisites or typical workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_projectCreate a projectA

Create a new FloopFloop project from a natural-language prompt. Build kicks off immediately. Call wait_for_live to block until the site is up, or poll project_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesNatural-language brief for the project
nameNo
subdomainNoOverride the auto-suggested subdomain slug
botTypeNoDefault is site
isAuthProtectedNo
teamIdNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=false and idempotentHint=false. The description adds important behavioral context: 'Build kicks off immediately', implying the operation is not instant and has side effects. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short, front-loaded sentences. No waste; every sentence provides critical information: what it does, the action it triggers, and recommended follow-ups.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (6 params, 1 required) and no output schema, the description covers the core behavior (project creation, immediate build) and next steps. It omits details on return value, but the sibling tool project_status suggests the project can be polled. Slight gap for new users on output, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, so some parameters (e.g., prompt, subdomain, botType) have descriptions, but name and teamId are documented only by name. The description does not add meaning beyond what the schema provides, but it does mention that the project is created from a 'natural-language prompt' which aligns with the prompt parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'a new FloopFloop project', and specifies the input is a 'natural-language prompt'. This differentiates it from siblings like refined_project (which refines) and project_status (which checks status), establishing a distinct purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use it ('Create a new FloopFloop project from a natural-language prompt') and suggests follow-up tools: 'Call wait_for_live to block until the site is up, or poll project_status.' It does not explicitly state when not to use it, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_projectGet a projectA
Read-onlyIdempotent

Fetch a single project by id or subdomain. Returns the project's url, status, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesProject id (uuid) or subdomain
teamIdNoTeam id (uuid) if the project lives in a team

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint as true, making it clear this is a safe, read-only operation. The description adds the specific output fields, which is helpful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, concise, and front-loaded with the core action. Every sentence adds value: first sentence states what it does, second specifies return fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the good annotations, complete schema, and no output schema, the description is sufficient. It could optionally mention pagination or performance, but not necessary for such a straightforward read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description doesn't need to add much. It mentions the ref parameter (id or subdomain) but doesn't elaborate on the teamId parameter. Baseline 3 is appropriate since schema already documents both parameters clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool fetches a single project by id or subdomain, and lists the returned fields (url, status, metadata). This is a specific verb-resource combination that distinguishes it from siblings like list_projects or check_subdomain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when you need a known project by id/subdomain) but doesn't explicitly compare to alternatives like list_projects or check_subdomain. However, the sibling list provides context, and the tool's purpose is clear enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsList projectsA
Read-onlyIdempotent

List all FloopFloop projects the authenticated user has access to. Optionally scope to a team.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdNoTeam id (uuid) to scope to

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and idempotentHint, and the description adds that it returns projects the user has access to, which is consistent. No contradictions. However, it does not mention pagination or rate limits, which would be valuable for a list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence that front-loads the purpose and includes the optional scope. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema (1 optional param), no output schema, and safe annotations (readOnly, idempotent), the description is sufficiently complete. It could mention that the result is a list, but the name and purpose imply that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage, so the description need not detail the parameter. The optional team scoping is mentioned but adds no semantics beyond the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists 'all FloopFloop projects the authenticated user has access to' with an optional team scope, matching the name and differentiating from siblings like get_project (single project) or create_project (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use (list projects for the user, optionally scoped to a team), but does not explicitly state when not to use or compare to alternatives like get_project or whoami.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_secretsList a project's secretsA
Read-onlyIdempotent

List secret keys for a project. Values are never returned — only names, because FloopFloop stores secrets one-way-encrypted.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesProject id or subdomain

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the description only needs to add beyond that. It adds value by revealing that secrets are stored one-way-encrypted and thus values are never returned, which is not captured in annotations. This is useful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey purpose, behavior, and limitation. Front-loaded with key action and scope. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and clear annotations, the description covers purpose, behavior, and limitation. No output schema exists, but the description explains what is returned (names only), which is sufficient. Could optionally mention pagination or ordering, but not required for this simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with a single required parameter 'ref' described as 'Project id or subdomain'. The description does not add any additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists secret keys for a project, explicitly distinguishing that values are never returned. This differentiates it from sibling tools like set_secret or remove_secret, and clarifies it's a read-only operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies when to use (to list secret names) and notes that values are not returned, which helps set expectations. However, it does not explicitly say when not to use it or compare with siblings like list_projects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_statusProject build statusA
Read-onlyIdempotent

Fetch the current build/deploy status for a project. Cheap — safe to call in a polling loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesProject id (uuid) or subdomain

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already readOnlyHint and idempotentHint, which tell the agent it is a safe read. The description adds 'Cheap — safe to call in a polling loop', which provides helpful behavioral context about cost and non-destructiveness beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the purpose and usage guidance. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single parameter, no output schema, and clear annotations, the description covers the essential behavioral and usage aspects. Could mention the return format (e.g., JSON with status fields) for completeness, but current description is nearly sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the one parameter 'ref' is described as 'Project id (uuid) or subdomain'). The description does not add further meaning to the parameter, which is acceptable since schema fully documents it. Score baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb ('Fetch'), the resource ('current build/deploy status'), and the scope ('project'). It distinguishes itself from sibling tools like 'get_project' (which likely returns broader project details) and 'check_subdomain' (a different check).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes cheapness and safety for polling loops, which preemptively guides when to use this tool (frequent calls) vs. more expensive or write operations (siblings like 'refine_project', 'set_secret' are not suitable for polling).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refine_projectRefine a project with a new instructionA

Send a refinement message to an existing project. Triggers a follow-up build unless the backend decides it's a code-only edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesProject id or subdomain
messageYesWhat to change
waitNoIf true, block until the follow-up build reaches live/failed/cancelled.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals key behavioral traits beyond annotations: it 'triggers a follow-up build' and notes the backend may decide it's 'code-only edit', implying conditional behavior. However, it does not clarify whether the tool is idempotent or what happens if called repeatedly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundancy, but slightly more could be packed into the first sentence for quicker understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that output schema and annotations are limited, the description covers key behavioral aspects (triggers build, conditional code-only edit). It could mention what happens if wait is true/false more explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds little extra meaning. It mentions 'refinement message' linking to the 'message' parameter context, but otherwise the schema already explains the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'send[s] a refinement message' to a project, with a specific verb and resource, distinguishing it from sibling tools that create or get projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the tool triggers a build, but does not explicitly state when to use this tool over others (e.g., create_project), nor does it provide alternative guidance or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_secretRemove a project secretA
DestructiveIdempotent

Delete a secret from a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesProject id or subdomain
nameYesSecret key to delete

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint and idempotentHint. The description adds no further behavioral detail, but annotations are sufficient. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, clear sentence. Every word earns its place. Perfect length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive action with good schema and annotations, description is adequate. Could mention reversibility or authorization, but no output schema required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters (ref, name). The description does not add extra context beyond schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete a secret from a project.' uses a strong verb ('Delete') and clearly identifies the resource (secret from a project). It distinguishes from siblings like set_secret and list_secrets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need to remove a secret, but provides no guidance on when not to use it or how it differs from other deletion or mutation tools. No alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_secretSet a project secretB
DestructiveIdempotent

Create or overwrite an environment secret on a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesProject id or subdomain
nameYesSecret key, e.g. STRIPE_SECRET_KEY
valueYesSecret value. Treat as sensitive.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint (overwriting) and idempotentHint (safe to retry), which the description echoes by 'create or overwrite'. This adds value beyond annotations by clarifying the overwrite behavior, but does not detail what happens to existing or non-existing secrets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, well-front-loaded with verb and object. Could arguably be more concise, but is clear and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with 3 params and no output schema, the description covers the core action. However, lacks information about permissions, side effects (e.g., triggering rebuilds), or behavior when ref is invalid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a description, but the description adds no additional meaning beyond the schema. For example, 'ref' is described as 'Project id or subdomain' in schema; description does not elaborate on format or validation, nor explain dependencies between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool creates or overwrites an environment secret on a project, with specific verb-resource combination. However, it does not explicitly distinguish from the sibling 'remove_secret' tool, which is obvious given the opposite action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for setting secrets but provides no guidance on when to use this vs. alternatives like 'list_secrets' or 'remove_secret'. No mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_subdomainSuggest a subdomain from a promptB
Read-only

Ask the backend to generate a friendly subdomain slug based on a natural-language prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, but description does not clarify that it's a read-only operation (it calls it a 'generation', which could imply state change). No details on idempotency (annotations indicate idempotentHint=false, but behavior not explained) or whether slug is guaranteed unique.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise and front-loaded with action verb. No wasted words, but could benefit from brief additional usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simplicity of tool (one param, no output schema), description covers basic purpose and input. However, missing details on output format (what does the slug look like?), uniqueness guarantee, and integration with check_subdomain make it slightly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only one parameter, schema coverage is 0%, but description adds meaning: 'prompt' is a natural-language description for generating a slug. Clearly states input is a natural-language prompt, which schema does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a friendly subdomain slug from a natural-language prompt, using verbs 'generate' and 'suggest'. It distinguishes from sibling 'check_subdomain' by focusing on generation rather than validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when needing a subdomain suggestion, but lacks explicit guidance on when to use vs alternatives like manual naming or check_subdomain. No mention of prerequisites or constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_liveWait until a project is liveA
Read-onlyIdempotent

Block (polling every 2 s) until the project reaches a terminal state. Returns the final Project on success, an error result on build-failed or build-cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesProject id or subdomain
timeoutMsNoMax wait in ms. Defaults to 10 minutes.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral details beyond annotations: polling interval (2s), terminal states, and return conditions (success vs error). Annotations already declare readOnlyHint and idempotentHint, so additional behavioral context is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, both essential, with key details front-loaded. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema), the description covers the core behavior. It notes that timeout defaults to 10 minutes, which is useful. However, it could mention what happens on timeout (returns error presumably) for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and descriptions are provided in schema. The description adds no further parameter specifics beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Wait' and target resource 'project', and mentions the polling behavior and terminal states. However, it could more precisely differentiate from sibling tool 'project_status' which also deals with project states.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when waiting for a project to finish, but does not explicitly state when to use this versus alternatives like 'project_status' or how it differs from checking manually.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiShow the authenticated userA
Read-onlyIdempotent

Return the current user's id, email, and plan.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint as true, so the description does not need to reiterate safety. However, the description adds value by specifying exactly which fields are returned (id, email, plan), which is not evident from the annotations alone. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clear sentence that efficiently communicates the tool's output. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no parameters and no output schema, the description sufficiently explains what the tool returns. The lack of output schema means the description partially compensates by listing return fields. However, it does not mention any additional context like rate limits or authentication requirements, but the annotations handle safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and 100% schema description coverage, so the description does not need to explain parameters. The description's mention of return fields adds meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the current user's id, email, and plan. It is specific about what the tool outputs, distinguishing it as a self-inspection tool. However, it does not explicitly differentiate from siblings like check_subdomain, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing authenticated user details, but it does not provide explicit guidance on when to use this tool vs alternatives or when not to use it. Context signals and sibling tools suggest no overlap, so the usage is straightforward.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct resource (project, secret, subdomain) with clear actions. No overlap: check_subdomain vs suggest_subdomain are separate operations, and wait_for_live complements create_project without ambiguity.

Naming Consistency4/5

Tools mostly follow verb_noun pattern (e.g., create_project, remove_secret, list_projects). whoami is a mild deviation but is a common convention. Minor inconsistency: project_status is noun-based while others are verb-based.

Tool Count5/5

12 tools is well-scoped for a project management MCP. Each tool covers a necessary operation without bloat, from project CRUD to secret and subdomain management.

Completeness4/5

Covers core project lifecycle (create, get, list, refine, status) and secret management (list, set, remove). Missing update_project (rename) or delete_project, but these might be intentional gaps for safety.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FloopFloopAI/floop-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server