Skip to main content
Glama

zFinia Intelligence

Foundry Outcome Router

foundry_outcome_router

Use when you need an outcome and do not already know which zFinia utility to call. Send objective (aliases: goal, task, outcome, query) plus inputs. Top-level colour/field/html/cursor keys fold into inputs. tools/call quotes first and returns PAYMENT_REQUIRED for an already-live x402 resource at that resource's unchanged price (contrast 1000, DCC 3000, catalog-offer 100000, changes-since 10000). Batches are sequential pays on those same live rails. POST /v1/router/quote is unpaid. No URL fetching. MCP does not pay. GET /v1/router for the free contract.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "objective": "<objective>"
    },
    "name": "foundry_outcome_router"
  }
}

Input Schema

NameRequiredDescriptionDefault
inputsNoCaller-supplied facts required to produce the outcome. Do not send secrets or ask Foundry to fetch URLs.
latencyNo
evidenceNo
freshnessNo
max_priceNoOptional maximum USDC atomic units the buyer will pay.
objectiveYesOutcome the buyer needs. Foundry chooses the execution plan; do not describe supplier topology. goal, task, outcome, and query are accepted aliases. Product names, service IDs, and live routes are valid outcomes. Well-known capability fields sent at the top level are folded into inputs. fg/bg alias foreground/background. #RRGGBB pairs in the objective are used as contrast inputs when inputs.foreground/background are omitted.
buyer_metadataNoOptional non-secret buyer hints. Secret-like keys are stripped and never persisted.
required_outputNoOptional desired output shape or fields.
preferred_protocolNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "properties": {
      -    "economics": {
      -      "type": "object"
      -    },
      -    "evidence": {
      -      "type": "object"
      -    },
      -    "execution_id": {
      -      "type": "string"
      -    },
      -    "latency_ms": {
      -      "type": "number"
      -    },
      -    "limitations": {
      -      "type": "array"
      -    },
      -    "outcome": {
      -      "type": "string"
      -    },
      -    "plan": {
      -      "type": "object"
      -    },
      -    "request_fingerprint": {
      -      "type": "string"
      -    },
      -    "result": {
      -      "type": "object"
      -    },
      -    "status": {
      -      "type": "string"
      -    },
      -    "value_add": {
      -      "type": "object"
      -    }
      -  },
      -  "required": [
      -    "status",
      -    "execution_id",
      -    "outcome",
      -    "result",
      -    "evidence",
      -    "economics",
      -    "limitations"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changed
    • changedInput schema / properties / objective / description
      Previous value: -"Outcome the buyer needs. Foundry chooses the execution plan; do not describe supplier topology. goal, task, outcome, and query are accepted aliases. Well-known capability fields sent at the top level are folded into inputs. #RRGGBB pairs in the objective are used as contrast inputs when inputs.foreground/background are omitted."New value: +"Outcome the buyer needs. Foundry chooses the execution plan; do not describe supplier topology. goal, task, outcome, and query are accepted aliases. Product names, service IDs, and live routes are valid outcomes. Well-known capability fields sent at the top level are folded into inputs. fg/bg alias foreground/background. #RRGGBB pairs in the objective are used as contrast inputs when inputs.foreground/background are omitted."
  3. Changed1 schema field changed
    • changedInput schema / properties / objective / description
      Previous value: -"Outcome the buyer needs. Foundry chooses the execution plan; do not describe supplier topology."New value: +"Outcome the buyer needs. Foundry chooses the execution plan; do not describe supplier topology. goal, task, outcome, and query are accepted aliases. Well-known capability fields sent at the top level are folded into inputs. #RRGGBB pairs in the objective are used as contrast inputs when inputs.foreground/background are omitted."
  4. Added

TDQS

A3.7/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 substantial work: it discloses that tools/call quotes first and can return PAYMENT_REQUIRED at an unchanged price, lists price points for known live resources, notes batches are sequential pays, and states 'MCP does not pay' and 'No URL fetching'. The pricing parenthetical is cryptic, and it never says what a successful (non-PAYMENT_REQUIRED) response contains, so it stops short of 5.

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 with the when-to-use condition, which is good, but the 'contrast 1000, DCC 3000, catalog-offer 100000, changes-since 10000' parenthetical is dense jargon that costs more parsing than it returns. The prose is compressed to the point that some sentences do not clearly earn their place.

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 paid router with no annotations and no output schema, the description covers the payment model and input folding well. But it leaves the enum tuning parameters undefined and only gestures at the response shape via an external contract URL, so an agent still has gaps before invoking it correctly.

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 coverage is 56%, and the description adds real semantics: objective aliases (goal/task/outcome/query), top-level colour/field/html/cursor keys folding into inputs, fg/bg aliasing, and #RRGGBB extraction from the objective. However, none of the four enum parameters (latency, evidence, freshness, preferred_protocol) are explained anywhere, leaving meaningful gaps.

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 frames the tool as a dispatcher: 'Use when you need an outcome and do not already know which zFinia utility to call', which tells an agent this is the generic entry point versus the concrete siblings. The verb is only implied ('Send objective ... plus inputs'), and 'outcome' remains abstract, so it is clear but not maximally sharp.

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 an explicit selection condition — use it when you don't know which utility to call — which implicitly routes agents to concrete siblings when they do know. It also separates paid paths (tools/call) from the unpaid quote endpoint (POST /v1/router/quote) and the free contract (GET /v1/router). No explicit exclusions are named, keeping it at 4.

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