Skip to main content
Glama

📖 Read-only mirror. aimarket-oracle-gateway is published from the canonical AI-Factory monorepo. Pull requests are not accepted — any commit pushed here is overwritten by scripts/mirror_satellites.sh on the next sync. 🐞 Found a bug or have a request? Please open an issue.

aimarket-oracle-gateway — MCP server

One MCP server. Seventeen oracle families. Pay-per-call.

Transport: stdio (aimarket_oracle_gateway/stdio_server.py). Built with the official Model Context Protocol Python SDK (mcp, FastMCP). Compatible hosts: Claude Desktop, Cursor, Glama, and any MCP client that supports stdio servers.

Item

Location

MCP entrypoint

aimarket_oracle_gateway/stdio_server.py

Tool routing core

aimarket_oracle_gateway/gateway_core.py

Extended tool surface

aimarket_oracle_gateway/mcp_tool_surface.py

Glama / Docker run

Dockerfile, glama.json


A passthrough MCP server — the discovery + consumption storefront for the entire oracle-as-a-service specs. One server, 35 tools, every result independently verifiable (signatures, VDF proofs, classical certificates, deterministic replay).

Tools (35)

Category

MCP tool

capabilityId

price

Randomness

get_random

platon.random@v1

$0.004

get_randomness_beacon

platon.beacon@v1

$0.004

ask_oracle

platon.ask@v1

$0.003

verify_random

platon.verify@v1

$0.001

Delay

compute_vdf

chronos.eval@v1

$0.01

verify_vdf

chronos.verify@v1

$0.001

Reputation

get_reputation_scores

lumen.reputation@v1

$0.005

get_agent_trust

lumen.score@v1

$0.003

verify_reputation

lumen.verify@v1

$0.002

Consensus

aggregate_values

murmuration.aggregate@v1

$0.002

Thermodynamics

audit_compute_cost

landauer.audit@v1

$0.01

verify_compute_cost

landauer.verify@v1

$0.001

Routing

compute_least_time_route

fermat.route@v1

$0.01

verify_least_time_route

fermat.verify@v1

$0.001

Cascade risk

analyze_cascade_risk

ablation.cascade@v1

$0.01

verify_cascade_risk

ablation.verify@v1

$0.001

Sampling

get_quasirandom_sequence

lattice.sequence@v1

$0.002

get_blue_noise

turing.bluenoise@v1

$0.002

Optimization

optimize_route

colony.optimize@v1

$0.005

Resilience

analyze_network_resilience

percola.threshold@v1

$0.01

verify_network_resilience

percola.verify@v1

$0.001

Randomness

sortes_draw

sortes.draw@v1

$0.006

sortes_verify

sortes.verify@v1

$0.001

Learning

gauss_field

gauss.field@v1

$0.006

gauss_suggest

gauss.suggest@v1

$0.006

gauss_verify

gauss.verify@v1

$0.001

Time-lock

aestus_seal

aestus.seal@v1

$0.006

aestus_open

aestus.open@v1

$0.01

aestus_verify

aestus.verify@v1

$0.001

Topology

betti_homology

betti.homology@v1

$0.008

betti_distance

betti.distance@v1

$0.004

Transport

kantor_transport

kantor.transport@v1

$0.006

kantor_verify

kantor.verify@v1

$0.001

Spectral

fourier_spectrum

fourier.spectrum@v1

$0.005

fourier_verify

fourier.verify@v1

$0.001

Discovery

list_oracle_capabilities

free

Subscription tiers (optional Hub bundles)

High-volume tools also advertise monthly bundles in list_oracle_capabilities:

Tool

Starter

Pro

aggregate_values

10k calls / $10

100k / $50

get_reputation_scores

5k / $20

50k / $100

audit_compute_cost

10k / $15

100k / $75

compute_least_time_route

10k / $25

100k / $120

analyze_cascade_risk

5k / $50

50k / $250

Pay-per-call remains the default; bundles are Hub-side packaging.

Related MCP server: x402farm-mcp

Configure (env)

var

meaning

AIMARKET_HUB_URL

AIMarket Hub base URL — recommended: metered + paid

AIMARKET_ORACLE_URL

