Skip to main content
Glama

🔄 Synced from a monorepo — but with a live history. aimarket-mcp mirrors the canonical AI-Factory monorepo. History here is append-only (no force-push). Pull requests are welcome — merged PRs are imported back into the monorepo and re-synced here, so your contribution becomes canonical. 💬 Issues · Pull requests both welcome.

aimarket-mcp — ecosystem MCP gateway

🌐 English · Русский · Español · Français · 中文 · Glossary

🟢 Just want to try the marketplace? Install nothing.

Paste https://modelmarket.dev/mcp into your MCP client and you have market_search and market_invoke against the live hub, with a few free trial invokes per caller and a signed receipt for each — no wallet, no key, no install. → docs/hosted-mcp-endpoint.md

Install this package when you want the other three tools (web_fetch, web_search, metis_verify), or want to point the market tools at a hub of your own.

One MCP gateway. Five hardened tools. Shared by Metis, ARGUS, and the ecosystem.

Transport: stdio (aimarket_mcp/stdio_server.py) for Glama / Claude Desktop / Cursor, built with the official Model Context Protocol Python SDK (mcp, FastMCP). Also ships Streamable-HTTP on :9090 for self-hosted deployments (aimarket-mcp-http, Docker Compose).

Item

Location

MCP entrypoint (stdio)

aimarket_mcp/stdio_server.py

MCP gateway (HTTP)

aimarket_mcp/server.py

Tool handlers + security

aimarket_mcp/tools.py, aimarket_mcp/security.py

Glama / Docker (stdio)

Dockerfile, glama.json

Self-host HTTP

Dockerfile.http, docker-compose.yml

Compatible hosts: Claude Desktop, Cursor, Glama, and any MCP client that supports stdio or Streamable-HTTP.

Tools

Tool

What it does

Hardening

web_fetch

Fetch a URL, return main text (readability-lite)

SSRF-guarded; output sanitized + <untrusted>-wrapped

web_search

Live DuckDuckGo search → top snippets

output sanitized + <untrusted>

metis_verify

Metis cognition + verification envelope

returns answer + verify_score / verified gate

market_search

Discover priced capabilities on an AIMarket hub

free; no wallet, key or channel; the hub lists only what it can execute

market_invoke

Run one on the hub's free trial tier

returns the signed receipt nonce; reports the hub's 402 verbatim when the allowance is spent

Example — buy a GAIA Open-Meteo reading

market_search_tool(intent="gaia weather open-meteo")
market_invoke_tool(
  capability_id="gaia.weather.read@v1",
  product_id="gaia.gateway",
  source_hub="https://iot.modelmarket.dev",
  # input JSON with device_id om-wx-01 — see tool schema / hub docs
)

Or the same HTTP the tool wraps:

curl -s -X POST "${AIMARKET_HUB_URL:-https://modelmarket.dev}/ai-market/v2/invoke" \
  -H 'Content-Type: application/json' \
  -H 'X-AIMarket-Sandbox-Visitor: vis_mcp_om_wx' \
  -d '{"capability_id":"gaia.weather.read@v1","product_id":"gaia.gateway",
       "source_hub":"https://iot.modelmarket.dev","input":{"device_id":"om-wx-01"}}'

That is the easy path (trial/sandbox). Proving an external wallet paid on-chain is a separate escrow flow (openChannel → DebitAuthorization → hub debit/settle) — see docs/onchain-journal.md §3l–§3m and gaia/docs/LIVE-RELAYS.md.

Why a gateway (not per-agent tools): generic capabilities are written once; the security core lives in one audited place. Ecosystem-specific capabilities live in their own MCP servers (aimarket-oracle-gateway, aimarket-plugins).

Related MCP server: mcp-web-search-server

Configure (env)

var

meaning

AIMARKET_METIS_URL

