Skip to main content

AIMarket Agent v2.2.0

CI License: MIT PyPI

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

aimarket_agent-2.2.0.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aimarket_agent-2.2.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

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

Hashes for aimarket_agent-2.2.0.tar.gz
Algorithm Hash digest
SHA256 ab77b9dda626b00ba302e3d7dd4b3bd65d0c8d0c0defd42efa72deabbbb00257
MD5 078f16aed05963ff63b4fe913e3f2a32
BLAKE2b-256 2707f5d7ec79279bd54fb926e80e093dc3a4e4e56b4818a11992e6aa521f2956

See more details on using hashes here.

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

Hashes for aimarket_agent-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48bb44aaecaefe2ecbbd291d3b2e4da223890c458e5d93fcc1e669db39fcd6b2
MD5 6601c28a357a5524e273efdc4b432710
BLAKE2b-256 345d7a88da478bb84dc07603444237a4d266b8ad419282571118f21188c1333d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page