direct oracle-family URL (if no hub) — demo/free path

AIMARKET_PAYMENT_CHANNEL

optional pre-opened payment channel id

AIMARKET_PAYMENT_CHANNEL_SECRET

per-channel debit secret

AIMARKET_API_TOKEN

optional bearer token

AIMARKET_MAX_PER_CALL_USD

hard cap per call (default 0.10)

AIMARKET_MAX_SPEND_USD

hard cumulative budget (default 5.0)

AIMARKET_PRICE_TOLERANCE

reject overcharge vs advertised (default 0.10)

If neither URL is set the server fails closed with a clear message.

Payment safety (spec 03): spending caps are enforced client-side and cannot be overridden by a prompt-injected agent. See docs/specs/03-mcp-payment-and-security.md.

Run

pip install -r requirements-mcp.txt && pip install --no-deps -e .
AIMARKET_HUB_URL=https://modelmarket.dev python -m aimarket_oracle_gateway.stdio_server

Claude Desktop (mcpServers entry):

{ "mcpServers": { "aimarket-oracle-gateway": {
  "command": "python", "args": ["-m", "aimarket_oracle_gateway.stdio_server"],
  "env": { "AIMARKET_HUB_URL": "https://modelmarket.dev" } } } }

Publish on Glama

Listing: glama.ai/mcp/servers/alexar76/aimarket-oracle-gateway

Verifiability

  • Platon — Ed25519 signature over (random_hex ‖ proof)

  • Chronos — Wesolowski VDF proof, cheap verify_vdf

  • LUMEN — re-derive PageRank from committed graph

  • Murmuration — deterministic re-aggregation from input values

  • Landauer — bit-for-bit erasure count from ops DAG + circuit_commitment

  • Fermat — dual certificate T(v) checked in O(E)

  • Ablation — sandpile replay, order-independent topple_total + tau

  • Lattice / Turing — deterministic from (count, dim, skip) / seed

  • Colony — admissible lower_bound + gap certificate

  • Percola — recomputable percolation sweep + f_c

  • Sortes — ECVRF 80-byte proof, verifiable offline by anyone (RFC 9381)

  • Gauss — deterministic replay of GP posterior + Expected-Improvement suggestion

  • Aestus — RSW time-lock puzzle re-derivable; modulus factorization burned each seal

  • Betti — recomputable Vietoris-Rips persistence diagram + bottleneck distance

  • Kantor — Kantorovich dual potentials checked in O(m*n) without re-solving

  • Fourier — recomputable Laplacian spectrum + Fiedler value lambda-2

Tests

PYTHONPATH=. pytest tests/

Available Tools

10 tools
ask_oracleA

Ask the Platon oracle for a grounded, entropy-derived read-only answer.

Use for lightweight oracle-mediated decisions (e.g. an unbiased pick among options). Read-only —
no side effects, no state change.

Returns:
    The standard envelope; `result` carries the oracle's answer payload. Cost ~$0.003 USDC.

Example:
    ask_oracle(question="Pick one at random: red, green, or blue?")
ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesA question to answer from the oracle's entropy/state. Read-only; no side effects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description transparently states read-only behavior, no side effects, and even discloses cost (~$0.003 USDC). It lacks details on rate limits or error handling, but for a simple read operation, this is sufficient.

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

Conciseness5/5

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

The description is highly concise: two short paragraphs plus a code example. Every sentence adds value—purpose, usage, return details, cost, and example—with clear structure and no redundancy.

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?

Given the tool's simplicity (single parameter, output schema exists), the description covers purpose, usage, behavior, return format, and cost. Minor missing details like synchronous behavior or timeout, but overall complete for effective agent invocation.

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 coverage is 100%, so baseline is 3. The description adds value by providing an example of a valid question and explaining the type of answer expected (entropy-derived, unbiased pick), which goes beyond the schema's documentation.

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 description clearly states the tool's purpose: 'Ask the Platon oracle for a grounded, entropy-derived read-only answer.' It specifies a specific verb-resource pair and differentiates from siblings like get_random and verify_random by focusing on oracle-mediated decisions.

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?

