Skip to main content
Glama

claim

Declare a model in use with owner and purpose so other sessions can see it before evicting; renew before the TTL or it expires automatically.

Instructions

Declare that you're using model for purpose.

Lets other sessions see who's using a model and why before deciding to evict it. Renew before ttl_seconds elapses if still in use — an un-renewed claim simply expires, so a crashed session never leaves a permanently-stuck claim.

Input Schema

NameRequiredDescriptionDefault
modelYes
ownerYes
purposeYes
ttl_secondsNo

Output Schema

NameRequiredDescriptionDefault
okYes
modelYes
detailYes
reasonYes
outcomeYes
summaryYes
claim_idYes
expires_atYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.3.1
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "claim_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Claim Id"
      +    },
      +    "detail": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Detail"
      +    },
      +    "expires_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Expires At"
      +    },
      +    "model": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Model"
      +    },
      +    "ok": {
      +      "title": "Ok",
      +      "type": "boolean"
      +    },
      +    "outcome": {
      +      "enum": [
      +        "succeeded",
      +        "refused",
      +        "failed",
      +        "unknown"
      +      ],
      +      "title": "Outcome",
      +      "type": "string"
      +    },
      +    "reason": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Reason"
      +    },
      +    "summary": {
      +      "title": "Summary",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "ok",
      +    "outcome",
      +    "model",
      +    "reason",
      +    "detail",
      +    "summary",
      +    "claim_id",
      +    "expires_at"
      +  ],
      +  "title": "ClaimResult",
      +  "type": "object"
      +}
  2. First observedv0.2.0

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the TTL-based lease lifecycle, that un-renewed claims expire, and that a crashed session cannot leave a permanently-stuck claim. It omits what happens on conflicting claims (e.g., model already claimed) and any permission requirements, so it's strong but not complete.

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?

Two short paragraphs, front-loaded with the action and its rationale, with no filler sentences. The TTL explanation earns its place by encoding the caller's obligation to renew.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema relieves the description from explaining return values, and the lifecycle coverage is good. However, for a state-mutating lease tool with 0% param coverage and a required ``owner`` argument never defined, plus no mention of conflict behavior, the definition leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 4 parameters, so the description must compensate. It gives semantics for ``model`` and ``purpose`` and implies ``ttl_seconds`` via the renewal sentence, but the required ``owner`` parameter is never mentioned in either schema or description, and no format constraints are provided for any parameter.

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?

The description opens with a specific verb and resource: "Declare that you're using ``model`` for ``purpose``." It explains the effect (other sessions see who's using a model and why) and ties into the renew sibling implicitly. It does not explicitly contrast against siblings like reserve or ensure_free, but the claim concept is unambiguous.

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?

It states when to use the tool (before using a model, to advertise usage before others decide to evict) and when to act again ("Renew before ttl_seconds elapses if still in use"). It does not name alternative siblings or exclusions, so no explicit routing guidance is given.

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