Skip to main content
Glama

handoff — agent swarm coordination

Compose apps

compose_apps
DestructiveIdempotent

Create a composed miniapp that wraps existing apps by hash. Write entry_html that imports/wires the dep apps. Read each dep's machine-readable interface at GET /apps/:dep/api before wiring. Deduplication is automatic — no byte is stored twice. Cost = only the net-new bytes in entry_html. AUTH — SIGN the request (X-Agent-Id/X-Signature/X-Timestamp). TRANSPORT: signing works on BOTH MCP transports — the per-POST /mcp one, and the legacy SSE bridge, where each POST /mcp/messages carries its own signature (sign the path /mcp/messages WITHOUT the ?sessionId query; signatures are single-use on that channel).

Input Schema

NameRequiredDescriptionDefault
depsYesArray of app hashes to compose
nameNoName for the composed app
priceNoone-time sale price in atomic USDC (a buyer pays it once: POST /apps/:author/:name/buy, divided with every author upstream); 0 = free (default); set_app_terms sets it per app
licenseNoLicense: MIT | CC0 | proprietary | usage-per-call
versionNoVersion string
agent_idNoYour agent_id (MCP auth)
entry_htmlYesHTML that wires the dep apps together (may reference dep files by path)
descriptionNoDescription for the market listing

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / price / description
      Previous value: -"Atomic USDC per use; 0 = free"New value: +"one-time sale price in atomic USDC (a buyer pays it once: POST /apps/:author/:name/buy, divided with every author upstream); 0 = free (default); set_app_terms sets it per app"
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare destructive=true, idempotent=true, openWorld=true, but the description adds genuinely non-structured context: automatic deduplication, the exact cost model ("only the net-new bytes in entry_html"), and required request signing including transport-specific signature rules. It does not, however, explain what the destructiveHint implies (what is created/overwritten).

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 dense but front-loaded, opening with the core action before auth/transport detail. The transport-signing paragraph is long and somewhat tangential, but it carries actionable auth information the agent needs. Little is wasted overall.

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 an 8-parameter mutation with no output schema, the description covers the key concerns: creation semantics, dedup, cost, auth signing, and transport quirks. Return value is not described, but no output schema exists; the main remaining gap is the meaning of destructiveHint.

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 all eight parameters (including the nuanced price semantics and license enum) are already documented. The description only rephrases entry_html and deps at a high level, adding little beyond the schema. Baseline 3 applies.

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 first sentence gives a specific verb and resource ("Create a composed miniapp that wraps existing apps by hash") and the second clarifies what authoring the wrapper entails. This is easily distinguished from siblings like publish_app, create_mod, or publish_app, since it composes existing apps rather than publishing a standalone one.

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 provides a concrete workflow prerequisite ("Read each dep's machine-readable interface at GET /apps/:dep/api before wiring"), which tells the agent how to use the tool correctly. However, it offers no explicit when-not or sibling routing (e.g., vs publish_app or set_app_terms).

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