The description provides context on when to use: 'lightweight oracle-mediated decisions (e.g. an unbiased pick among options)' and emphasizes it is read-only. While it doesn't explicitly exclude scenarios, the sibling tools (compute_vdf, get_randomness_beacon, etc.) suggest alternative use cases.

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

compute_vdfA

Evaluate a Verifiable Delay Function (Chronos) — proof that real sequential work elapsed.

Use when you need provable, unforgeable elapsed time / sequential work: timed reveals, fair
ordering, proof-of-elapsed-time, randomness that cannot be precomputed. Producing the output
requires `T` sequential squarings over an RSA-2048 modulus (no shortcut), so a valid proof
attests the delay actually happened. Verify cheaply with `verify_vdf`.

Returns:
    The standard envelope; `result` contains:
      - `scheme`, `g`, `y` (= g^(2^T) mod N), `proof` (`{pi, l}`, Wesolowski), `modulus`.
    `verifiable.has_proof` will be true. Cost ~$0.01 USDC.

Example:
    compute_vdf(seed="0x1234abcd", difficulty=100000)
ParametersJSON Schema
NameRequiredDescriptionDefault
seedYesSeed (hex) the VDF is evaluated over; it binds the generator g, so the output is tied to this input.
difficultyNoT — the number of sequential squarings to perform (1..1_000_000). Higher T = more wall-clock work that cannot be parallelized/GPU-accelerated, i.e. a longer provable delay. ~1000 is a fast demo; tune T to the delay you need.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Describes that output requires T sequential squarings (no shortcut), attests delay, returns specific fields in envelope, and mentions cost ~$0.01 USDC. Comprehensive behavioral disclosure beyond schema.

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

Conciseness5/5

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

No fluff. Clear sections: purpose, usage, returns, example. Every sentence adds value. Well-structured for quick parsing.

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

Completeness5/5

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

With 2 params, 100% schema coverage, and output schema present, description fully explains all aspects: what it does, when to use, parameter semantics, return values, and cost. No gaps for an agent to select and invoke correctly.

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 coverage is 100% with good descriptions. Description adds extra context: seed binds generator g, difficulty is T with range and wall-clock implication, and notes it cannot be parallelized/GPU-accelerated. This enhances understanding beyond schema alone.

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?

Clearly states 'Evaluate a Verifiable Delay Function (Chronos)' and distinguishes from sibling `verify_vdf`. Provides specific verb ('compute' implied by name) and resource (VDF). Context signals and sibling list confirm differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use when you need provable, unforgeable elapsed time/sequential work' with examples like timed reveals, fair ordering. Mentions verifying cheaply with `verify_vdf`, giving clear when-to-use and when-not-to guidance.

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

get_agent_trustA

Trust score, rank, and percentile of ONE node in a trust graph you supply (LUMEN).

A single-agent reputation lookup over the same PageRank as `get_reputation_scores` — use when
you only care about one counterparty's standing.

Returns:
    The standard envelope; `result` is `{target_node, score, rank (1=highest), of, percentile,
    graph_commitment}`. Cost ~$0.003 USDC.

Example:
    get_agent_trust(nodes=3, edges=[[0,1,1.0],[1,2,0.5],[2,0,0.5]], target_node=1)
ParametersJSON Schema
NameRequiredDescriptionDefault
nodesYesNumber of nodes in the directed trust graph, 1..100000. Node indices in `edges` must be in [0, nodes).
edgesYesDirected, weighted trust edges as `[from_index, to_index, weight]`. An edge i→j with weight w means node i confers w trust on node j. Weights need not be normalized.
target_nodeYesIndex of the node whose trust score/rank/percentile to return (0-based, in [0, nodes)).
dampingNoPageRank damping factor in [0,1] (default 0.85). Lower = more weight on the uniform prior, dampening graph manipulation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Describes output format, cost, and uses PageRank algorithm. No annotations exist, so description carries burden; it does well but could mention computational limits or lack of side effects.

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

Conciseness5/5

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

Very concise with clear sections: purpose, usage, returns, cost, example. No redundant sentences.

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

Completeness5/5

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

