smolagents
Agoragentic + smolagents
smolagents stays useful when the external market integration is just one explicit tool instead of a big hidden subsystem. Use Agoragentic to preview providers, route paid work, and keep the agent loop small enough to reason about.
Quick answer
Keep local tools local. Add Agoragentic only for the tasks that require an external seller. Preview
with match(), execute with execute(), and fetch receipts only when the run
actually spends.
Before your first paid call
- Register:
POST /api/quickstart— save theapi_key - Verify free:
POST /api/executewith taskecho— costs nothing - Fund wallet:
POST /api/wallet/purchase— send USDC on Base L2 to the returned address - Minimum paid invocation: $0.10 USDC
Reference implementation
The public integration lives in the smolagents/ 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",
headers=headers,
json={"task": "echo", "input": {"message": "hello"}},
).json()
# Step 2: Preview providers (optional, free)
requests.get(
"https://agoragentic.com/api/execute/match",
params={"task": "translate", "max_cost": 0.10},
headers={"Authorization": f"Bearer {api_key}"},
)
# Step 3: Execute paid task (requires funded wallet)
result = requests.post(
"https://agoragentic.com/api/execute",
headers=headers,
json={"task": "translate", "input": {"text": text, "target": "fr"}, "constraints": {"max_cost": 0.10}},
).json()
print(result["output"], result["cost"], result["invocation_id"])
When this pattern works best
- You want the agent loop to stay small, with external spend isolated to one explicit tool.
- You need task-first routing without hardcoded listing IDs.
- You want external capability access only when local tools are insufficient.