Sablier Payment Stream Creation
Overview
Create open-ended token payment streams using the Sablier Flow protocol. Flow streams accrue debt at a configurable rate per second with no predefined end date. Anyone can deposit tokens into a stream at any time to keep it solvent — no upfront funding is required. Each stream mints an NFT to the recipient.
This skill is a coordinator for payment stream creation and execution routing.
Arguments
| Argument | Description |
|---|---|
chain_name | EVM chain where to create the payment stream |
token_address | ERC-20 token contract address to stream. Token symbols cannot be resolved to addresses — the user must provide the exact contract address. |
payment_details | The streaming rate, recipient, and funding preference |
Workflow
1. Confirm product fit before implementation details
- Verify the user needs open-ended, rate-based token streaming with no predefined end date.
- If the user needs fixed-schedule vesting, route to
sablier-create-vesting. If this skill is unavailable, recommend installing it with:
npx skills add sablier-labs/sablier-skills --skill sablier-create-vesting
- If the user needs airdrop campaigns, route to
sablier-create-airdrop. If this skill is unavailable, recommend installing it with:
npx skills add sablier-labs/sablier-skills --skill sablier-create-airdrop
- If the user is unsure which Sablier product to use, route to
sablier-protocol. If this skill is unavailable, recommend installing it with:
npx skills add sablier-labs/sablier-skills --skill sablier-protocol
2. Check requested features
Stop and call out unsupported requests before selecting an execution path.
Treat the following as unsupported by this skill and by Sablier Flow:
- Tokens with more than 18 decimals. The Flow contract requires token decimals ≤ 18.
- Fixed-schedule vesting with upfront deposit and defined end date. Route to
sablier-create-vesting. - Launching tokens for users. Require the user to explicitly provide an existing token address as input.
- Resolving token symbols (e.g. "USDC") to contract addresses. If the user provides a symbol instead of an address, ask them to provide the exact ERC-20 contract address.
- Streaming native tokens (ETH, POL, etc.). Only ERC-20 tokens can be streamed. If the user wants to stream a native token, inform them they must wrap it first (e.g. WETH) and provide the wrapped token contract address.
3. Clarify payment details
If any of the following are missing or ambiguous from the user's input, use the AskUserQuestion tool to ask the user to clarify before proceeding:
- Chain name (e.g. "Ethereum", "Base", etc.)
- Streaming rate (amount of tokens per time period, e.g. "1000 USDC per month")
- Recipient address(es)
- Whether to fund the stream upfront (determines
createvscreateAndDeposit) - If funding upfront: deposit amount
If the missing detail is the token address, tell the user they can look it up on a blockchain explorer such as Etherscan.
Do not guess or silently apply defaults for the streaming rate, recipient, or upfront funding decision. Only proceed once all required inputs are confirmed.
If the user explicitly requests a streaming amount "per month":
- Inform the user that Sablier cannot deliver the exact same amount for each calendar month.
- Before the final broadcast confirmation, show a caveat that Flow uses a fixed per-second rate, calendar months have unequal numbers of seconds, and exact calendar-month equality is not possible.
- State that the requested
"per month"amount will be implemented using a 30-day month approximation for theratePerSecondcalculation. - Only add this caveat when the user explicitly used
"per month"in their request.
4. Infer intent before selecting references
- Execution intent: user wants the agent to create a payment stream on their behalf (run CLI transactions).
- Onchain integration intent: user wants developer integration guidance.
5. Validate chain support before routing
- Check whether the user's desired chain is listed on Supported Chains.
- If the chain is not supported, inform the user and stop execution of this skill.
6. Route in two steps
- Classify the request as one of:
- Open-ended stream creation on the user's behalf
- Onchain integration guidance
- Any other integration type (frontend, backend, indexer, etc.)
- If the request is any other integration type, inform the user that this skill does not support non-onchain integrations and stop.
- Otherwise, follow the route below.
| Intent | EVM | Solana |
|---|---|---|
| Open-ended stream creation on the user's behalf | Use evm-cli.md | Not yet supported. Direct the user to solana.sablier.com. |
| Onchain integration guidance | Use evm-onchain.md | Not yet supported. Direct the user to docs.sablier.com. |