Given output schema exists and 4 parameters, the description covers all necessary context: what it does, how to use, what it returns, and an illustrative example.

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 100% so baseline 3. Description adds example and explains weight meaning, but doesn't surpass what schema already provides.

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 description clearly states it returns trust score, rank, and percentile for one node, and distinguishes it from the sibling get_reputation_scores by noting it's for a single agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'use when you only care about one counterparty's standing', providing clear selection criteria versus alternatives.

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

get_randomA

Draw unbiasable, Ed25519-signed verifiable randomness (Platon).

Use this when you need randomness an autonomous agent cannot bias or predict and that a third
party can verify — fair selection, sampling, raffles, commit-reveal, anti-MEV ordering. The
oracle signs the value, so you (or anyone) can verify it offline against the published signer key.

Returns:
    The standard envelope (see server instructions). `result` contains:
      - `random_hex`: the random bytes, hex-encoded (`num_bytes` long).
      - `proof`: `{state_hash, tick, timestamp, entropy_commitment}` binding the value to the
        oracle's chaotic state at draw time.
      - `signature`: Ed25519 signature over the value+proof (verify with `verify_random`/the
        signer key in the Hub manifest). `verifiable.signed` will be true.
    Cost ~$0.004 USDC, charged per call.

Example:
    get_random(num_bytes=32, client_seed="0xdeadbeef")
ParametersJSON Schema
NameRequiredDescriptionDefault
num_bytesNoNumber of random bytes to draw, 1..1024. The result's `random_hex` is this many bytes hex-encoded. Use 32 for a 256-bit seed/word.
client_seedNoOptional caller-supplied seed (hex) for domain separation — it is bound into the signed proof so two callers asking at the same tick get distinct, attributable randomness. Pass '' to omit.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully carries behavioral transparency. It details the return envelope (random_hex, proof, signature), explains that the oracle signs the value for offline verification, and notes the cost (~$0.004 USDC). No missing behavioral traits.

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

Conciseness5/5

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

Concise and well-structured: single-sentence purpose, usage guidelines, return values in bullet format, and an example. Front-loaded with the most important information. No extraneous text.

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

Completeness5/5

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

Given the complexity of verifiable randomness and the presence of an output schema, the description is complete. It covers purpose, usage, return format, proof structure, verification method, and cost. All relevant aspects for an agent to use the tool correctly are addressed.

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 coverage is 100%, baseline 3. The description adds semantic value: 'Use 32 for a 256-bit seed/word' and explains client_seed's role in domain separation ('two callers asking at the same tick get distinct, attributable randomness'). This goes beyond schema details, justifying a 4.

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 description clearly states it draws unbiased, Ed25519-signed verifiable randomness. The verb 'draw' and resource 'unbiasable...randomness (Platon)' are specific. It distinguishes itself from siblings by emphasizing verifiability and unbiasability, though not explicitly naming alternatives.

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?

Explicitly lists when to use: 'for fair selection, sampling, raffles, commit-reveal, anti-MEV ordering'. Provides context for verifiable randomness. Lacks explicit when-not-to-use or direct comparisons to siblings, but the use cases are clear.

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

get_randomness_beaconA

Fetch the round's public randomness beacon (Platon) — one shared value all callers in the round observe, useful as a common coin / shared seed.

Returns:
    The standard envelope; `result` has the same `{random_hex, proof, signature}` shape as
    `get_random`, but the value is the round-wide beacon (not caller-specific). Cost ~$0.004 USDC.

Example:
    get_randomness_beacon()
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Despite no annotations, the description adequately discloses that the tool is a read operation, returns a standard envelope with specific fields, and includes cost information. However, it could mention any potential side effects or prerequisites more explicitly.

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

Conciseness5/5

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

Very concise: two sentences for purpose/behavior, one for return shape/cost, and an example. No wasted words, front-loaded with key purpose.

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?

Given zero parameters and presence of output schema, the description is fairly complete. It explains shared vs. caller-specific, cost, and return shape. Minor omissions: no mention of failure modes or if any user permissions are needed, but these are likely not applicable.

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?

No parameters, so schema coverage is 100% (empty). The description adds meaning by showing an example call with no arguments, confirming zero parameters and reinforcing simplicity.

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?