Metis verify API base (default https://metis.modelmarket.dev)

AIMARKET_METIS_KEY

optional bearer for Metis verify

AIMARKET_SEARCH_URL

DuckDuckGo HTML endpoint override

AIMARKET_HUB_URL

AIMarket hub for market_search / market_invoke (default https://modelmarket.dev)

AIMARKET_API_KEY

Credit-account key from the hub's /start page (https://modelmarket.dev/start): priced market_invoke calls are paid from its prepaid balance; while it is short the free trial still applies. In HTTP mode it pays for every caller of that server

AIMARKET_SANDBOX_VISITOR

Trial identity for market_invoke; random per install, set it to keep an allowance across reinstalls

AIMARKET_MCP_KEY

HTTP only — bearer auth key

AIMARKET_MCP_PRODUCTION

HTTP only — 1 requires AIMARKET_MCP_KEY (fail-closed)

AIMARKET_MCP_RATE

HTTP only — requests/min per key/IP (default 120)

AIMARKET_MCP_PORT

HTTP only — listen port (default 9090)

Run (stdio — Glama / Claude Desktop)

Claude Desktop (mcpServers entry) — no clone, no working directory to get wrong:

{
  "mcpServers": {
    "aimarket-mcp": {
      "command": "uvx",
      "args": ["aimarket-mcp"]
    }
  }
}

uvx fetches the published package and runs its aimarket-mcp console script, which is the stdio server. With the package already installed, "command": "aimarket-mcp" and no args does the same thing.

From a checkout, for development:

pip install -e .
python -m aimarket_mcp.stdio_server

Run (HTTP — self-host)

pip install -e .
AIMARKET_MCP_KEY=sk-... AIMARKET_MCP_PRODUCTION=1 aimarket-mcp-http   # :9090
# or: docker compose up -d   (uses Dockerfile.http)

Cursor / Claude (Streamable HTTP)

{
  "mcpServers": {
    "aimarket-web": {
      "type": "streamable-http",
      "url": "http://127.0.0.1:9090/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_AIMARKET_MCP_KEY"
      }
    }
  }
}

Publish on Glama

Listing: aimarket-mcp. Glama generates a container from the build settings in its admin panel:

Field

Value

Build steps

["bash scripts/glama_install.sh"]

CMD arguments

["mcp-proxy", "--", ".venv/bin/python", "-m", "aimarket_mcp.stdio_server"]

Placeholder parameters

{}

Pinned commit SHA

empty (latest synced commit)

Build, inspect, and publish a release after syncing source changes. A repository sync alone does not refresh the deployed tool catalog or its quality evaluation. The catalog should contain all five tools listed above. See Glama build and release instructions.

Consumers

  • Connected successfully? Share your host, configuration, and one working tool using the Show and tell template.

  • Metis — enable the preset:

    enable_mcp_tools: true
    mcp_ecosystem_presets: [aimarket-web]
  • ARGUS — add the server to argus.config.json mcpServers (see that repo).

Test

pip install -e '.[dev]' && pytest -q

Registries

See the directory submission checklist and current status before submitting or refreshing a listing.

Registry

Listing

Glama

glama.ai/mcp/servers/alexar76/aimarket-mcp

Official MCP Registry

io.github.alexar76/aimarket-mcp — server.json + GitHub Actions

PyPI

pip install aimarket-mcp

GitHub Releases

github.com/alexar76/aimarket-mcp/releases

Available Tools

5 tools
market_invoke_toolA

Run one capability from market_search on the hub's free trial tier.

Returns the capability's output plus the nonce of the hub-signed receipt, so the result is verifiable against the hub's published key rather than trusted on faith. A few trial invokes are granted per installation; after that the hub answers 402 and this reports that instead of fabricating a result. Paid access needs an on-chain escrow deposit, which is an operator action and deliberately not available here.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNoInput object for the capability; omit or {} when it takes none.
product_idNoThe product_id from market_search, e.g. 'prod-skopos'. Inferred from the capability_id prefix when empty, which is often wrong — pass it.
source_hubNoThe source_hub from market_search, when it showed one. Required for federated capabilities — most of the catalogue; without it the hub looks for the capability locally and answers 404.
capability_idYesExact capability_id from market_search, e.g. 'skopos.fleet.status@v1'.

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 are provided, so the description carries the full behavioral burden and does so well: it discloses the trial quota per installation, that exhaustion returns 402 and is reported rather than faked, and that results come with a hub-signed receipt nonce verifiable against the published key. It does not disclose possible side effects of the invoked capability, which is the remaining gap.

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?

Four sentences, front-loaded with the core action, and every sentence earns its place: trial tier, verifiability, quota/402 behavior, paid-access exclusion. No filler or repetition of the schema.

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 an output schema present, return values need not be spelled out, and the description covers the operational essentials an agent needs (quota limits, error semantics, verifiability, paid-path exclusion) alongside fully documented parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters (including the non-obvious product_id and source_hub federation caveats) are already documented. The description adds no parameter-level guidance beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with scope: 'Run one capability from market_search on the hub's free trial tier.' It explicitly grounds the tool against the sibling market_search_tool (this invokes what that one discovers), so an agent can distinguish them without opening schemas.

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?

Clear context: use after market_search, on the free trial tier, and a when-not (paid access requires on-chain escrow, deliberately unavailable here). It does not name an alternative tool to use for paid access, but the trial/no-trial boundary is well stated.

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

market_search_toolA

Discover paid AI capabilities listed on an AIMarket hub, with prices.

Free — no wallet, key or payment channel. Returns capability_id, product_id, price per call in USD and a trust score; pass both ids to market_invoke to run one. The hub lists only capabilities it can actually execute, so an empty result means it genuinely does not sell that. Set AIMARKET_HUB_URL to point at a different hub.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results, capped at 25.
intentYesWhat you want done, in plain language. Example: 'security posture of my servers' or 'verifiable random number'. Max 500 chars.
categoryNoOptional category filter, e.g. 'security'. Empty for none.
max_price_usdNoOptional cap on price per call in USD. 0 for no cap.

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?

With no annotations the description carries the full burden, and it does well: it discloses zero cost/auth requirements, the shape of returned metadata, the search-is-exhaustive semantics behind an empty result, and the AIMARKET_HUB_URL override for pointing at another hub. It leaves out ranking/ordering behaviour and what the trust score means, so it is strong but not exhaustive.

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?

Front-loaded with the core purpose, then caveats in descending order of importance (free, return shape, empty-result semantics, config override). Every sentence carries information and nothing is padded.

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?

An output schema exists, yet the description still gives the agent enough to act: what a call costs, what comes back, what an empty result means, and where the next call goes. Nothing needed to call or interpret it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (limit, intent, category, max_price_usd are all documented with defaults and examples), so the schema already does the work. The description adds no parameter-level detail such as how intent is matched or how max_price_usd interacts with the returned prices, making this baseline territory.

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?

Specific verb and resource ('Discover paid AI capabilities listed on an AIMarket hub, with prices') with the scope made explicit. It also names the downstream sibling ('pass both ids to market_invoke to run one'), which separates it cleanly from market_invoke_tool and the generic web_search_tool.

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?

Clear context for use: it is free, needs no wallet/key/payment channel, and the next step is stated. The empty-result rule ('the hub lists only capabilities it can actually execute, so an empty result means it genuinely does not sell that') is genuinely useful guidance. However, it never states when to prefer this over web_search_tool or metis_verify_tool, so no explicit alternatives or exclusions.

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

metis_verify_toolA

Run Metis cognition + verification on an input; returns answer plus verify_score/verified.

Calls the Metis /v1/verify API. Response includes machine-readable metadata [verify_score=… status=… route=… verified=…] so agents can fail-closed when confidence is insufficient. Configure AIMARKET_METIS_URL and optional AIMARKET_METIS_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesQuestion or task for Metis to answer through its cognition + verification envelope. Example: 'Is 2+2=4?' or 'Summarize the MIT license in one sentence.'
routeNoMetis cognition depth: fast (single pass), thinking (deeper), council (multi-agent, default), agent (tool-using). Higher routes cost more latency but improve verify_score.council

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 carries burden. It explains the response includes machine-readable metadata and fail-closed behavior. Could add more on error handling.

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?

Three short sentences, front-loaded with purpose, efficient.

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 schema and output schema, description adds configuration and behavioral notes. No major gaps.

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 is 3. Description adds little beyond schema: mentions route enum options but schema already enumerates them.

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?

Description clearly states it runs Metis cognition and verification, returns answer plus verify_score/verified, and names the API endpoint. Siblings are web tools, so no confusion.

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?

Describes configuration and that it calls a specific API, but does not explicitly state when to use or not use versus alternatives. However, context is clear enough.

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

web_fetch_toolA

Fetch a web page by URL and return its main text content.

SSRF-hardened (scheme allow-list, private-IP block, per-redirect re-validation, size cap). Output is sanitized, role-marker stripped, and wrapped in <untrusted>…</untrusted> before it can reach a model — safe for agent consumption with explicit untrusted marking.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic http(s) URL to fetch. Private IPs, localhost, and non-http schemes are rejected (SSRF guard). Example: https://example.com/docs/guide
max_charsNoMaximum characters of extracted main text to return (default 20000).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Despite no annotations, the description provides substantial behavioral details: SSRF hardening (scheme allow-list, private-IP block, per-redirect re-validation), size cap, output sanitization, role-marker stripping, and untrusted wrapping. This goes beyond the basic fetch operation.

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?

Two sentences, no redundant words. The purpose is stated first, then detailed safety and output handling. Every sentence provides essential information.

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 moderate complexity, the description covers core functionality, safety constraints, and output format. With an output schema present, return value explanation is unnecessary. Could mention caching or rate limits but not critical.

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 clear descriptions. The tool description reinforces safety context (SSRF, size cap) that adds value beyond the schema, especially for the url parameter which warns about private IPs.

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 'Fetch a web page by URL and return its main text content', with a specific verb and resource. It distinguishes itself from sibling tools (web_search_tool for searching, metis_verify_tool for verification) by focusing on direct URL fetching.

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

Usage Guidelines3/5

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

While the description implies usage for fetching known web pages, it does not explicitly contrast with sibling tools or provide when-to-use vs when-not-to-use guidance. The agent must infer from context.

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

web_search_toolA

Search the web for current facts and return the top result snippets.

Uses DuckDuckGo HTML results. Output is sanitized and wrapped <untrusted> like web_fetch. Prefer this over guessing when the answer depends on recent events or documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural-language search query for live web facts. Example: 'PyPI aimarket-metis release date'

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?

Discloses backend (DuckDuckGo HTML) and output sanitization/wrapping (<untrusted>). No annotations provided, so description carries burden; it gives useful context but omits potential rate limits or result count limits.

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?

Three sentences, no wasted words. Front-loaded with purpose. Every sentence adds value.

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?

Tool is simple with one param. Description covers backend, output format, and usage context. Output schema exists but description doesn't detail full return structure; however, 'top result snippets' and wrapping info suffice.

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?

Single parameter 'query' has schema description (100% coverage). Description adds an example and context ('natural-language', 'live web facts'), enhancing 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?

Description clearly states verb ('search'), resource ('web'), and output ('top result snippets'). Differentiates from siblings by recommending use over guessing for recent events.

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 states when to prefer this tool ('when the answer depends on recent events or documentation'). Lacks explicit exclusions or when not to use, but the positive guidance is clear.

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. 2 tool updatesv0.4.0
    • Addedmarket_invoke_tool
    • Addedmarket_search_tool
  2. 3 tool updatesv0.1.0
    • First observedmetis_verify_tool
    • First observedweb_fetch_tool
    • First observedweb_search_tool

TDQS

A4.3/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a fairly distinct purpose: web_search vs web_fetch (find vs retrieve), market_search vs market_invoke (discover vs execute), and metis_verify is a standalone verification endpoint. The only slight overlap is that market_invoke can run arbitrary hub capabilities while metis_verify runs a specific one, which could raise 'which do I call?' questions, but the descriptions clarify the difference.

Naming Consistency5/5

All five tools follow the same {domain}_{verb}_tool snake_case convention (web_search_tool, market_invoke_tool, market_search_tool, metis_verify_tool, web_fetch_tool). The redundant '_tool' suffix is unnecessary but applied uniformly, so it remains fully predictable.

Tool Count4/5

Five tools is a lean but reasonable set covering search, fetch, market discovery, invocation, and verification. It is on the thin side for a market/hub server since no tool exposes trial quota, hub config, or errors-as-state beyond what invoke returns, but nothing feels padded.

Completeness4/5

The core loop is covered: discover capabilities (market_search), run one (market_invoke), verify output (metis_verify), plus web search/fetch for grounding. Minor gaps exist (no tool to inspect remaining trial invokes or hub status), and paid escrow is intentionally excluded, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform web searches with full content retrieval and multi-engine provenance, including trust scoring and local corpus persistence, via MCP integration.
    1 npm
    3
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to perform unified web research through a single MCP server, including search, page fetching, recursive crawling, document parsing, YouTube transcript extraction, and deep multi-query research.
    3
    -