Skip to main content
Glama

Upsert attention session

upsert_attention_session
Destructive

Emit or update thin session telemetry for THIS operator (host coding agent self-announce). Use when YOU are Grok or Claude Code at session start / status change so voice CoS can list_attention_sessions and target you. Prefer tiny goals; never dump transcripts.

[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time. Call it on the first clear ask; the card is the yes — do not re-ask in chat.]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cwdNoOptional working directory
goalNoOne-line goal
hostNoclaude-code | claude-desktop | grok | manual | slack | github | freedomos | other
turnsNoGrok Bot only: append last user/bot lines (role you|bot, text ≤280). Server keeps the last 12. Omit to preserve. Never dump a full transcript.
statusNorunning | blocked_on_operator | done | parked | unknown
projectNoOptional project name
artifactNoShip-seat stamp when known (e.g. pr:1752). Local and FO spawns use the same field — origin does not matter. If omitted and goal names a PR, server may infer pr:N.
priorityNoOptional priority (higher = sooner)
companyIdNoFreedomOS company id to act within (you must be a member). Required for company-scoped tools.
last_beatNoResume line — where this session left off, one sentence (≤240 chars). Voice CoS speaks it as "here's where we left off" so the operator never re-reads a transcript. Real content only, never bookkeeping text.
company_idNoOptional company id
session_idYesStable session id (same string used as target_session_id for directives).
ask_for_operatorNoIf blocked: one sentence the operator must answer

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / status / description
      Previous value: -"running | blocked_on_operator | done | parked | unknown (blocked_on_tim accepted as alias)"New value: +"running | blocked_on_operator | done | parked | unknown"
    • changedInput schema / properties / status / enum
      Previous value: -[
      -  "running",
      -  "blocked_on_operator",
      -  "done",
      -  "parked",
      -  "unknown",
      -  "blocked_on_tim"
      -]New value: +[
      +  "running",
      +  "blocked_on_operator",
      +  "done",
      +  "parked",
      +  "unknown"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / turns
      Added value: +{
      +  "description": "Grok Bot only: append last user/bot lines (role you|bot, text ≤280). Server keeps the last 12. Omit to preserve. Never dump a full transcript.",
      +  "items": {
      +    "properties": {
      +      "role": {
      +        "description": "you | bot (user/assistant accepted)",
      +        "type": "string"
      +      },
      +      "text": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / host / enum
      Previous value: -[
      -  "claude-code",
      -  "claude-desktop",
      -  "grok",
      -  "manual",
      -  "slack",
      -  "github",
      -  "freedomos",
      -  "other"
      -]New value: +[
      +  "claude-code",
      +  "claude-desktop",
      +  "grok",
      +  "grok-bot",
      +  "manual",
      +  "slack",
      +  "github",
      +  "freedomos",
      +  "other"
      +]
  4. Changed1 schema field changed
    • addedInput schema / properties / last_beat
      Added value: +{
      +  "description": "Resume line — where this session left off, one sentence (≤240 chars). Voice CoS speaks it as \"here's where we left off\" so the operator never re-reads a transcript. Real content only, never bookkeeping text.",
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / artifact
      Added value: +{
      +  "description": "Ship-seat stamp when known (e.g. pr:1752). Local and FO spawns use the same field — origin does not matter. If omitted and goal names a PR, server may infer pr:N.",
      +  "type": "string"
      +}
  6. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true; the description builds on this by disclosing the write-tier approval flow (manager approval, from-now-on vs just-once re-ask behavior, card-as-consent). It also adds behavioral guardrails — "Prefer tiny goals; never dump transcripts" — that constrain how the telemetry should be shaped, which annotations cannot express.

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 first sentence is front-loaded with the core purpose, and the use-condition follows immediately. The approval paragraph is dense but each clause earns its place — approval tiers, persistence semantics, and card-as-consent are all operationally relevant; it could still be tightened slightly without loss.

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 13-parameter write-tier tool with no output schema, the description covers purpose, actor, timing, approval mechanics, and payload constraints, while the schema covers all parameters at 100%. The only gap is silence on return value or failure behavior, which is minor for a fire-and-forget telemetry upsert, and "first clear ask" is slightly ambiguous.

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 description coverage is 100%, so the baseline is 3 and the schema carries parameter documentation. The description adds only marginal param-related context ("thin telemetry" implies small goal/last_beat payloads, "for THIS operator" scopes cwd/host), but nothing substantive beyond the schema's own detailed field descriptions.

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?

"Emit or update thin session telemetry for THIS operator (host coding agent self-announce)" states a specific verb (emit/update), resource (session telemetry), and scope (THIS operator). It distinguishes itself from the many attention siblings (create_attention_directive, ack_attention_directive, park_attention_sessions) by making the self-announce role explicit and even naming its consumer (voice CoS via list_attention_sessions).

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?

"Use when YOU are Grok or Claude Code at session start / status change" is an explicit trigger condition, and "Call it on the first clear ask; the card is the yes — do not re-ask in chat" gives operational when-to-act guidance. It lacks explicit when-not-to-use phrasing or named alternatives, though the self-announce scoping implicitly excludes the directive-management siblings.

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