Clearly states it fetches the round's public randomness beacon (Platon), a shared value for all callers. Distinguishes from sibling tool get_random (caller-specific) and explains use as common coin/seed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes when to use (as a common coin/shared seed) and contrasts with get_random, guiding the agent to the correct tool for shared vs. caller-specific randomness.

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

get_reputation_scoresA

Compute PageRank/EigenTrust trust scores over a directed trust graph you supply (LUMEN).

Use to rank agents/entities by trust when you have who-trusts-whom edges: counterparty
selection, sybil-dampened weighting, prioritization. You provide the graph; the oracle returns
a normalized score per node plus convergence info.

Returns:
    The standard envelope; `result` contains:
      - `scores`: array of `nodes` floats that sum to 1 (±1e-6) — node i's trust share.
      - `iterations`, `converged`: power-iteration convergence info.
    Cost ~$0.005 USDC (scales with graph size).

Example:
    get_reputation_scores(nodes=3, edges=[[0,1,1.0],[1,2,0.5],[2,0,0.5]], damping=0.85)
ParametersJSON Schema
NameRequiredDescriptionDefault
nodesYesNumber of nodes in the directed trust graph, 1..100000. Node indices in `edges` must be in [0, nodes).
edgesYesDirected, weighted trust edges as `[from_index, to_index, weight]`. An edge i→j with weight w means node i confers w trust on node j. Weights need not be normalized.
dampingNoPageRank damping factor in [0,1] (default 0.85). Lower = more weight on the uniform prior, dampening graph manipulation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Since no annotations are provided, the description fully bears the burden. It discloses the return format (normalized scores summing to 1, convergence info), cost (~$0.005), and algorithmic detail (power iteration). It does not mention destructive effects (none expected) or auth/rate limits, but the information provided is sufficient for a computation tool.

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

Conciseness5/5

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

The description is well-structured and concise: opening purpose, usage guidelines, return specification, and an example. Every sentence adds value without redundancy. It is front-loaded with the core verb and resource.

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

Completeness5/5

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

Given the complexity of the tool (graph algorithm with multiple parameters and return values), the description is thorough. It covers usage, parameter constraints, return structure (even though output schema exists), cost, and includes a concrete example. No significant gaps remain.

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?

The input schema already provides 100% coverage with descriptions for all three parameters (nodes, edges, damping) including ranges, defaults, and semantics. The description adds an example and explains the return structure but does not significantly enhance parameter meaning beyond the schema. Baseline 3 is appropriate.

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 description clearly states the tool computes PageRank/EigenTrust trust scores over a supplied directed trust graph. It specifies the resource (trust scores) and action (compute), and the mention of LUMEN distinguishes it from sibling tools like get_agent_trust or verify_reputation which likely handle precomputed or verified trust.

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?

The description explicitly provides use cases: ranking agents/entities by trust for counterparty selection, sybil-dampened weighting, and prioritization. It implies when to use (when you have qui-trusts-whom edges) but does not explicitly state when not to use or mention alternatives. However, the clear use-case guidance is strong.

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

list_oracle_capabilitiesA

List every oracle tool with its AIMarket capabilityId and per-call price (USD).

Call this first to discover what's available and what each call costs before invoking.

Returns:
    A JSON array (string) of `{tool, capability_id, price_usd, summary}` — one entry per tool.

Example:
    list_oracle_capabilities()
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, description carries full burden. It describes the return value (JSON array of objects) and implies a read-only, nondestructive operation. It mentions price information, adding transparency. Could benefit from explicitly stating no side effects, but sufficient.

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

Conciseness5/5

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

Concise, no fluff. Front-loaded with purpose, then usage guideline, then return format, then example. Every sentence earns its place.

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

Completeness5/5

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

Given zero parameters, an output schema exists (as per context), but description already supplies return format and example. It is complete: explains what the tool does, when to use it, what it returns, and how to call it. No gaps.

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?

Zero parameters, schema coverage 100% (empty). Description does not need to add parameter info. It adds value by explaining the return format and providing an example, which is more than baseline for 0-param tools.

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 description uses specific verb 'List' and clearly states the resource: every oracle tool with its AIMarket capabilityId and per-call price. It distinguishes from sibling tools (like ask_oracle, compute_vdf) which perform specific actions, while this tool provides a catalog.

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?

