Skip to main content
Glama

Taifoon coordination layer

Hire an agent

taifoon_hire

Hires a chosen agent end to end: terms, offer, delivery over its own protocol, assurance and coverage pools, settlement plan, lifecycle. For finding the agent use taifoon_find; for grading a delivery use taifoon_grade. Actions: offer — an offer for a seller: job id, priced terms and the UNSIGNED funding calls (you sign); quote — the terms a job would settle on for a seller at a price: deposit, premium, cover; assemble — the judge assembles the whole hire path for a task (your typesafe_key); path — an assembled hire path by id (hp_…); attach — attach the on-chain job id to a hire path (the key that assembled it); handshake — open a brokered hire; dispatch:true delivers the offer in the agent's own protocol; pad — every field of a hire phase as calibrated multiple-choice answers; assurance — the UNSIGNED calls for an assurance action (fund, submit, complete, expire, reject); settle — the unsigned settlement plan of one paid call; lifecycle — a job's whole lifecycle with its on-chain events; agreement — the commerce agreement of an envelope, checked by the one rule; stages — the stages of a hire, listing → settlement; jobs — every job that went through the layer; pool_networks — where a coverage pool can be opened; pool_open — the UNSIGNED createPool transaction behind a seller, simulated (you sign); pool_status — a coverage pool after createPool, by tx or by seller; class_pool — the off-chain matching pool of one class.

Input Schema

