Skip to main content
Glama

Create project

create_project

Create a project on a server: the home for one web page, site, app, API or bot, with its own URL at .apps.server4agent.com. Projects default to private; set visibility to "public" to expose that URL. Use lifecycle="ephemeral" for one-shot work that should be cleaned up when done (call cleanup_project after); default is "persistent" for long-lived monitors / dashboards / tools. Pass template (see list_templates) to apply a starter's defaults, or a source to seed the workspace from your own code (kind git/archive); name is derived from the repo/archive when omitted. Pass secrets to set project-scoped env vars at creation (values are write-only). Explicit fields override the template. Fails if the server is at its tier's project cap. Returns listen_port, the port inside the box that this project's URL is routed to: a project serves only while a process is listening there, so bind that rather than a port of your own choosing.

Input Schema

NameRequiredDescriptionDefault
nameNoHuman-friendly project name. Optional when a source or template supplies one.
accessNoWho may open the URL once visibility is public. public = anyone with the link (default). team = the visitor has to sign in to Server4Agent and be a member of this account. password = anyone with the link who enters the password given in access_password, no account needed. No effect while the project is private.
sourceNoWhere to seed the workspace from. Omit for a blank project. For your own code use kind 'git' (git_url, optional ref/subdir/auth_secret) or 'archive' (archive_path).
secretsNoProject-scoped env vars to set and bind. Values are write-only.
templateNoOptional template id from list_templates (e.g. 'import-git', 'invoice-and-quote-maker'). Pre-fills name/description/visibility/lifecycle; any explicit field overrides the template's default.
lifecycleNopersistent = lives until deleted (default). ephemeral = call cleanup_project when the task is done.
server_idYesThe server's id, as returned by create_server or list_servers.
visibilityNopublic = live at the project URL; private = not publicly reachable. Defaults to private.
descriptionNoOptional one-line description.
access_passwordNoThe password visitors enter when access is password. Required with access password. At least 4 characters, so a 4 digit code works. Write-only: it is stored encrypted and never returned.

Output Schema

NameRequiredDescriptionDefault
idYesProject id.
urlNoPublic URL. null while the project is private.
nameNoProject name.
noteNoSet when the project was created but its code was not set up, with what to do instead.
slugNoURL slug. Stays the same when visibility changes.
accessNoWho may open the URL once it is public.
sourceNoWhat the workspace was seeded from: kind plus git_url, ref, subdir, or archive_path.
templateNoTemplate id it was created from.
lifecycleNoephemeral projects are removed with cleanup_project.
server_idYesThe server the project lives on.
created_atNoISO 8601 timestamp.
init_phaseNoWhere bring-up has got to, for a project seeded from a source.
updated_atNoISO 8601 timestamp.
url_statusNoWhether the address and certificate are ready. Not a health check.
visibilityNopublic = live at url. private = not publicly reachable.
cert_statusNoState of the shared certificate. null while private.
descriptionNoOne-line description.
init_run_idNoThe bring-up run started for a git or archive source. Poll it with get_run.
listen_portNoThe port inside the box this project's URL is routed to.
runtime_statusNoWhether the project is running or paused.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare non-read-only, open-world, non-idempotent, non-destructive, so the description focuses on what annotations cannot express: the cap-based failure mode, secrets being write-only, template-default override precedence, and the critical operational fact that a project only serves while a process listens on `listen_port`. It does not discuss deletion/teardown reversibility beyond pointing at cleanup_project, which is a minor gap.

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?

One dense paragraph, front-loaded with purpose and URL semantics before lifecycle/template/secrets details. Nearly every sentence carries distinct operational information, though the block is long enough that a reader must scan rather than parse quickly; splitting the `listen_port` note into its own line would help.

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?

For a 10-parameter nested-object creation tool with an output schema, the description covers the decisions the schema cannot: seeding strategy, lifecycle/cleanup pairing, template override precedence, cap failure, and the binding requirement for `listen_port`. An agent has everything needed to call it correctly.

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, and the description earns a step up by adding rules not in the schema: name is derived from the repo/archive when omitted, explicit fields override template defaults, and secrets are write-only env vars bound at creation. The access vs visibility interplay is left to the schema, which is reasonable.

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?

States a specific verb and resource ("Create a project on a server") and immediately scopes what a project is: a home for one web page/site/app/API/bot with its own URL. It distinguishes itself from create_server and from list_templates by naming the prerequisite relationships explicitly.

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?

Gives concrete when-to-use routing: lifecycle="ephemeral" for one-shot work plus "call cleanup_project after", persistent as the default for monitors/dashboards; `template` when a starter exists vs `source` for your own code. It also names the failure condition (tier project cap), so the agent knows when this call will not succeed.

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.