Skip to main content
Glama

Create project

create_project

Create a project for one web app: the target URL, the login-success URL fragment (the address bar contains it after signing in), the legal attestation that the customer may record this app, extra hosts the app talks to, and the demo user's credentials stored as encrypted variables. Do this once per app; reuse the returned project id.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesProject name shown in the dashboard, e.g. the app's name.
frameNoDefault frame for phone/tablet videos: portrait (9:16, default), landscape (widescreen 16:9) or none (full screen).
voiceNoNarration voice id from list_voices (default: the language's default voice).
deviceNoDefault device for this project's videos: desktop (default) or a phone/tablet preset (desktop, iphone, iphone-max, android, android-large, ipad, ipad-pro, android-tablet). Any run can override it.
backdropNoDefault backdrop behind the phone frame: neutral (default) or brand.
languageNoNarration language code from list_voices (default en).
variablesNoDemo credentials, e.g. [{name: "USERNAME", value: "demo@example.com"}, {name: "PASSWORD", value: "…"}], referenced in guides as {USERNAME}. Stored encrypted and never returned by any tool. A value passed here goes through the conversation; to keep it out of chat, leave variables out and set them on the project's page in the Screen Browser dashboard.
app_localeNoBCP-47 code of the app's interface language (de, pt-BR). Guides can be in any language; the recorder looks for the words the page shows. Omit for English.
target_urlYesThe app's login or home page, e.g. https://app.example.com/login
allow_hostsNoOther hosts the app loads or calls (API, CDN, auth). The recording browser can reach only the target host plus these.
attestation_typeYesLegal basis for recording this app: {"self_owned":"I own or operate this application.","client_authorized":"My client has authorised me to record this application on their behalf.","internal_tool":"This is an internal tool and I have authority to record it."}
login_success_textNoLogin gate: visible text present only when signed in, e.g. "Sign out".
login_success_selectorNoLogin gate: a CSS selector visible only when signed in, e.g. nav a[href="/campaigns"].
login_success_url_containsNoLogin gate: URL fragment present only after a successful login, e.g. /dashboard. If the app lands on the root URL after login, use login_success_selector or login_success_text instead. At least one gate is required; recording never starts before it passes.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
nextYesWhat to do now.
attestedYes
hostnameYesThe attested host.
variablesYesVariable names stored; values are never returned.
project_idYesUse with put_variables, put_guide, validate_guide and start_run.
target_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / variables / description
      Previous value: -"Demo credentials, e.g. [{name: \"USERNAME\", value: \"demo@example.com\"}, {name: \"PASSWORD\", value: \"…\"}]. Stored encrypted; referenced in guides as {USERNAME}."New value: +"Demo credentials, e.g. [{name: \"USERNAME\", value: \"demo@example.com\"}, {name: \"PASSWORD\", value: \"…\"}], referenced in guides as {USERNAME}. Stored encrypted and never returned by any tool. A value passed here goes through the conversation; to keep it out of chat, leave variables out and set them on the project's page in the Screen Browser dashboard."
    • changedInput schema / properties / variables / items / properties / value / description
      Previous value: -"Stored encrypted; typed by the recorder, never shown to a model."New value: +"Stored encrypted, typed only by the recorder and never returned by any tool."
  2. First observed

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, and the description's 'do this once per app' is consistent with non-idempotency. It adds that credentials are 'stored as encrypted variables' and that recording gates on login success, but says nothing about auth scopes, quotas, or what the returned id unlocks beyond reuse.

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 sentences, front-loaded with the core action and ending with the persistence rule. The second sentence is long and packs five concepts into one clause chain, but nothing is redundant with the title.

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 14-param creation tool with an output schema and full annotations, the description covers the workflow-critical concepts (login gate, legal attestation, extra hosts, encrypted credentials) and the reuse rule. The presentation defaults it omits are safely documented in the schema, so the gaps are minor.

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 schema already documents all 14 parameters including enums and defaults. The description narrates only the salient subset (target_url, login gate, attestation, allow_hosts, variables) in prose; frame, voice, device, backdrop, language and app_locale are left entirely to the schema. Baseline 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?

Opens with a specific verb+resource: 'Create a project for one web app', then enumerates the substantive content the project holds (target URL, login gate, attestation, hosts, credentials). It does not name update_project explicitly, but 'Do this once per app; reuse the returned project id' implicitly separates it from the update path.

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?

'Do this once per app; reuse the returned project id' gives real context on expected call frequency and post-creation behavior. There are no explicit exclusions or named alternatives, so it stops short of 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.