Skip to main content
Glama

project_create

Idempotent

Pre-register a project with a human-readable name and optional description before any content is written. Use for projects that need proper naming up front, including isolated ones.

Instructions

Register a project up front, with a human-readable name and an optional description. You rarely need this: any durable write naming an unknown project slug (memory_write, notes_create, tasks_add, capture_url, trial_record) already registers that project, and a git repo maps itself to one on its first session. Reach for this only to give a project a proper name and description BEFORE anything is written into it, or to create one you will not write to yet -- an auto-registered project is named after its own slug until someone fixes it. Call project_list first: coining a near-duplicate of an existing slug is the failure mode here. To divide an existing project into children, use gardener_split rather than creating them by hand. The slug defaults to a slugified name; "global" and "all" are reserved, and an existing slug is an error, not an update -- this never renames or edits a project.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYeshuman-readable project name
slugNooptional explicit slug
isolationNooptional isolation state (open|confidential|sealed); omit for open. open shares normally. confidential means nothing leaves: agents in other projects never read this one, and agents bound to it cannot write outside it. sealed adds the inbound half -- agents here see only this project: no global memories, no family, no cross-project reads. Set it at creation for work that is sensitive from the start; there is no tool to change it afterwards, because tightening detaches family and parent links and is an owner decision, made on an owner surface. Isolation requires a standalone project, so do not create an isolated child of another project.
descriptionNooptional one-line description
Behavior1/5

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

While the description is exceptionally transparent about error semantics and slot defaults, it directly contradicts the idempotentHint=true annotation. It states 'an existing slug is an error, not an update' meaning a second identical call with the same slug would fail, which is the opposite of idempotent behavior. Per the rule, a description that contradicts annotations receives a score of 1.

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 dense but every sentence adds value: the opening states the core operation, then the rarity is conveyed, then specific usage guidance, then failure mode, then alternative, then slug rules. It is front-loaded with the most critical information and contains no fluff or redundancy. The length is justified by the number of important caveats.

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?

Despite missing an output schema, the description covers all relevant context: why you rarely need it, when to reach for it, prerequisites (project_list), failure modes (duplicate slugs), reserved names, isolation constraints, and the fact that it never renames/edits existing projects. No important context is missing for a creation tool of this complexity.

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 schema already provides descriptions for all parameters, but the tool description adds meaningful context beyond the schema: the slug defaults to a slugified name, 'global' and 'all' are reserved, and an existing slug causes an error rather than an update. These details help the agent understand parameter behavior that isn't in the schema.

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 opens with a specific verb and resource: 'Register a project up front, with a human-readable name and an optional description.' It clearly distinguishes this from sibling tools by explaining that memory_write, notes_create, tasks_add, capture_url, and trial_record auto-register projects, and that gardener_split handles project division. The purpose is unmistakable.

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 states when NOT to use this tool ('You rarely need this'), provides the exact condition for using it ('only to give a project a proper name and description BEFORE anything is written into it, or to create one you will not write to yet'), and directs users to call project_list first to avoid duplicate slugs. It also names gardener_split as the alternative for subdividing projects.

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

Install Server

Other Tools

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/0spoon/seamless'

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