aimarket-mcp
The aimarket-mcp server is a hardened MCP gateway providing three tools for web access and AI-powered verification:
web_fetch_tool: Fetch the main text content of a public URL, with SSRF protection (blocks private IPs, localhost, and non-HTTP schemes), output sanitization, and content wrapped in<untrusted>tags. Supports configurable max character limits (up to 100,000 chars).web_search_tool: Perform live web searches via DuckDuckGo and retrieve top result snippets. Accepts natural-language queries up to 500 characters. Output is sanitized and wrapped in<untrusted>tags.metis_verify_tool: Submit a question or task to the Metis AI verification API. Returns an answer with machine-readable metadata (verify_score,status,route,verified), allowing agents to fail-closed on low confidence. Supports four cognition depths:fast,thinking,council(default), andagent.
Provides live web search via DuckDuckGo, returning top snippets.
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-mcpsearch for recent breakthroughs in AI"
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-mcpis 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-mcp β ecosystem MCP gateway
π English Β· Π ΡΡΡΠΊΠΈΠΉ Β· EspaΓ±ol Β· FranΓ§ais Β· δΈζ Β· Glossary
π’ Just want to try the marketplace? Install nothing.
Paste
https://modelmarket.dev/mcpinto your MCP client and you havemarket_search
market_invokeagainst 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.mdInstall 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) |
|
MCP gateway (HTTP) | |
Tool handlers + security | |
Glama / Docker (stdio) | |
Self-host HTTP |
Compatible hosts: Claude Desktop, Cursor, Glama, and any MCP client that supports stdio or Streamable-HTTP.
Tools
Tool | What it does | Hardening |
| Fetch a URL, return main text (readability-lite) | SSRF-guarded; output sanitized + |
| Live DuckDuckGo search β top snippets | output sanitized + |
| Metis cognition + verification envelope | returns answer + |
| Discover priced capabilities on an AIMarket hub | free; no wallet, key or channel; the hub lists only what it can execute |
| 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: qsearch
Configure (env)
var | meaning |
| Metis verify API base (default |
| optional bearer for Metis verify |
| DuckDuckGo HTML endpoint override |
| AIMarket hub for |
| Trial identity for |
| HTTP only β bearer auth key |
| HTTP only β |
| HTTP only β requests/min per key/IP (default 120) |
| 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_serverRun (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: glama.ai/mcp/servers/alexar76/aimarket-mcp
Same pattern as aimarket-oracle-gateway (working on Glama): repo-root glama.json + Dockerfile + python -m aimarket_mcp.stdio_server.
Field | Value |
Dockerfile |
|
Command |
|
Placeholder parameters |
|
Pinned SHA | empty (latest) |
Do not use the auto-generated debian:trixie-slim + uv sync + mcp-proxy -- aimarket-mcp template β that was the broken HTTP/ENOENT path.
Consumers
Metis β enable the preset:
enable_mcp_tools: true mcp_ecosystem_presets: [aimarket-web]ARGUS β add the server to
argus.config.jsonmcpServers(see that repo).
Test
pip install -e '.[dev]' && pytest -qGlama
Glama ignores repo Dockerfiles β set Build steps in admin/dockerfile:
["bash scripts/glama_install.sh"]CMD: [".venv/bin/python", "-m", "aimarket_mcp.stdio_server"]. Pin main or tag glama-build (not a
fixed SHA). Details: docs/GLAMA.md.
Registries
Registry | Listing |
Glama | |
Official MCP Registry |
|
PyPI |
|
GitHub Releases |
Available Tools
3 toolsmetis_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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Question or task for Metis to answer through its cognition + verification envelope. Example: 'Is 2+2=4?' or 'Summarize the MIT license in one sentence.' | |
| route | No | Metis 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to fetch. Private IPs, localhost, and non-http schemes are rejected (SSRF guard). Example: https://example.com/docs/guide | |
| max_chars | No | Maximum characters of extracted main text to return (default 20000). |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language search query for live web facts. Example: 'PyPI aimarket-metis release date' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v0.1.0- First observed
metis_verify_tool - First observed
web_fetch_tool - First observed
web_search_tool
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: verification, web fetching, and web search. No overlap or ambiguity between them.
All tool names follow a `[modifier]_[verb]_tool` pattern, but the modifiers mix a specific name ('metis') with a category ('web'). While predictable, the inconsistency in modifier types reduces consistency slightly.
With only three tools and a server name implying an AI market domain, the tool count feels too small. The tools do not cover typical market-related operations, making the set feel incomplete for its apparent scope.
The tool set lacks any market-specific functionality (e.g., listing products, getting details) despite the server name. The generic web utilities and a specialized verification API do not form a coherent coverage of the implied domain.
Maintenance
Related MCP Connectors
Scrape, crawl and search the web for AI agents via MCP.
Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables web search, scraping, extraction, and crawling through an MCP interface, allowing coding agents to access real-time web data.1MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to perform web searches with full content retrieval and multi-engine provenance, including trust scoring and local corpus persistence, via MCP integration.32Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to perform web searches and fetch web pages over HTTP, using Exa and Parallel AI as search providers without requiring API keys.MIT
- FlicenseNot gradedqualityCmaintenanceEnables 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.2-