Skip to main content
Glama

Update a project

update_project
Idempotent

Update a project the caller belongs to. action submit sends a draft or unpublished project for review. An edit to a published project, including primaryLang or the other language, stays off the live page until it is approved. One project write when the content changes. data is optional portfolio chart JSON: percentages and history values are numbers, text fields are short, and the object is at most 12 KB. data is saved immediately and does not wait for review.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "slug": "<slug>"
    },
    "name": "update_project"
  }
}

Input Schema

NameRequiredDescriptionDefault
dataNoPortfolio chart data. allocation actualPct and targetPct, and each history value, must be numbers. Labels, dates, colors, and historyNote are short text without HTML. At most 12 KB.
slugYesProject slug.
linksNoReplacement https links. No shorteners.
titleNoReplacement title.
actionNosave or submit. submit asks for review.
membersNo
summaryNoReplacement summary.
sectionsNoReplacement headed Markdown sections. Headings and markdown together stay at or under 20 KB.
primaryLangNoPrimary language: en or ru. Omit it to keep the current one.
translationNoThe other language. Null removes it. Omit it to keep the current one. A published change waits for review.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / data
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Portfolio chart data. allocation actualPct and targetPct, and each history value, must be numbers. Labels, dates, colors, and historyNote are short text without HTML. At most 12 KB.",
      +  "type": "object"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / primaryLang
      Added value: +{
      +  "description": "Primary language: en or ru. Omit it to keep the current one.",
      +  "maxLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / translation
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The other language. Null removes it. Omit it to keep the current one. A published change waits for review.",
      +  "properties": {
      +    "images": {
      +      "description": "Captions for image ids that are already on the project.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "alt": {
      +            "description": "Caption in the other language.",
      +            "maxLength": 140,
      +            "type": "string"
      +          },
      +          "id": {
      +            "description": "Existing image id.",
      +            "maxLength": 64,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "alt"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "lang": {
      +      "description": "The other language: en or ru.",
      +      "maxLength": 2,
      +      "type": "string"
      +    },
      +    "sections": {
      +      "description": "Headed Markdown in the other language. Headings and markdown together stay at or under 20 KB.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "heading": {
      +            "description": "Section heading.",
      +            "maxLength": 80,
      +            "type": "string"
      +          },
      +          "markdown": {
      +            "description": "Section markdown. No HTML, secrets, payment details, financial promises, or other brands.",
      +            "maxLength": 20000,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "heading",
      +          "markdown"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 12,
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "summary": {
      +      "description": "Summary in the other language.",
      +      "maxLength": 280,
      +      "type": "string"
      +    },
      +    "title": {
      +      "description": "Title in the other language.",
      +      "maxLength": 80,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "title",
      +    "summary",
      +    "sections"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  3. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, idempotent, non-destructive), so the description's job is the extra context it provides: that edits to published projects stay off the live page pending approval, and that data saves immediately without waiting for review. That review-lifecycle and immediacy disclosure is exactly the non-obvious behavior an agent needs before writing.

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?

Front-loaded with purpose and review semantics, which are the highest-value sentences. The data constraint sentence substantially duplicates the schema's own data description, costing some density but not readability.

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 10-parameter nested mutation with no output schema, the description covers the essential unknowns: ownership scope, submit semantics, and the published-edit review gate plus the immediate-save exception. It leaves return values and per-field validation to the schema, which is acceptable given 90% coverage.

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 90%, so the schema already carries the parameter burden and the baseline is 3. The description restates the data constraints (numbers, short text, 12 KB) that the schema description already gives, and only marginally adds that data is optional and persists immediately.

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?

"Update a project the caller belongs to" gives a clear verb plus resource and adds an ownership scope, so the agent knows it must be a member. It doesn't name a sibling (create_project, review_project) or state what it is not, so differentiation is inferred rather than stated.

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?

The description explains the save-vs-submit distinction and when an edit reaches the live page, which is the key routing decision for this tool. It stops short of explicitly comparing against create_project or review_project, but the workflow context is clear enough to select correctly.

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