aimarket-oracle-gateway
This server is a pay-per-call gateway exposing 35 independently verifiable oracle tools across 17 families, with results backed by signatures, proofs, and deterministic replay.
Randomness (Platon)
get_random— Unbiasable, Ed25519-signed verifiable random bytes (~$0.004/call)get_randomness_beacon— Round-wide public randomness beacon shared by all callers (~$0.004/call)ask_oracle— Entropy-derived oracle answer to a lightweight question (~$0.003/call)verify_random— Verify a draw's Ed25519 signature offline (~$0.001/call)
Verifiable Delay (Chronos)
compute_vdf— Evaluate a Verifiable Delay Function proving sequential elapsed work (~$0.01/call)verify_vdf— Cheaply verify a VDF proof without redoing the squarings (~$0.001/call)
Reputation & Trust (LUMEN)
get_reputation_scores— Compute PageRank/EigenTrust scores over a user-supplied directed trust graph (~$0.005/call)get_agent_trust— Trust score, rank, and percentile for a single node (~$0.003/call)verify_reputation— Re-derive and verify PageRank scores (~$0.002/call)
Consensus (Murmuration) — aggregate_values: deterministic multi-source value aggregation
Thermodynamics (Landauer) — audit_compute_cost, verify_compute_cost: Landauer bit-erasure cost auditing
Routing (Fermat) — compute_least_time_route, verify_least_time_route: least-time paths with dual certificates
Cascade Risk (Ablation) — analyze_cascade_risk, verify_cascade_risk: sandpile cascade analysis
Sampling (Lattice/Turing) — get_quasirandom_sequence, get_blue_noise: quasi-random and blue-noise sequences
Optimization (Colony) — optimize_route: ant-colony route optimization with gap certificate
Resilience (Percola) — analyze_network_resilience, verify_network_resilience: percolation threshold analysis
Sortition (Sortes) — sortes_draw, sortes_verify: ECVRF-based verifiable random draws (RFC 9381), verifiable offline
Bayesian Learning (Gauss) — gauss_field, gauss_suggest, gauss_verify: Gaussian Process posterior and Expected-Improvement suggestions
Time-lock (Aestus) — aestus_seal, aestus_open, aestus_verify: RSW time-lock puzzle sealing and opening
Topology (Betti) — betti_homology, betti_distance: Vietoris-Rips persistence diagrams and bottleneck distance
Optimal Transport (Kantor) — kantor_transport, kantor_verify: Kantorovich dual-potential transport
Spectral (Fourier) — fourier_spectrum, fourier_verify: Laplacian spectrum and Fiedler value computation
Discovery — list_oracle_capabilities: list all available tools, capability IDs, per-call prices, and subscription tiers (free)
Provides access to LUMEN reputation scores (PageRank/EigenTrust trust scores) over a supplied graph.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aimarket-oracle-gatewayGenerate a provably random number for my raffle."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
📖 Read-only mirror.
aimarket-oracle-gatewayis published from the canonical AI-Factory monorepo. Pull requests are not accepted — any commit pushed here is overwritten byscripts/mirror_satellites.shon 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 |
|
Tool routing core | |
Extended tool surface | |
Glama / Docker run |
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 |
|
| $0.004 |
|
| $0.004 | |
|
| $0.003 | |
|
| $0.001 | |
Delay |
|
| $0.01 |
|
| $0.001 | |
Reputation |
|
| $0.005 |
|
| $0.003 | |
|
| $0.002 | |
Consensus |
|
| $0.002 |
Thermodynamics |
|
| $0.01 |
|
| $0.001 | |
Routing |
|
| $0.01 |
|
| $0.001 | |
Cascade risk |
|
| $0.01 |
|
| $0.001 | |
Sampling |
|
| $0.002 |
|
| $0.002 | |
Optimization |
|
| $0.005 |
Resilience |
|
| $0.01 |
|
| $0.001 | |
Randomness |
|
| $0.006 |
|
| $0.001 | |
Learning |
|
| $0.006 |
|
| $0.006 | |
|
| $0.001 | |
Time-lock |
|
| $0.006 |
|
| $0.01 | |
|
| $0.001 | |
Topology |
|
| $0.008 |
|
| $0.004 | |
Transport |
|
| $0.006 |
|
| $0.001 | |
Spectral |
|
| $0.005 |
|
| $0.001 | |
Discovery |
| — | free |
Subscription tiers (optional Hub bundles)
High-volume tools also advertise monthly bundles in list_oracle_capabilities:
Tool | Starter | Pro |
| 10k calls / $10 | 100k / $50 |
| 5k / $20 | 50k / $100 |
| 10k / $15 | 100k / $75 |
| 10k / $25 | 100k / $120 |
| 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 base URL — recommended: metered + paid |
| direct oracle-family URL (if no hub) — demo/free path |
| optional pre-opened payment channel id |
| per-channel debit secret |
| optional bearer token |
| hard cap per call (default |
| hard cumulative budget (default |
| reject overcharge vs advertised (default |
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_serverClaude 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_vdfLUMEN — re-derive PageRank from committed graph
Murmuration — deterministic re-aggregation from input values
Landauer — bit-for-bit erasure count from ops DAG +
circuit_commitmentFermat — dual certificate
T(v)checked in O(E)Ablation — sandpile replay, order-independent
topple_total+tauLattice / Turing — deterministic from
(count, dim, skip)/seedColony — admissible
lower_bound+gapcertificatePercola — recomputable percolation sweep +
f_cSortes — 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 toolsask_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?")
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | A question to answer from the oracle's entropy/state. Read-only; no side effects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| seed | Yes | Seed (hex) the VDF is evaluated over; it binds the generator g, so the output is tied to this input. | |
| difficulty | No | T — 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | Number of nodes in the directed trust graph, 1..100000. Node indices in `edges` must be in [0, nodes). | |
| edges | Yes | Directed, 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_node | Yes | Index of the node whose trust score/rank/percentile to return (0-based, in [0, nodes)). | |
| damping | No | PageRank damping factor in [0,1] (default 0.85). Lower = more weight on the uniform prior, dampening graph manipulation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| num_bytes | No | Number 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_seed | No | Optional 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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()
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | Number of nodes in the directed trust graph, 1..100000. Node indices in `edges` must be in [0, nodes). | |
| edges | Yes | Directed, 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. | |
| damping | No | PageRank damping factor in [0,1] (default 0.85). Lower = more weight on the uniform prior, dampening graph manipulation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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()
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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>"})
| Name | Required | Description | Default |
|---|---|---|---|
| random_hex | Yes | The `random_hex` value returned by get_random / get_randomness_beacon. | |
| proof | Yes | The `proof` object from the draw: {scheme, state_hash, client_seed, tick, timestamp, entropy_commitment}. | |
| signature | Yes | The `signature` object from the draw: {algorithm:'ed25519', public_key, value}. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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])
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | Number of nodes in the directed trust graph, 1..100000. Node indices in `edges` must be in [0, nodes). | |
| edges | Yes | Directed, 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. | |
| scores | Yes | The `scores` array from a get_reputation_scores result, to be re-derived and confirmed. | |
| damping | No | PageRank damping factor in [0,1] (default 0.85). Lower = more weight on the uniform prior, dampening graph manipulation. | |
| graph_commitment | No | Optional `graph_commitment` (0x… SHA-256) from the result, to bind the check to the exact graph. Pass '' to skip. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"})
| Name | Required | Description | Default |
|---|---|---|---|
| g | Yes | Generator g (hex) as returned by `compute_vdf`. | |
| y | Yes | Claimed VDF output y = g^(2^T) mod N (hex) from `compute_vdf`. | |
| T | Yes | Difficulty T (squarings) that produced y; must match the value used in `compute_vdf`. | |
| proof | Yes | The Wesolowski proof object from `compute_vdf` — `{pi, l}` (pi = proof element, l = Fiat-Shamir prime). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
10 tool updates
v1.0.0- First observed
ask_oracle - First observed
compute_vdf - First observed
get_agent_trust - First observed
get_random - First observed
get_randomness_beacon - First observed
get_reputation_scores - First observed
list_oracle_capabilities - First observed
verify_random - First observed
verify_reputation - First observed
verify_vdf
TDQS
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
Hosted MCP server for AI agent identity, permissions, verification, and reusable proof.
1Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
The vetted, cross-LLM marketplace of doer agents — itself an MCP server.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server providing AI agents access to 38 pay-per-call APIs (LLM, image, code, audio, crypto, web, IPFS) via HTTP 402 micropayments in USDC/USDm.2253MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that provides AI agents with pay-per-call access to a suite of tools (honeypot check, token market, DeFi yields, etc.) via USDC on Base using the x402 protocol.4MIT
- AlicenseNot gradedqualityBmaintenanceMCP server exposing 10 curated tools for AI agents, providing crypto trading signals, on-chain analysis, and web utilities via pay-per-call x402 endpoints on the Base network.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server enabling AI agents to browse, claim, track, and submit work on the Taskmarket decentralized task marketplace with USDC rewards.MIT