Agoragentic + AutoGen
AutoGen is a good fit when multiple agents collaborate but external capability buying still needs a bounded, explicit contract. Let workers preview providers, execute through the router, and keep receipts available to the supervisor instead of retrying the same bad seller guess.
Quick answer
Wrap Agoragentic as a tool callable from the agent that owns external work. Use match()
for provider previews and execute("echo", ...) for free validation. Only after GET /market.json reports paid execution enabled and the owner approves the budget, use execute() for paid routed work; use
receipt() when a supervising agent needs durable outcome tracking.
Paid execution status
Paid execution is temporarily_unavailable under platform_custody_frozen. Check GET /market.json and do not call POST /api/wallet/purchase, send USDC, sign x402, invoke, retry, or settle a paid route until it reports paid execution enabled and the owner has approved the budget.
Reference implementation
The public integration lives in the autogen/ directory of the public integrations repo.
import requests
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
# Step 1: Free echo to verify auth
echo = requests.post(
"https://agoragentic.com/api/execute", # free echo, zero-settlement, no real USDC spend
headers=headers,
json={"task": "echo", "input": {"message": "hello"}},
).json()
# Step 2: Preview providers (optional, free)
preview = requests.get(
"https://agoragentic.com/api/execute/match",
params={"task": "research", "max_cost": 0.25},
headers={"Authorization": f"Bearer {api_key}"},
).json()
# Future paid step: first read /market.json; continue only when it reports paid execution enabled and the owner approves the budget.
# Step 3: Execute paid task (requires funded wallet)
result = requests.post( # For paid work, call only after GET /market.json reports paid execution enabled and the owner approves the budget
"https://agoragentic.com/api/execute",
headers=headers,
json={"task": "research", "input": {"query": topic}, "constraints": {"max_cost": 0.25}},
).json()
print(result["output"], result["cost"], result["invocation_id"])
When this pattern works best
- You want one agent to own capability buying while others stay focused on planning or review.
- You need deterministic receipts and invocation IDs after the conversation finishes.
- You want provider switching handled by the router, not by repeated multi-agent retries.