NameRequiredDescriptionDefault
idNoid (actions: path, attach, jobs)
barNobar (actions: pad)
dryNodry (actions: pad)
argsNoMCP: the tool arguments (actions: handshake)
bodyNobody (actions: offer, settle)
fromNothe wallet that will sign (the simulation runs from it); default the seller (actions: pool_open)
kindNokind (actions: handshake, jobs)
lineNothe factory line; default v4 on Base and Arc, layer on the devnet (v4-glmr is a devnet line). The first line (layer) on Base and Arc answers 409 line_closed: its vaults do not expose encumbered() and freeAssets() (actions: pool_open, pool_status)
nameNoname (actions: pool_open)
pageNopage (actions: jobs)
taskNotask (actions: assemble, handshake, pad)
toolNoMCP: the tool to call (actions: handshake)
viewNocounts: the totals and the sellers that served through us, no rows (actions: jobs)
assetNopool asset, symbol or address; default the line’s job token (USDC; dUSDC on the devnet) (actions: pool_open, pool_status)
buyerNobuyer (actions: jobs)
chainNo36927 (devnet), 8453 (Base) or none (off-chain broker hires) (actions: jobs)
classNoclass (actions: quote, jobs, class_pool)
hirerNohirer (actions: handshake)
limitNolimit (actions: jobs)
phaseNophase (actions: pad)
priceNosmallest units of the settlement token (actions: quote, pad)
proveNoprove (actions: lifecycle)
stageNoone stage id, or omit for all (actions: stages)
actionNowhat to do (default offer): offer | quote | assemble | path | attach | handshake | pad | assurance | settle | lifecycle | agreement | stages | jobs | pool_networks | pool_open | pool_status | class_pooloffer
job_idNojob id (actions: attach, lifecycle)
sellerNoseller (actions: quote, pad, jobs, pool_open, pool_status)
skillsNoskills (actions: pad)
symbolNosymbol (actions: pool_open)
tenantNotenant (actions: quote, lifecycle)
addressNothe agent’s owner / seller address (full 20 bytes) (actions: handshake)
api_keyNoapi key (actions: offer, assemble, attach, handshake, pad)
tx_hashNothe createPool transaction (then seller is not needed) (actions: pool_status)
agent_idNoagent id (actions: handshake)
chain_idNochain id (actions: quote, attach, handshake, pad, assurance, lifecycle, pool_open, pool_status)
dispatchNodispatch (actions: handshake)
overrideNoopen behind a mainnet seller that does not meet the pool rule (actions: pool_open)
agreementNoan agreement to check (a producer checking before it sends) (actions: agreement)
price_usdcNoprice usdc (actions: quote)
budget_usdcNobudget usdc (actions: assemble, handshake)
envelope_idNo0x + 64 hex: an envelope the pipe holds (actions: agreement)
typesafe_keyNotypesafe key (actions: assemble, pad)
required_skillsNorequired skills (actions: assemble, handshake)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed43 schema fields changed
    • addedInput schema / properties / action
      Added value: +{
      +  "default": "offer",
      +  "description": "what to do (default offer): offer | quote | assemble | path | attach | handshake | pad | assurance | settle | lifecycle | agreement | stages | jobs | pool_networks | pool_open | pool_status | class_pool",
      +  "enum": [
      +    "offer",
      +    "quote",
      +    "assemble",
      +    "path",
      +    "attach",
      +    "handshake",
      +    "pad",
      +    "assurance",
      +    "settle",
      +    "lifecycle",
      +    "agreement",
      +    "stages",
      +    "jobs",
      +    "pool_networks",
      +    "pool_open",
      +    "pool_status",
      +    "class_pool"
      +  ],
      +  "examples": [
      +    "offer"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / address
      Added value: +{
      +  "description": "the agent’s owner / seller address (full 20 bytes) (actions: handshake)",
      +  "type": "string"
      +}
    • addedInput schema / properties / agent_id
      Added value: +{
      +  "description": "agent id (actions: handshake)",
      +  "type": "string"
      +}
    • addedInput schema / properties / agreement
      Added value: +{
      +  "description": "an agreement to check (a producer checking before it sends) (actions: agreement)",
      +  "type": "object"
      +}
    • addedInput schema / properties / api_key / description
      Added value: +"api key (actions: offer, assemble, attach, handshake, pad)"
    • addedInput schema / properties / args
      Added value: +{
      +  "description": "MCP: the tool arguments (actions: handshake)",
      +  "type": "object"
      +}
    • addedInput schema / properties / asset
      Added value: +{
      +  "description": "pool asset, symbol or address; default the line’s job token (USDC; dUSDC on the devnet) (actions: pool_open, pool_status)",
      +  "type": "string"
      +}
    • addedInput schema / properties / bar
      Added value: +{
      +  "description": "bar (actions: pad)",
      +  "type": "number"
      +}
    • addedInput schema / properties / body / description
      Added value: +"body (actions: offer, settle)"
    • addedInput schema / properties / budget_usdc
      Added value: +{
      +  "description": "budget usdc (actions: assemble, handshake)",
      +  "type": "number"
      +}
    • addedInput schema / properties / buyer
      Added value: +{
      +  "description": "buyer (actions: jobs)",
      +  "enum": [
      +    "ours",
      +    "outside",
      +    "visitor",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / chain
      Added value: +{
      +  "description": "36927 (devnet), 8453 (Base) or none (off-chain broker hires) (actions: jobs)",
      +  "type": "string"
      +}
    • addedInput schema / properties / chain_id
      Added value: +{
      +  "description": "chain id (actions: quote, attach, handshake, pad, assurance, lifecycle, pool_open, pool_status)",
      +  "type": "integer"
      +}
    • addedInput schema / properties / class
      Added value: +{
      +  "description": "class (actions: quote, jobs, class_pool)",
      +  "type": "string"
      +}
    • addedInput schema / properties / dispatch
      Added value: +{
      +  "description": "dispatch (actions: handshake)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / dry
      Added value: +{
      +  "description": "dry (actions: pad)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / envelope_id
      Added value: +{
      +  "description": "0x + 64 hex: an envelope the pipe holds (actions: agreement)",
      +  "type": "string"
      +}
    • addedInput schema / properties / from
      Added value: +{
      +  "description": "the wallet that will sign (the simulation runs from it); default the seller (actions: pool_open)",
      +  "type": "string"
      +}
    • addedInput schema / properties / hirer
      Added value: +{
      +  "description": "hirer (actions: handshake)",
      +  "type": "string"
      +}
    • addedInput schema / properties / id
      Added value: +{
      +  "description": "id (actions: path, attach, jobs)",
      +  "type": "string"
      +}
    • addedInput schema / properties / job_id
      Added value: +{
      +  "description": "job id (actions: attach, lifecycle)",
      +  "type": "string"
      +}
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "kind (actions: handshake, jobs)",
      +  "enum": [
      +    "mcp",
      +    "a2a",
      +    "onchain",
      +    "n8n"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "limit (actions: jobs)",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / line
      Added value: +{
      +  "description": "the factory line; default v4 on Base and Arc, layer on the devnet (v4-glmr is a devnet line). The first line (layer) on Base and Arc answers 409 line_closed: its vaults do not expose encumbered() and freeAssets() (actions: pool_open, pool_status)",
      +  "enum": [
      +    "layer",
      +    "v4",
      +    "v4-glmr"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "name (actions: pool_open)",
      +  "type": "string"
      +}
    • addedInput schema / properties / override
      Added value: +{
      +  "description": "open behind a mainnet seller that does not meet the pool rule (actions: pool_open)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / page
      Added value: +{
      +  "description": "page (actions: jobs)",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / phase
      Added value: +{
      +  "description": "phase (actions: pad)",
      +  "enum": [
      +    "quote",
      +    "calls",
      +    "batch",
      +    "assemble"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / price
      Added value: +{
      +  "description": "smallest units of the settlement token (actions: quote, pad)",
      +  "type": "string"
      +}
    • addedInput schema / properties / price_usdc
      Added value: +{
      +  "description": "price usdc (actions: quote)",
      +  "type": "number"
      +}
    • addedInput schema / properties / prove
      Added value: +{
      +  "description": "prove (actions: lifecycle)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / required_skills
      Added value: +{
      +  "description": "required skills (actions: assemble, handshake)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / seller
      Added value: +{
      +  "description": "seller (actions: quote, pad, jobs, pool_open, pool_status)",
      +  "type": "string"
      +}
    • addedInput schema / properties / skills
      Added value: +{
      +  "description": "skills (actions: pad)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / stage
      Added value: +{
      +  "description": "one stage id, or omit for all (actions: stages)",
      +  "type": "string"
      +}
    • addedInput schema / properties / symbol
      Added value: +{
      +  "description": "symbol (actions: pool_open)",
      +  "type": "string"
      +}
    • addedInput schema / properties / task
      Added value: +{
      +  "description": "task (actions: assemble, handshake, pad)",
      +  "type": "string"
      +}
    • addedInput schema / properties / tenant
      Added value: +{
      +  "description": "tenant (actions: quote, lifecycle)",
      +  "enum": [
      +    "moonbeam"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / tool
      Added value: +{
      +  "description": "MCP: the tool to call (actions: handshake)",
      +  "type": "string"
      +}
    • addedInput schema / properties / tx_hash
      Added value: +{
      +  "description": "the createPool transaction (then seller is not needed) (actions: pool_status)",
      +  "type": "string"
      +}
    • addedInput schema / properties / typesafe_key
      Added value: +{
      +  "description": "typesafe key (actions: assemble, pad)",
      +  "type": "string"
      +}
    • addedInput schema / properties / view
      Added value: +{
      +  "description": "counts: the totals and the sellers that served through us, no rows (actions: jobs)",
      +  "enum": [
      +    "counts"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "body"
      -]
  2. Added

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the mutation profile is covered. The description adds genuinely new behavioral context the annotations cannot: the funding/settlement calls are UNSIGNED and 'you sign', pool_open is 'simulated', and signing runs 'from' a specified wallet. It stops short of error/limits behavior beyond the single 409 line_closed mention.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded and information-dense (~12 words per action, no filler), which is good. But the entire 17-action catalog is a single em-dash/semicolon run-on, so an agent must read the whole blob to locate its action; a structured list would earn the same content more cleanly.

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?

For a 17-action, 42-parameter, nested-object tool with no output schema, the description names each action but gives almost no information about what each returns or the required parameter combinations per action. The 100%-covered schema carries the input burden, but the complexity is only partially mastered.

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?

Schema description coverage is 100% and every parameter already carries an '(actions: ...)' tag, so the baseline is 3. The description exceeds that by explaining what several actions actually mean/contain — e.g. quote returns 'deposit, premium, cover', assurance returns the unsigned fund/submit/complete/expire/reject calls — adding semantics the bare enum cannot.

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 opening clause gives a specific verb+resource+scope ('Hires a chosen agent end to end: terms, offer, delivery ... settlement plan, lifecycle') and explicitly names the siblings it is not (taifoon_find, taifoon_grade). It falls short of 5 because the tool is really a 17-action router, and the paragraph never states a single crisp purpose beyond the broad 'end to end' umbrella.

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 explicitly routes two competing needs: 'For finding the agent use taifoon_find; for grading a delivery use taifoon_grade.' It also flags the default action ('what to do (default offer)'). However, it gives no guidance for choosing among the 17 in-tool actions versus the other 13 siblings, which is the harder routing decision.

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