AIMarket Agent v2.2.0
What is new in 2.2.0
Receipts are verified against the key that signed them. A hub is a broker: when it routes
an invoke to a federated provider, what comes back carries the provider's Ed25519 signature,
not the hub's. Up to and including 2.1.2 this SDK held one key — the hub's — and used it for
every receipt, so it answered invalid-signature for 42 of the 47 capabilities on
modelmarket.dev, on receipts that were perfectly valid. Keys are now resolved per origin and
cached.
The v2 canonical is understood. The hub signs a rejection receipt at canonical v2, which
binds the evidence a rejection is argued from (reason, verify_score, trace_id,
refunded, channel_id) — on a rejection every v1 field is a constant, so v1 authenticated
nothing about why the buyer's money came back. 2.1.x computed only v1 and therefore rejected
every v2 receipt: exactly the ones a buyer most wants to check.
The signing-key fetch cannot be steered. The .well-known lookup drops the fragment and
query (a source_hub of http://host/_cluster/health# used to produce a literal
GET /_cluster/health), accepts only http/https, strips credentials from the URL, and does
not follow redirects.
verify_receipt(receipt) still takes one argument, so 2.1.x callers are unaffected — they
simply keep asking about the hub, which for a hub-served capability is the right question.
Ecosystem: AICOM overview & live demos · Community: Discord · Pollux · Telegram · Castor
Reference consumer agent for the AIMarket Protocol.
pip install aimarket-agent — any AI (Claude, GPT, Cursor, LangChain) can discover, pay, and invoke capabilities across the AIMarket federation. MIT Licensed.
SDK versions: this package is on the Python 2.x line. Dart/TypeScript/Rust SDKs use 0.1.x — see
docs/sdk-version-policy.md.
Live Hub
This agent connects to modelmarket.dev — the reference hub, currently serving 47 capabilities — 5 of its own and 42 federated. Federated peers and oracles (Platon randomness, Chronos VDF, Murmuration consensus, Lumen reputation, …) appear in search when their manifests are pinned on the hub.
Install
pip install aimarket-agent
Quick Start
# Full autonomous cycle
aimarket-agent run "translate spec to 5 languages + legal review" \
--base-url https://modelmarket.dev \
--budget 3.00
# Search capabilities
aimarket-agent search "code review" --base-url https://modelmarket.dev
# Invoke a single capability
aimarket-agent invoke prod-translate/translate.multi@v2 \
--base-url https://modelmarket.dev \
--input '{"text":"Hello world"}'
Python SDK
from aimarket_agent import AIMarketAgent
agent = AIMarketAgent(
base_url="https://modelmarket.dev",
budget=3.00,
affiliate_id="my_app"
)
# Full cycle: discover → channel → invoke → settle → BOM
result = agent.run("translate spec to 5 languages + legal review")
print(f"Spent: ${result['total_spent_usd']:.2f}")
# Discovery only
capabilities = agent.discover("summarize long documents")
for c in capabilities:
print(f" {c['capability_id']} — ${c.get('price_per_call_usd', 0):.2f}")
# Single invoke
result = agent.invoke_single(
"prod-translate", "translate.multi@v2",
{"text": "Hello world", "locales": ["ru", "fr", "de"]}
)
# Pay-on-Verified: escrow the debit until Metis verifies the output.
# The result carries a "verification" envelope; poll it to the verdict
# (exponential backoff, no deadline by default — pass max_wait_s to bound).
result = agent.invoke_single(
"prod-translate", "translate.multi@v2",
{"text": "Hello world"},
verify={"requested": True, "intent": "translate to French", "mode": "auto"},
)
final = agent.wait_for_verification(result["receipt"]["nonce"])
print(final["verification"]["status"]) # "settled" (paid) or "refunded"
Full Autonomous Cycle
① GET /.well-known/ai-market.json → discover hub + its signing key
② GET /ai-market/v2/search?intent=… → rank capabilities
③ POST /ai-market/v2/channel/open → pre-fund channel
④ POST /ai-market/v2/invoke → invoke (safety-gated, signed receipt)
⑤ POST /ai-market/v2/channel/close → settle + refund
⑥ GET {source_hub}/.well-known/… → the ORIGIN's key, to verify the receipt
⑦ Save bill_of_materials.json → signed audit trail
Safety Gate
If an invocation is blocked by the safety gate (injection, PII, etc.), the agent receives HTTP 403 with a signed rejection receipt and the channel is auto-refunded.
Output
[search] 47 capabilities · 5 local, 42 federated
[plan] translate.multi@v2 (est $0.40)
[channel] opened ch_a8f3 with $3.00 deposit
[call] translate.multi@v2 ....... $0.40 ✓ 8.1s
[settle] used $0.40, refund $2.60
[saved] bill_of_materials.json
Configuration
| CLI flag | Default | Description |
|---|---|---|
--base-url |
http://127.0.0.1:9083 |
Hub URL |
--budget |
3.0 |
Max budget in USD |
--affiliate |
— | Affiliate ID for revenue share |
--json |
false | Output as JSON |
Demo
Related repos
| Repo | Role |
|---|---|
| aimarket-hub | Reference hub |
| aimarket-protocol | Normative v2 spec |
| aimarket-sdks | TS/Rust/Dart SDKs |
| argus | Personal agent reference client |
| dioscuri | Twin community agents — MNEMOSYNE Q&A |
Community
The DIOSCURI twins answer questions from synced GitHub docs.
| Channel | Twin | Best for |
|---|---|---|
| Discord | Pollux | Help, ideas, show-and-tell |
| Telegram | Castor | Releases, digests, quick news |
Ecosystem map: Alien Monitor · AICOM
License
MIT · Maintained by AI-Factory · modelmarket.dev · Hub API
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aimarket_agent-2.2.0.tar.gz.
File metadata
- Download URL: aimarket_agent-2.2.0.tar.gz
- Upload date:
- Size: 34.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab77b9dda626b00ba302e3d7dd4b3bd65d0c8d0c0defd42efa72deabbbb00257
|
|
| MD5 |
078f16aed05963ff63b4fe913e3f2a32
|
|
| BLAKE2b-256 |
2707f5d7ec79279bd54fb926e80e093dc3a4e4e56b4818a11992e6aa521f2956
|
File details
Details for the file aimarket_agent-2.2.0-py3-none-any.whl.
File metadata
- Download URL: aimarket_agent-2.2.0-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48bb44aaecaefe2ecbbd291d3b2e4da223890c458e5d93fcc1e669db39fcd6b2
|
|
| MD5 |
6601c28a357a5524e273efdc4b432710
|
|
| BLAKE2b-256 |
345d7a88da478bb84dc07603444237a4d266b8ad419282571118f21188c1333d
|