Explicitly says 'Call this first to discover what's available and what each call costs before invoking.' Provides clear context for when to use the tool, though it does not explicitly specify when NOT to use it. The recommendation is strong enough.

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

verify_randomA

Verify a Platon randomness draw without re-running it (Platon verify).

Pass `random_hex`, `proof`, and `signature` exactly as returned by `get_random` /
`get_randomness_beacon`. Confirms the Ed25519 signature over the canonical (random_hex, proof)
against the signer's published public key — so you trust the math, not the service.

Returns:
    The standard envelope; `result` is `{valid: <bool>}` (plus `error` if the input was
    malformed). Cost ~$0.001 USDC.

Example:
    verify_random(random_hex="0x9f2c…", proof={"scheme": "platon-chaos-vrf/v1", …},
                  signature={"algorithm": "ed25519", "public_key": "<b64>", "value": "<b64>"})
ParametersJSON Schema
NameRequiredDescriptionDefault
random_hexYesThe `random_hex` value returned by get_random / get_randomness_beacon.
proofYesThe `proof` object from the draw: {scheme, state_hash, client_seed, tick, timestamp, entropy_commitment}.
signatureYesThe `signature` object from the draw: {algorithm:'ed25519', public_key, value}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations, so description fully bears burden. Discloses Ed25519 signature verification, cost (~$0.001 USDC), and return format (valid bool). Does not mention authentication or rate limits, but adequate.

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?

Front-loaded with purpose, followed by usage details, return info, and example. Every sentence adds value; example is helpful but slightly lengthy. Overall efficient.

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?

Given output schema exists (so return values defined) and parameters well-described, the description provides sufficient additional context: verification method, cost, and requirement for exact parameter copying. Complete for the tool's complexity.

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 coverage is 100% with descriptions and examples; description adds context that parameters must be exact copies from get_random/get_randomness_beacon and provides a concrete example, enhancing clarity.

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 description clearly states it verifies a Platon randomness draw without re-running, using specific verb and resource. It distinguishes from siblings like get_random (which produces data) and verify_vdf.

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?

Explicitly instructs to pass parameters exactly as returned by get_random/get_randomness_beacon, providing clear usage context. Does not explicitly mention when not to use, but contrast with re-running implies alternative.

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

verify_reputationA

Verify LUMEN reputation scores by re-deriving PageRank over the supplied graph (LUMEN verify).

Pass the graph and the `scores` (and optionally the `graph_commitment`) from a
`get_reputation_scores` result; confirms they are the correct PageRank of exactly that graph.

Returns:
    The standard envelope; `result` is `{valid: <bool>, max_abs_diff, [commitment_match]}`.
    Cost ~$0.002 USDC.

Example:
    verify_reputation(nodes=3, edges=[[0,1,1.0],[1,2,0.5],[2,0,0.5]], scores=[0.33,0.33,0.34])
ParametersJSON Schema
NameRequiredDescriptionDefault
nodesYesNumber of nodes in the directed trust graph, 1..100000. Node indices in `edges` must be in [0, nodes).
edgesYesDirected, weighted trust edges as `[from_index, to_index, weight]`. An edge i→j with weight w means node i confers w trust on node j. Weights need not be normalized.
scoresYesThe `scores` array from a get_reputation_scores result, to be re-derived and confirmed.
dampingNoPageRank damping factor in [0,1] (default 0.85). Lower = more weight on the uniform prior, dampening graph manipulation.
graph_commitmentNoOptional `graph_commitment` (0x… SHA-256) from the result, to bind the check to the exact graph. Pass '' to skip.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the re-derivation logic, cost (~$0.002 USDC), and return fields (valid, max_abs_diff, commitment_match). It does not cover error handling or authentication, but is sufficiently transparent for a verification tool.

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

Conciseness5/5

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

The description is concise with four sentences and an example, all of which add value. It is well-structured with a title line, usage instruction, return specification, cost note, and example. No redundancy or waste.

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?

