Skip to main content
Glama

CreateDatabase

A database project, Postgres or Valkey: the machine writes its compose.yaml and /.env and deploys it, with no address. Make it before the app that uses it: the app reaches it at the host <project_id> once linked (link, or LinkDatabase after the app's CreateProject), and Project.database says how to sign in. Or a copy of a database's snapshot, with passwords of its own and none of its links. Answers as CreateProject does. INVALID_ARGUMENT = an engine or a size Machine.database_engines does not offer, or a project_id with "_", that is a number or that every container's /etc/hosts names (it is the host name apps use). NOT_FOUND = no such snapshot or app. FAILED_PRECONDITION = the snapshot is of no database of that engine; + DatabaseLinkRefusal = an app of link cannot be linked, and nothing was created.

Input Schema

NameRequiredDescriptionDefault
linkNoApp project_ids, linked before its operation ends.
engineNo
project_idNoAs CreateProject's, without "_", not a number and no name of /etc/hosts: it is the host name apps use.
operation_idNoAs DeployProject's operation_id.
wait_secondsNoAs DeployProject's wait_seconds.
from_snapshot_idNoA snapshot of a database of `engine` (Project.snapshots, GetMachine.deleted_projects): the new one starts with its data. Empty = an empty database.
memory_limit_bytesNoOne of the engine's DatabaseEngineOffer.sizes. 0 = its default_memory_limit_bytes; a copy keeps its snapshot's.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior5/5

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

Beyond annotations (readOnly=false, destructive=false, idempotent=false, openWorld=true) it discloses that the machine writes compose.yaml and /.env and deploys the project, that the database has no address and is reached via the `<project_id>` host once linked, and that snapshot copies get their own passwords and no links. The error taxonomy (INVALID_ARGUMENT, NOT_FOUND, FAILED_PRECONDITION, DatabaseLinkRefusal) plus the crucial 'nothing was created' guarantee on link refusal is exactly the kind of context annotations cannot carry.

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

Conciseness3/5

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

It is front-loaded with the core action and wastes little on filler, but the prose is telegraphic and run-on, with clauses like 'a project_id with "_", that is a number or that every container's /etc/hosts names' requiring re-reading. The error-code block earns its space; the sentence structure is what drags this down.

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 7-parameter, zero-required, mutating tool with no output schema, the description covers deployment mechanics, linking, snapshot provenance, and failure modes thoroughly. The remaining gap is return-value shape, deferred with 'Answers as CreateProject does', which leaves the agent to consult a sibling tool for the response.

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 already 86%, so the baseline is 3, but the description adds real semantics on top: project_id is the host name apps use and is barred from '_', numeric, or /etc/hosts names; snapshot copies carry their own passwords and none of the source's links; engine/size validity is tied to Machine.database_engines. It does not explain operation_id or wait_seconds beyond pointing at DeployProject's definitions, which the schema already does.

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 opening clause states the specific resource and its two engines ('A database project, Postgres or Valkey') and the secondary snapshot-copy mode is called out explicitly. It also implicitly separates itself from CreateProject (app) and LinkDatabase by naming them as the linking path, though the dense phrasing makes the distinction slightly harder to extract than it should be.

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?

Gives explicit ordering guidance ('Make it before the app that uses it') and names the alternative path for linking ('`link`, or LinkDatabase after the app's CreateProject'). It also frames the snapshot-copy variant as an alternative to an empty database. No explicit when-not-to-use case, which keeps it off a 5.

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.

Resources