Skip to main content
Glama

create_project

Destructive

Creates a new project and (by default) binds it as the active project for this API key. Optional primaryKind: 'org' (default), 'entity', 'data-source', 'arch', 'process', 'journey', 'captable'. Returns the new projectId. ⚠️ The binding is NOT guaranteed: activeProjectBound in the response says whether it happened — it is false when setActive:false, when there is no API key (chat), OR when the binding write failed (activeProjectWarning then says so). The project is created either way; boundProject always reflects the REAL session binding, which is what a destructive call acts on.

Input Schema

NameRequiredDescriptionDefault
nameYesProject name
setActiveNoIf true (default), binds the project to the API key after creation
primaryKindNoDefault diagram kind (default: org)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / name / description
      Previous value: -"Nom du projet"New value: +"Project name"
    • changedInput schema / properties / primaryKind / description
      Previous value: -"Type de diagramme par défaut (défaut: org)"New value: +"Default diagram kind (default: org)"
    • changedInput schema / properties / setActive / description
      Previous value: -"Si true (défaut), lie le projet à la clé API après création"New value: +"If true (default), binds the project to the API key after creation"
  2. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=true; the description goes well beyond that by disclosing that the active-project binding is NOT guaranteed, that the project is created regardless, and that activeProjectBound/activeProjectWarning must be inspected. Crucially it explains why a create tool carries destructiveHint — boundProject is the real session binding that a later destructive call acts on — which is exactly the context annotations cannot convey.

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?

Front-loaded with the action and default behavior, then the return fields, then the warning — a sensible order. The final warning run is dense but every clause (setActive:false / no API key / write failure) corresponds to a distinct condition, so little is wasted.

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

Completeness5/5

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

There is no output schema, and the description compensates by naming the key response fields (projectId, activeProjectBound, activeProjectWarning, boundProject) and explaining how to interpret them. For a create tool with a binding side effect, an agent has everything needed to call it and verify success.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: it restates setActive's default binding behavior, confirms 'org' as the primaryKind default, and ties setActive to the activeProjectBound failure modes. It adds real semantics on top of already-complete schema docs.

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?

States a specific verb and resource ("Creates a new project") plus the important side effect (binds it as the active project for this API key) and the return value (projectId). It also enumerates primaryKind values, so an agent knows exactly what this produces. It does not, however, distinguish itself from close siblings like create_nested_project or set_active_project, leaving that comparison to inference.

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 when binding is and is not applied ("it is false when setActive:false, when there is no API key (chat)"), which is useful conditional guidance. But it never routes the agent between alternatives: nothing says when to prefer set_active_project, create_nested_project, or to create first and bind later. Usage is implied rather than stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.