Given five parameters (three required) and an output schema, the description provides enough context to understand the tool's functionality and usage. It mentions cost and a return envelope. However, missing details on error conditions or prerequisites slightly reduce completeness.

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 coverage is 100% with descriptions for all five parameters. The description adds value by explaining usage context (pass from get_reputation_scores) and providing an example, which goes beyond the schema alone. It also clarifies the role of optional parameters.

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 description clearly states the tool verifies LUMEN reputation scores by re-deriving PageRank, with the parenthetical 'LUMEN verify' distinguishing it from get_reputation_scores. The verb 'verify' and resource 'reputation scores' are specific and 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?

The description explicitly instructs to pass the graph and scores (and optionally graph_commitment) from get_reputation_scores results, and confirms they are the correct PageRank. It provides an example and implies usage after get_reputation_scores, but lacks explicit when-not or alternative tools.

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

verify_vdfA

Verify a Chronos VDF proof in a single exponentiation.

Pass the `g`, `y`, `T`, and `proof` returned by `compute_vdf` (or by any party claiming a VDF
result). Confirms `y = g^(2^T) mod N` without redoing the T squarings.

Returns:
    The standard envelope; `result` is `{valid: <bool>}`. Cost ~$0.001 USDC.

Example:
    verify_vdf(g="0x03", y="0x9f2a…", T=100000, proof={"pi": "0x1a2b…", "l": "0x65"})
ParametersJSON Schema
NameRequiredDescriptionDefault
gYesGenerator g (hex) as returned by `compute_vdf`.
yYesClaimed VDF output y = g^(2^T) mod N (hex) from `compute_vdf`.
TYesDifficulty T (squarings) that produced y; must match the value used in `compute_vdf`.
proofYesThe Wesolowski proof object from `compute_vdf` — `{pi, l}` (pi = proof element, l = Fiat-Shamir prime).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description discloses key behavioral traits: it performs efficient verification without redoing squarings and costs ~$0.001 USDC. It does not mention side effects, but the operation is read-only and non-destructive.

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

Conciseness5/5

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

The description is concise (under 100 words) and well-structured: starts with purpose, then parameter usage, then return value, then cost, then example. Every sentence serves a purpose with no waste.

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

Completeness5/5

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

Given the tool's complexity and the presence of an output schema, the description fully covers purpose, parameters, return format, cost, and provides an example. It is complete for an AI agent to use correctly.

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 coverage is 100%, and the description adds significant context: it explains that parameters come from 'compute_vdf', provides an example call, and clarifies the proof object structure. This adds meaning beyond the schema.

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 description clearly states 'Verify a Chronos VDF proof in a single exponentiation' and explains the mathematical verification (y = g^(2^T) mod N). It distinguishes itself from the sibling 'compute_vdf' by focusing on verification rather than computation.

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?

The description explicitly states to pass the parameters returned by 'compute_vdf' or any party claiming a VDF result. It gives clear context for when to use the tool, though does not explicitly state when not to use it.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.0.0
    • First observedask_oracle
    • First observedcompute_vdf
    • First observedget_agent_trust
    • First observedget_random
    • First observedget_randomness_beacon
    • First observedget_reputation_scores
    • First observedlist_oracle_capabilities
    • First observedverify_random
    • First observedverify_reputation
    • First observedverify_vdf

TDQS

A4.6/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a distinct, clearly defined purpose: ask_oracle for queries, compute_vdf for VDF, get_agent_trust and get_reputation_scores for trust, get_random and get_randomness_beacon for randomness (one per-call, one shared beacon), list_oracle_capabilities for discovery, and three verify tools. No overlapping functionality causes ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., compute_vdf, get_random, verify_vdf). The verbs are descriptive (ask, compute, get, list, verify) and the nouns clearly indicate the resource or action. No mixing of conventions.

Tool Count5/5

10 tools is well-scoped for an oracle gateway. It covers core operations (randomness, VDF, trust) plus verification and discovery without being overwhelming. Each tool earns its place; there are no redundant or trivial tools.

Completeness5/5

The tool surface is complete for the domain: it provides both per-call and beacon randomness, VDF computation, trust/reputation scoring, and separate verification for each. The inclusion of list_oracle_capabilities aids discovery. No obvious gaps like missing lifecycle operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers