Skip to main content
Glama
expel-io

Atlassian Goals MCP Server

by expel-io

post_goal_update

Post a goal status update with summary, status, score, metric values, and target date. Resolve goal ARI first to keep progress visible in the goal's Updates tab.

Instructions

Post a weekly status update to a goal — the entry that appears in the goal's Updates tab. Resolve the goal's ARI via search_goals or get_goal first; this tool requires the ID, not a name.

Status and score Status for on_track / at_risk / off_track is derived from the score (1–100 integer). Pick whichever the user expresses:

  • "we're on track" → status: "on_track" (tool fills the band's midpoint score, 80)

  • "on track at 90" → status: "on_track", score: 90

  • "score 50" alone → score: 50 (status inferred as at_risk) The Atlassian UI labels these as decimals (e.g. "On track - 0.8"), but the API stores them as 1–100. Translate accordingly: 0.8 → 80. For pending / paused / done / cancelled / archived, send only status — these are non-score states and adding a score is a validation error.

Markdown Both summary and details accept markdown — headings, bold/italic, lists, links, inline and block code, blockquotes. The tool converts to ADF before sending.

Example call

post_goal_update({
  goalId: "ari:cloud:townsquare:...:goal/abc",
  summary: "Shipped the migration; on track for end-of-quarter delivery.",
  details: "## What landed\n- Migration scripts merged\n- Rollback plan validated",
  status: "on_track",
  metricUpdates: [{ targetId: "...", value: 42 }]
})

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scoreNoConfidence score on the 1–100 scale (the Atlassian UI labels these as decimals like "0.8" but the API stores integers). Bands: 10–30 = off_track, 40–60 = at_risk, 70–100 = on_track. If status is omitted, it is inferred from the band.
dryRunNoIf true, return the resolved mutation payload without submitting
goalIdYesGoal ARI (format: ari:cloud:townsquare:{cloudId}:goal/{uuid}). Obtain from search_goals or get_goal.
statusNoReported status. Score-driven (on_track/at_risk/off_track) — supplied alone, uses band midpoint score (80/50/20). Combined with score, validates that score falls within the band. Non-score (pending/paused/done/cancelled/archived) — must NOT be combined with score.
detailsNoOptional longer-form content for the "More detail" panel. Markdown supported (headings, bold/italic, lists, links, code, blockquotes). No length limit.
summaryYesUpdate headline shown by default in the Updates tab. Max 280 characters. Markdown supported.
targetDateNoOptionally update the target date as part of this status post
metricUpdatesNoCurrent values to record against the goal's metric targets
Behavior5/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It thoroughly explains the status/score derivation, including the specific band ranges, midpoint scores, and the UI decimal-to-integer translation (e.g., '0.8 → 80'). It also warns about validation errors when combining non-score statuses with a score, and notes the markdown-to-ADF conversion. These are critical behaviors beyond simple 'posts an update'.

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 description is well-structured with bold headers for 'Status and score' and 'Markdown,' plus an example call. It is information-dense but every section contributes to correct usage. It is slightly long given the markdown details, but the complexity of the tool justifies the extra words, and the example is highly practical.

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?

This is a complex tool with 8 parameters and no output schema. The description covers all critical aspects: how to obtain the required goalId, the nuanced status/score mapping and validation constraints, markdown support, and includes a complete example call. Even though return values are not described, there is no output schema to reference, so the description sufficiently prepares the agent for invocation. Sibling tools are also contextually implied through the 'post' framing.

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?

The input schema already has 100% parameter description coverage, setting a baseline of 3. The description adds significant semantic layers for the most complex parameters: it explains how score and status interact with band midpoints, provides concrete examples, and clarifies that goalId must be an ARI. While targetDate and metricUpdates rely on their schema descriptions, the overall parameter guidance is enriched meaningfully.

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 clearly states the tool's purpose: 'Post a weekly status update to a goal — the entry that appears in the goal's Updates tab.' It uses a specific verb ('post') and resource ('goal update'), and distinguishes it from sibling tools like edit_goal_update and delete_latest_goal_update by the 'post' framing. The requirement for an ARI rather than a name further specifies the tool's input.

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 provides a clear prerequisite: 'Resolve the goal's ARI via search_goals or get_goal first; this tool requires the ID, not a name.' This guides the agent on preparation before invoking the tool. However, it does not explicitly mention alternatives like edit_goal_update for modifying existing updates or delete_latest_goal_update for removing them, so it stops short of an exhaustive when-not-to-use explanation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/expel-io/atlassian-goals-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server