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. Then call get_guide_instructions before writing the guides.

Input 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

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
project_urlYesThe project page in the dashboard, where the user can set credentials without sharing them here.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / project_url
      Added value: +{
      +  "description": "The project page in the dashboard, where the user can set credentials without sharing them here.",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "project_id",
      -  "name",
      -  "target_url",
      -  "hostname",
      -  "attested",
      -  "variables",
      -  "next"
      -]New value: +[
      +  "project_id",
      +  "name",
      +  "target_url",
      +  "hostname",
      +  "attested",
      +  "variables",
      +  "project_url",
      +  "next"
      +]
  2. 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."
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds meaningful context beyond them: credentials are stored encrypted and never returned by any tool, and users can avoid passing secrets through chat by setting variables in the dashboard. It also signals non-idempotency by saying 'do this once per app,' consistent with idempotentHint=false. It does not spell out what happens if a duplicate project is created, which keeps it at 4 rather than 5.

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?

Three tight sentences that front-load the action and its required inputs before the sequencing instruction. Slight density from the embedded list of inputs, but no wasted prose.

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-parameter creation tool with a full schema and an output schema, the description covers the workflow-critical facts: required legal attestation, credential handling, and the mandatory follow-up call. Return values are covered by the output schema and the mention of 'the returned project id'.

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 thoroughly. The description reinforces intent for the required trio (target URL, login-success URL fragment, attestation, allowed hosts) but says nothing about the many optional presentation parameters (frame, voice, device, backdrop, language, app_locale), so it adds only modest value over the schema baseline.

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') plus the domain object it encapsulates ('for one web app'), then enumerates the key inputs (target URL, login-success fragment, attestation, extra hosts, credentials). An agent can distinguish it from update_project or the guide tools without opening the schema.

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?

Explicitly says 'Do this once per app; reuse the returned project id. Then call get_guide_instructions before writing the guides,' giving both cardinality guidance and the required next step in the workflow. This directly names a sibling tool and the condition that selects it.

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.