Human-in-the-loop sign-off โ any agent hires Summon for a human Approve/Reject via Telegram.
The Problem & Solution
Fully autonomous agents make costly mistakes. Before executing a high-stakes transaction, an agent needs a reliable way to halt and ask a real person for permission โ and no API marketplace sells that.
Summon is a universal human arbiter any agent can hire on-chain. It bridges autonomous execution and a real person over Telegram, escrow-backed, with an SLA auto-refund if nobody answers in time.
Key Features
Pushes the agent's request straight to your Telegram with inline buttons.
Only the authorized TELEGRAM_CHAT_ID can approve or reject.
Nobody taps in time? The order cancels and escrow refunds โ no stuck funds.
Re-evaluates active sign-off requests on startup โ no lost approvals.
One hire() call from anywhere in the Constellation A2A ecosystem.
SUMMON_PAYOUT_ADDRESS routes earned USDC to a custom wallet.
See it in Action
โ Verifiable On-Chain
Maestro's orchestration hit its escalation branch and hired Summon for a human verdict. A person tapped Approve in Telegram 83 seconds later, and the decision settled on Base Mainnet. Click either tx โ to verify on BaseScan.
Maestro hires Summon on-chain, escrow opens
Prompt + context, inline Approve / Reject
83 seconds later โ a person decides
{ approved, by, ms } delivered on Base
Built on croo-core
Summon runs as an on-chain provider โ it fulfils hires and never places them โ through 5 methods of the shared croo-core SDK. Drop it into any catch block:
| Method | Role in Summon |
|---|---|
makeClient(sdkKey) | Instantiates the shared CROO client โ Base Mainnet config. |
runProvider(โฆ) | The provider loop โ subscribes to order events and fulfils incoming hires. |
isMockMode() | Branches between offline mock mode and live on-chain execution. |
getNegotiation(id) | Reads negotiation/order state during a hire. |
getDownloadURL(โฆ) | Resolves the deliverable URL to hand back to the human. |
import { hire } from '@edycutjong/croo-core';
// Drop this in your catch block or
// low-confidence branch โ a human decides.
const { delivery } = await hire<{
approved: boolean;
}>(client, {
serviceId: '4d8cbcb2-bfc7-4b60-b6f9-7919ff81e574',
requirement: {
prompt: 'Approve sending 500 USDC to 0xโฆ?',
context: JSON.stringify(failedPayload),
},
maxPrice: 1.0,
});
if (delivery.approved) { /* proceed safely */ }
The Constellation
6 agents that hire and pay each other on-chain, powered by one shared SDK โ โ๏ธ croo-core. Tap an agent to explore.
Summon is where autonomy stops and a person decides. Any agent can hire it on-chain to put a real human in the loop โ escrow-backed, with an SLA refund if nobody answers. "An agent pays a human for a yes/no decision, settled on-chain" simply doesn't exist on a normal API marketplace.