Skip to main content
Glama

Get a project, or the settings

get_project
Read-onlyIdempotent

Read one project in full, or with no project_id the settings any project can take. Read a project before update_project to see its current values. Read the settings before create_project, update_project or any config argument: keys are exact, and a guessed name is refused. list_projects is the lighter way to find a project. Inputs: project_id is the hex id from list_projects, not a name or URL. An unknown id answers 404. Webhooks: a project's answer includes its webhook URL, the events sent there, and the last 10 deliveries with their status and error, to see whether the endpoint is receiving them. update_project sets them and sends a test. Secrets: the webhook signing secret is never returned, and chat_url comes back masked. Read-only and free: it reads stored data and never fetches.

Input Schema

NameRequiredDescriptionDefault
project_idNoThe project's 32-character hex id, from list_projects; omit for the settings reference.

Output Schema

NameRequiredDescriptionDefault
idNoThe project's 32-character hex id.
codeNoOnly on a failure: a machine-readable reason, e.g. read_only, validation, plan_limit or not_found.
hostNoThe site it covers; fixed at creation.
nameNoIts display name.
noteNoNo project_id only: how path globs work.
seedNoWhere its crawls start.
errorNoOnly when the call failed: what went wrong, in words an assistant can act on.
configNoIts settings as {key: value}; secrets such as chat_url come back masked.
detailNoOnly on a failure: the API's own wording, when the error was rephrased.
pagesNNoPages its last finished run read.
statusNodraft, crawling, healthy or failing. On an error, the HTTP status code.
coverageNoPercent of the site the last run reached; under 90 means removals are withheld.
settingsNoNo project_id only: every common setting as {key, meaning, default}.
webhooksNoget_project only: {url, events, deliveries}: where run and change events are POSTed, which events, and the last 10 deliveries, each {id, event, status (queued, retrying, delivered or failed), attempts, lastStatus, lastError, createdAt, deliveredAt}. The signing secret is never included.
lastRunAtNoWhen the last run started (ISO 8601), or null.
nextRunAtNoWhen the schedule runs it next, or null for manual.
retentionNoHow long runs are kept, e.g. '90d'.
schedulesNoNo project_id only: the valid schedules.
other_keysNoNo project_id only: further keys accepted but rarely needed.
scheduleKeyNomanual, hourly, daily or weekly.
webhookTestNoupdate_project with test_webhook only: {queued, id} when a test run.finished message was queued, or {error, status} when the API refused it, e.g. with no webhook URL saved.
changeSummaryNoThe last compared run in words, e.g. '3 new · 2 changed · 0 removed'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedOutput schema / description
      Previous value: -"A project, or with no project_id the settings any project can take."New value: +"A project, as get_project, create_project and update_project answer with it; get_project with no\nproject_id answers with the settings any project can take instead."
    • addedOutput schema / properties / webhookTest
      Added value: +{
      +  "description": "update_project with test_webhook only: {queued, id} when a test run.finished message was queued, or {error, status} when the API refused it, e.g. with no webhook URL saved.",
      +  "title": "Webhooktest"
      +}
    • addedOutput schema / properties / webhooks
      Added value: +{
      +  "description": "get_project only: {url, events, deliveries}: where run and change events are POSTed, which events, and the last 10 deliveries, each {id, event, status (queued, retrying, delivered or failed), attempts, lastStatus, lastError, createdAt, deliveredAt}. The signing secret is never included.",
      +  "title": "Webhooks"
      +}
  2. Changed6 schema fields changed
    • addedInput schema / properties / project_id / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / project_id / default
      Added value: +null
    • changedInput schema / properties / project_id / description
      Previous value: -"The project's id, as list_projects or create_project returns it."New value: +"The project's 32-character hex id, from list_projects; omit for the settings reference."
    • removedInput schema / properties / project_id / type
      Removed value: -"string"
    • removedInput schema / required
      Removed value: -[
      -  "project_id"
      -]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "A project, or with no project_id the settings any project can take.",
      +  "properties": {
      +    "changeSummary": {
      +      "description": "The last compared run in words, e.g. '3 new · 2 changed · 0 removed'.",
      +      "title": "Changesummary"
      +    },
      +    "code": {
      +      "description": "Only on a failure: a machine-readable reason, e.g. read_only, validation, plan_limit or not_found.",
      +      "title": "Code"
      +    },
      +    "config": {
      +      "description": "Its settings as {key: value}; secrets such as chat_url come back masked.",
      +      "title": "Config"
      +    },
      +    "coverage": {
      +      "description": "Percent of the site the last run reached; under 90 means removals are withheld.",
      +      "title": "Coverage"
      +    },
      +    "detail": {
      +      "description": "Only on a failure: the API's own wording, when the error was rephrased.",
      +      "title": "Detail"
      +    },
      +    "error": {
      +      "description": "Only when the call failed: what went wrong, in words an assistant can act on.",
      +      "title": "Error"
      +    },
      +    "host": {
      +      "description": "The site it covers; fixed at creation.",
      +      "title": "Host"
      +    },
      +    "id": {
      +      "description": "The project's 32-character hex id.",
      +      "title": "Id"
      +    },
      +    "lastRunAt": {
      +      "description": "When the last run started (ISO 8601), or null.",
      +      "title": "Lastrunat"
      +    },
      +    "name": {
      +      "description": "Its display name.",
      +      "title": "Name"
      +    },
      +    "nextRunAt": {
      +      "description": "When the schedule runs it next, or null for manual.",
      +      "title": "Nextrunat"
      +    },
      +    "note": {
      +      "description": "No project_id only: how path globs work.",
      +      "title": "Note"
      +    },
      +    "other_keys": {
      +      "description": "No project_id only: further keys accepted but rarely needed.",
      +      "title": "Other Keys"
      +    },
      +    "pagesN": {
      +      "description": "Pages its last finished run read.",
      +      "title": "Pagesn"
      +    },
      +    "retention": {
      +      "description": "How long runs are kept, e.g. '90d'.",
      +      "title": "Retention"
      +    },
      +    "scheduleKey": {
      +      "description": "manual, hourly, daily or weekly.",
      +      "title": "Schedulekey"
      +    },
      +    "schedules": {
      +      "description": "No project_id only: the valid schedules.",
      +      "title": "Schedules"
      +    },
      +    "seed": {
      +      "description": "Where its crawls start.",
      +      "title": "Seed"
      +    },
      +    "settings": {
      +      "description": "No project_id only: every common setting as {key, meaning, default}.",
      +      "title": "Settings"
      +    },
      +    "status": {
      +      "description": "draft, crawling, healthy or failing. On an error, the HTTP status code.",
      +      "title": "Status"
      +    }
      +  },
      +  "title": "ProjectOut",
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / project_id / description
      Added value: +"The project's id, as list_projects or create_project returns it."
  4. 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 readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds real behavioral context: exact keys with guessed names refused, 404 on unknown id, webhook return contents, and that the signing secret is never returned and chat_url comes back masked. It is slightly redundant in restating 'read-only and free' which annotations already imply, keeping it just below the top.

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?

The content is dense and front-loaded, with clear labeled sections (Inputs, Webhooks, Secrets) that aid scanning. It is somewhat long and repeats the read-only nature already covered by annotations, but nearly every sentence carries actionable detail.

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?

An output schema exists so return values need not be fully specified, yet the description still summarizes what a project's answer contains (webhook URL, events, last 10 deliveries with status and error). Combined with mode, input, and secret-handling coverage, 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, but the description adds genuine meaning beyond the schema: project_id is the hex id from list_projects, explicitly not a name or URL, and an unknown id returns 404. This closes the practical failure modes an agent would otherwise hit.

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 states a precise verb and resource ('Read one project in full') and disambiguates its dual mode by explaining that omitting project_id returns the settings any project can take. It also positions itself against siblings, naming list_projects as the lighter way to find a project.

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?

Explicit sequencing guidance is given: read before update_project to see current values, and read settings before create_project, update_project, or any config argument. It also names the alternative (list_projects) and the condition that selects it, leaving nothing to inference.

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.