
Stock token prices, P&L and trades you sign on Robinhood Chain, plus 300+ AI models on one key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer kf_… key. Free trial key at https://keyfo.xyz/connect. Without a key: preview with read tools.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Ask another AI model (GPT, Gemini, Grok and others) one question through keyfo and get its answer, for a second opinion. This is a paid model call: it needs a key and draws from the key’s daily allowance at the model’s price. A trial key can ask low-cost models only. The other model gets no tools.
The question for the other model, with all the context it needs: it does not see this conversation.
Model ID with its vendor, like x-ai/grok-4.3 or google/gemini-2.5-flash. Empty uses a low-cost default model.
Optional instructions for the other model.
Longest answer in tokens, from 1 to 2048. 512 by default; a trial key gets 512 at most.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http keyfo https://keyfo.xyz/mcp
Headers
Authorization (optional, not in the config above): Bearer kf_… key. Free trial key at https://keyfo.xyz/connect. Without a key: preview with read tools.Ask another AI model (GPT, Gemini, Grok and others) one question through keyfo and get its answer, for a second opinion. This is a paid model call: it needs a key and draws from the key’s daily allowance at the model’s price. A trial key can ask low-cost models only. The other model gets no tools.
| Argument | Type | Description |
|---|---|---|
| model | string | Model ID with its vendor, like x-ai/grok-4.3 or google/gemini-2.5-flash. Empty uses a low-cost default model. |
| prompt* | string | The question for the other model, with all the context it needs: it does not see this conversation. |
| system | string | Optional instructions for the other model. |
| max_tokens | integer | Longest answer in tokens, from 1 to 2048. 512 by default; a trial key gets 512 at most. |
{
"type": "object",
"title": "ask_modelArguments",
"required": [
"prompt"
],
"properties": {
"model": {
"type": "string",
"title": "Model",
"default": "",
"description": "Model ID with its vendor, like x-ai/grok-4.3 or google/gemini-2.5-flash. Empty uses a low-cost default model."
},
"prompt": {
"type": "string",
"title": "Prompt",
"description": "The question for the other model, with all the context it needs: it does not see this conversation."
},
"system": {
"type": "string",
"title": "System",
"default": "",
"description": "Optional instructions for the other model."
},
"max_tokens": {
"type": "integer",
"title": "Max Tokens",
"default": 512,
"description": "Longest answer in tokens, from 1 to 2048. 512 by default; a trial key gets 512 at most."
}
}
}Build unsigned transactions to deposit USDG into a Morpho vault on Robinhood Chain, or to withdraw it. Without a vault, the largest USDG vault is used. Vaults carry smart contract, curator and market risk. Returns calls for the wallet owner to sign and send in order on Robinhood Chain (chain ID 4663). No keyfo tool signs. The answer also has sign_url: a keyfo page where the user checks the transaction and signs it in their own wallet. It stays open for 15 minutes and gets a new quote itself when the price is out of date. Show that link to the user, and never ask them to paste the transaction data anywhere.
| Argument | Type | Description |
|---|---|---|
| pct | number | Share to move: of the wallet’s USDG for a deposit, of its vault shares for a withdrawal. Above 0, up to 100. |
| usd | number | USDG to deposit or withdraw (1 USDG is about $1). Use this or pct. |
| side | string | deposit or withdraw. deposit by default. |
| vault | string | Vault address or name from morpho_rates. Empty uses the largest USDG vault. |
| wallet* | string | The wallet that signs and sends, and holds the USDG or the vault shares. |
{
"type": "object",
"title": "build_morpho_depositArguments",
"required": [
"wallet"
],
"properties": {
"pct": {
"type": "number",
"title": "Pct",
"default": 0,
"description": "Share to move: of the wallet’s USDG for a deposit, of its vault shares for a withdrawal. Above 0, up to 100."
},
"usd": {
"type": "number",
"title": "Usd",
"default": 0,
"description": "USDG to deposit or withdraw (1 USDG is about $1). Use this or pct."
},
"side": {
"enum": [
"deposit",
"withdraw"
],
"type": "string",
"title": "Side",
"default": "deposit",
"description": "deposit or withdraw. deposit by default."
},
"vault": {
"type": "string",
"title": "Vault",
"default": "",
"description": "Vault address or name from morpho_rates. Empty uses the largest USDG vault."
},
"wallet": {
"type": "string",
"title": "Wallet",
"description": "The wallet that signs and sends, and holds the USDG or the vault shares."
}
}
}Build an unsigned transaction that sets a token approval back to zero, so that spender can no longer move the token. Needs a key. Returns a call for the wallet owner to sign and send on Robinhood Chain (chain ID 4663). No keyfo tool signs. The answer also has sign_url: a keyfo page where the user checks the transaction and signs it in their own wallet. It stays open for 15 minutes and gets a new quote itself when the price is out of date. Show that link to the user, and never ask them to paste the transaction data anywhere.
| Argument | Type | Description |
|---|---|---|
| token* | string | Ticker (TSLA, USDG, WETH) or token address. |
| wallet* | string | The wallet that gave the approval. It signs and sends. |
| spender* | string | Address the approval was given to, from stock_approvals. |
{
"type": "object",
"title": "build_revokeArguments",
"required": [
"wallet",
"token",
"spender"
],
"properties": {
"token": {
"type": "string",
"title": "Token",
"description": "Ticker (TSLA, USDG, WETH) or token address."
},
"wallet": {
"type": "string",
"title": "Wallet",
"description": "The wallet that gave the approval. It signs and sends."
},
"spender": {
"type": "string",
"title": "Spender",
"description": "Address the approval was given to, from stock_approvals."
}
}
}Build unsigned transactions to buy a stock token on Robinhood Chain with ETH (`eth`, or `usd` worth of ETH) or sell `pct` percent of the wallet’s holding for ETH. `token` is a ticker (TSLA) or the token address. A buy needs the ETH, plus gas, already in `wallet`; if it is short, fund it with fund_agent first. The calls expire at valid_until: sign and send before then, or build the trade again. Returns calls for the wallet owner to sign and send in order on Robinhood Chain (chain ID 4663). No keyfo tool signs. The answer also has sign_url: a keyfo page where the user checks the transaction and signs it in their own wallet. It stays open for 15 minutes and gets a new quote itself when the price is out of date. Show that link to the user, and never ask them to paste the transaction data anywhere.
| Argument | Type | Description |
|---|---|---|
| eth | number | ETH to spend on a buy, up to 10. |
| pct | number | Share of the holding to sell, above 0 and up to 100. |
| usd | number | Dollars of ETH to spend, at the current ETH price. |
| side* | string | buy or sell. |
| token* | string | Ticker, like TSLA, or the token address. |
| wallet* | string | The wallet that signs and sends. The route is quoted for it. |
Plan a buy of a stock token on Robinhood Chain for `wallet` that waits for a price: when the pool price goes `trigger` below or above `price_usd`, keyfo prepares a buy of `usd` or `eth` and a sign link. Nothing is bought or signed now. The plan starts after the wallet’s owner confirms it at https://keyfo.xyz/app. The price is the pool’s 5-minute median from at least 5 samples, and the level must hold for about 3 minutes. Only pools with at least $250000 of depth qualify, and no buy is prepared if the route costs more than 3% above the median. The owner then has 6 hours to sign. It is not a limit order: the buy goes at the market price when it is signed. One time by default; with `repeat`, it waits again after each buy. Limits as for scheduled buys: 5 plans per wallet, $500 per buy, $1000 a week.
| Argument | Type | Description |
|---|---|---|
| eth | number | ETH to spend on the buy. Give usd or eth, not both. |
| usd | number | Dollars of ETH to spend on the buy, at the ETH price when it is prepared. Up to 500. |
| token* | string | Ticker, like NVDA, or the token address. |
| repeat | boolean | true waits for the price again after each buy. Default: false, one buy. |
| wallet* | string | The wallet that buys and signs. Its owner confirms the plan at https://keyfo.xyz/app. |
| trigger* | string | below or above: buy when the pool price drops below or rises above price_usd. |
Cancel a buy plan by its `id`. Nothing new is prepared for it; buys already signed stay as they are.
| Argument | Type | Description |
|---|---|---|
| id* | string | The plan id from schedule_buy or list_schedules. |
{
"type": "object",
"title": "cancel_scheduleArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"description": "The plan id from schedule_buy or list_schedules."
}
}
}The state of Robinhood Chain: the latest block and its age, the average block time, the gas price, and an estimate of what a transfer and a stock swap cost in dollars.
No arguments.
{
"type": "object",
"title": "chain_statusArguments",
"properties": {}
}A Robinhood Chain transaction in parts: whether it succeeded, who sent it to what, the function it called, its fee, and every token transfer and approval it made.
| Argument | Type | Description |
|---|---|---|
| hash* | string | Transaction hash on Robinhood Chain, 0x and 64 hex characters. |
{
"type": "object",
"title": "explain_txArguments",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"title": "Hash",
"description": "Transaction hash on Robinhood Chain, 0x and 64 hex characters."
}
}
}Quote moving funds from another network (ethereum, base, arbitrum, optimism, bnb, polygon and others, 15 in all, or a chain ID) to an agent wallet on Robinhood Chain, arriving as ETH. `payer` is the wallet that already holds the funds on the origin network: if the user did not name it, ask, do not reuse `wallet`. `amount` is in the smallest unit (wei for ETH), a number or a string of digits. Returns transactions for the payer to sign. The answer also has sign_url: a keyfo page where the user checks the transaction and signs it in their own wallet. It stays open for 15 minutes and gets a new quote itself when the price is out of date. Show that link to the user, and never ask them to paste the transaction data anywhere.
| Argument | Type | Description |
|---|---|---|
| payer* | string | Wallet that pays on the origin network and signs there. It must hold the funds there, so it is usually not the agent wallet: ask the user for it, do not copy `wallet`. |
| amount* | any | Amount in the smallest unit of what you pay with, like wei for ETH. |
| wallet* | string | Agent wallet on Robinhood Chain that receives the ETH. |
| currency | string | Token address to pay with on the origin network. Empty pays in its native coin. |
| origin_chain* | any | Network to pay from: a name, like base, or its chain ID, like 8453. |
The AI models a keyfo key can call: price per million tokens, context length and what each supports (tools, reasoning, vision, json). Filter by what the task needs; a trial key sees its low-cost list. Listing is free.
| Argument | Type | Description |
|---|---|---|
| can | string | What the model must support, comma-separated: tools, reasoning, vision, json. Empty for any. |
| sort | string | price (cheapest first, the default), context (longest first) or name. |
| limit | integer | How many to return, from 1 to 100. 20 by default. |
| query | string | A word in the model ID or name, like gemini or grok. |
{
"type": "object",
"title": "list_modelsArguments",
"properties": {
"can": {
"type": "string",
"title": "Can",
"default": "",
"description": "What the model must support, comma-separated: tools, reasoning, vision, json. Empty for any."
},
"sort": {
"enum": [
"price",
"context",
"name"
],
"type": "string",
"title": "Sort",
"default": "price",
"description": "price (cheapest first, the default), context (longest first) or name."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"description": "How many to return, from 1 to 100. 20 by default."
},
"query": {
"type": "string",
"title": "Query",
"default": "",
"description": "A word in the model ID or name, like gemini or grok."
}
}
}The buy plans of `wallet`: token, amount, day, hour and time zone, status and the next time. Read only.
| Argument | Type | Description |
|---|---|---|
| wallet* | string | Wallet address on Robinhood Chain, 0x… |
{
"type": "object",
"title": "list_schedulesArguments",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"title": "Wallet",
"description": "Wallet address on Robinhood Chain, 0x…"
}
}
}One model in detail: prices, context, what it supports, and what a call of a given size would cost.
| Argument | Type | Description |
|---|---|---|
| model* | string | Model ID with its vendor, like openai/gpt-4.1-mini. |
| tokens_in | integer | Prompt tokens of a typical call, for the cost estimate. 1000 by default. |
| tokens_out | integer | Answer tokens of a typical call, for the cost estimate. 500 by default. |
{
"type": "object",
"title": "model_detailArguments",
"required": [
"model"
],
"properties": {
"model": {
"type": "string",
"title": "Model",
"description": "Model ID with its vendor, like openai/gpt-4.1-mini."
},
"tokens_in": {
"type": "integer",
"title": "Tokens In",
"default": 1000,
"description": "Prompt tokens of a typical call, for the cost estimate. 1000 by default."
},
"tokens_out": {
"type": "integer",
"title": "Tokens Out",
"default": 500,
"description": "Answer tokens of a typical call, for the cost estimate. 500 by default."
}
}
}Work out the net result over a year of borrowing USDG against a stock token on Morpho and putting it in a USDG vault, and the price at which the loan would be liquidated. A calculation at current rates, not advice: nothing is built or sent.
| Argument | Type | Description |
|---|---|---|
| usd* | number | Dollars of the stock token used as collateral. |
| ticker* | string | Ticker of the stock token to borrow against, like NVDA. |
| borrow_pct | number | USDG to borrow, as a percent of the collateral value. Must stay below the market’s LLTV. 50 by default. |
{
"type": "object",
"title": "morpho_loopArguments",
"required": [
"ticker",
"usd"
],
"properties": {
"usd": {
"type": "number",
"title": "Usd",
"description": "Dollars of the stock token used as collateral."
},
"ticker": {
"type": "string",
"title": "Ticker",
"description": "Ticker of the stock token to borrow against, like NVDA."
},
"borrow_pct": {
"type": "number",
"title": "Borrow Pct",
"default": 50,
"description": "USDG to borrow, as a percent of the collateral value. Must stay below the market’s LLTV. 50 by default."
}
}
}Morpho on Robinhood Chain: USDG vaults with their net APY, size and curator, and the lending markets that take stock tokens as collateral, with the borrow rate and LLTV. Rates change; the numbers are a snapshot. Pass a ticker for one stock.
| Argument | Type | Description |
|---|---|---|
| ticker | string | Ticker or token address of a stock token, like NVDA. Empty lists all markets for stock tokens. |
{
"type": "object",
"title": "morpho_ratesArguments",
"properties": {
"ticker": {
"type": "string",
"title": "Ticker",
"default": "",
"description": "Ticker or token address of a stock token, like NVDA. Empty lists all markets for stock tokens."
}
}
}What your keyfo key can still use: its allowance, what is left and when it resets. Without a key: how many free read calls are left this hour.
No arguments.
{
"type": "object",
"title": "my_keyArguments",
"properties": {}
}Scheduled buys of `wallet` that are ready to sign now, each with its sign_url and when its window closes. Read only. Show the user every link.
| Argument | Type | Description |
|---|---|---|
| wallet* | string | Wallet address on Robinhood Chain, 0x… |
{
"type": "object",
"title": "pending_signsArguments",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"title": "Wallet",
"description": "Wallet address on Robinhood Chain, 0x…"
}
}
}A short brief for one wallet on Robinhood Chain, read only: each stock token it holds with value and 24h change, the portfolio total, and today’s top three movers you can buy. No key is needed for that. With a key for the same wallet, it adds what is left of today’s model allowance and the scheduled buys ready to sign, with their links; without one, it only counts the buys ready to sign and points to https://keyfo.xyz/app. It reads data on request; nothing is sent on a schedule.
| Argument | Type | Description |
|---|---|---|
| wallet* | string | Wallet address on Robinhood Chain, 0x… |
{
"type": "object",
"title": "portfolio_briefArguments",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"title": "Wallet",
"description": "Wallet address on Robinhood Chain, 0x…"
}
}
}Profit and loss for the stock tokens a wallet holds on Robinhood Chain, read only, no key needed: average entry price, unrealized P&L per token and in total. Entry prices come from the wallet’s buys in its transfer history on the chain. Tokens that arrived without a payment have no known cost and are left out of the average. Where the ETH price at the buy’s block is not known, the current one is used and the result is marked approximate. Gas is not counted, sales for ETH show their proceeds only when they went through LI.FI or OKX, and a swap from one stock token to another has no entry price.
| Argument | Type | Description |
|---|---|---|
| ticker | any | One stock token, like NVDA. Empty returns every holding. |
| wallet* | string | Wallet address on Robinhood Chain, 0x… |
{
"type": "object",
"title": "portfolio_pnlArguments",
"required": [
"wallet"
],
"properties": {
"ticker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ticker",
"default": null,
"description": "One stock token, like NVDA. Empty returns every holding."
},
"wallet": {
"type": "string",
"title": "Wallet",
"description": "Wallet address on Robinhood Chain, 0x…"
}
}
}Plan a weekly buy of a stock token on Robinhood Chain for `wallet`: `usd` or `eth` each week on `weekday` at `hour` in `tz`. Nothing is bought or signed now. The plan starts only after the wallet’s owner confirms it at https://keyfo.xyz/app, signed in with that wallet. At each time keyfo prepares a fresh trade and a sign link; the owner signs it in their own wallet within 6 hours, or that buy is marked missed and the plan goes on. Limits: 5 plans per wallet, $500 per buy, $1000 a week per wallet.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA time zone, like Europe/Kyiv or America/New_York. UTC by default. |
| eth | number | ETH to spend on each buy. Give usd or eth, not both. |
| usd | number | Dollars of ETH to spend on each buy, at the ETH price at that time. Up to 500. |
| hour* | integer | Hour of the day in tz, from 0 to 23. |
| token* | string | Ticker, like NVDA, or the token address. |
| wallet* | string | The wallet that buys and signs. Its owner confirms the plan at https://keyfo.xyz/app. |
| weekday* | string | Day of the week: monday to sunday. |
Open token approvals of a wallet on Robinhood Chain: the stock tokens keyfo lists, USDG and WETH, checked against the spenders keyfo knows, such as LI.FI and Permit2. It does not scan the wallet’s whole approval history. Unlimited approvals come first.
| Argument | Type | Description |
|---|---|---|
| wallet* | string | Wallet address on Robinhood Chain. |
{
"type": "object",
"title": "stock_approvalsArguments",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"title": "Wallet",
"description": "Wallet address on Robinhood Chain."
}
}
}Today’s movers among stock tokens on Robinhood Chain, ranked by the pool’s 24h change. tradeable_only keeps the ones you can buy now.
| Argument | Type | Description |
|---|---|---|
| by | any | Only change works here: the pool’s 24h change. It is the default. |
| top | integer | How many to return, from 1 to 50. 10 by default. |
| tradeable_only | boolean | true keeps only stock tokens with a buy route right now (tradeable: true in stock_quote). Default: false. |
{
"type": "object",
"title": "stock_moversArguments",
"properties": {
"by": {
"anyOf": [
{
"enum": [
"mint_burn",
"range",
"change"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "By",
"default": null,
"description": "Only change works here: the pool’s 24h change. It is the default."
},
"top": {
"type": "integer",
"title": "Top",
"default": 10,
"description": "How many to return, from 1 to 50. 10 by default."
},
"tradeable_only": {
"type": "boolean",
"title": "Tradeable Only",
"default": false,
"description": "true keeps only stock tokens with a buy route right now (tradeable: true in stock_quote). Default: false."
}
}
}The stock tokens and ETFs a wallet holds on Robinhood Chain, with amounts and value in dollars, plus its ETH.
| Argument | Type | Description |
|---|---|---|
| wallet* | string | Wallet address on Robinhood Chain. |
{
"type": "object",
"title": "stock_portfolioArguments",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"title": "Wallet",
"description": "Wallet address on Robinhood Chain."
}
}
}Quote stock tokens and ETFs on Robinhood Chain by ticker (NVDA, TSLA, SPY…) or token address, one or up to 20 at once. Returns the pool price, 24h change and pool depth where a pool exists.
| Argument | Type | Description |
|---|---|---|
| ticker | string | Ticker of a stock token or ETF, like NVDA. A token address works too. |
| tickers | any | Up to 20 tickers or token addresses to quote at once, like ["NVDA", "CRM"]. Use instead of ticker. |
{
"type": "object",
"title": "stock_quoteArguments",
"properties": {
"ticker": {
"type": "string",
"title": "Ticker",
"default": "",
"description": "Ticker of a stock token or ETF, like NVDA. A token address works too."
},
"tickers": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Tickers",
"default": null,
"description": "Up to 20 tickers or token addresses to quote at once, like [\"NVDA\", \"CRM\"]. Use instead of ticker."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.
| slippage_pct | number | Price tolerance in percent: 1 by default, from 0.1 to 10. |
{
"type": "object",
"title": "build_tradeArguments",
"required": [
"token",
"side",
"wallet"
],
"properties": {
"eth": {
"type": "number",
"title": "Eth",
"default": 0,
"description": "ETH to spend on a buy, up to 10."
},
"pct": {
"type": "number",
"title": "Pct",
"default": 0,
"description": "Share of the holding to sell, above 0 and up to 100."
},
"usd": {
"type": "number",
"title": "Usd",
"default": 0,
"description": "Dollars of ETH to spend, at the current ETH price."
},
"side": {
"enum": [
"buy",
"sell"
],
"type": "string",
"title": "Side",
"description": "buy or sell."
},
"token": {
"type": "string",
"title": "Token",
"description": "Ticker, like TSLA, or the token address."
},
"wallet": {
"type": "string",
"title": "Wallet",
"description": "The wallet that signs and sends. The route is quoted for it."
},
"slippage_pct": {
"type": "number",
"title": "Slippage Pct",
"default": 1,
"description": "Price tolerance in percent: 1 by default, from 0.1 to 10."
}
}
}| price_usd* | number | The price in dollars that starts the buy, like 160. |
{
"type": "object",
"title": "buy_at_priceArguments",
"required": [
"token",
"wallet",
"trigger",
"price_usd"
],
"properties": {
"eth": {
"type": "number",
"title": "Eth",
"default": 0,
"description": "ETH to spend on the buy. Give usd or eth, not both."
},
"usd": {
"type": "number",
"title": "Usd",
"default": 0,
"description": "Dollars of ETH to spend on the buy, at the ETH price when it is prepared. Up to 500."
},
"token": {
"type": "string",
"title": "Token",
"description": "Ticker, like NVDA, or the token address."
},
"repeat": {
"type": "boolean",
"title": "Repeat",
"default": false,
"description": "true waits for the price again after each buy. Default: false, one buy."
},
"wallet": {
"type": "string",
"title": "Wallet",
"description": "The wallet that buys and signs. Its owner confirms the plan at https://keyfo.xyz/app."
},
"trigger": {
"type": "string",
"title": "Trigger",
"description": "below or above: buy when the pool price drops below or rises above price_usd."
},
"price_usd": {
"type": "number",
"title": "Price Usd",
"description": "The price in dollars that starts the buy, like 160."
}
}
}{
"type": "object",
"title": "fund_agentArguments",
"required": [
"wallet",
"payer",
"origin_chain",
"amount"
],
"properties": {
"payer": {
"type": "string",
"title": "Payer",
"description": "Wallet that pays on the origin network and signs there. It must hold the funds there, so it is usually not the agent wallet: ask the user for it, do not copy `wallet`."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"title": "Amount",
"description": "Amount in the smallest unit of what you pay with, like wei for ETH."
},
"wallet": {
"type": "string",
"title": "Wallet",
"description": "Agent wallet on Robinhood Chain that receives the ETH."
},
"currency": {
"type": "string",
"title": "Currency",
"default": "",
"description": "Token address to pay with on the origin network. Empty pays in its native coin."
},
"origin_chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"title": "Origin Chain",
"description": "Network to pay from: a name, like base, or its chain ID, like 8453."
}
}
}{
"type": "object",
"title": "schedule_buyArguments",
"required": [
"token",
"wallet",
"weekday",
"hour"
],
"properties": {
"tz": {
"type": "string",
"title": "Tz",
"default": "UTC",
"description": "IANA time zone, like Europe/Kyiv or America/New_York. UTC by default."
},
"eth": {
"type": "number",
"title": "Eth",
"default": 0,
"description": "ETH to spend on each buy. Give usd or eth, not both."
},
"usd": {
"type": "number",
"title": "Usd",
"default": 0,
"description": "Dollars of ETH to spend on each buy, at the ETH price at that time. Up to 500."
},
"hour": {
"type": "integer",
"title": "Hour",
"description": "Hour of the day in tz, from 0 to 23."
},
"token": {
"type": "string",
"title": "Token",
"description": "Ticker, like NVDA, or the token address."
},
"wallet": {
"type": "string",
"title": "Wallet",
"description": "The wallet that buys and signs. Its owner confirms the plan at https://keyfo.xyz/app."
},
"weekday": {
"type": "string",
"title": "Weekday",
"description": "Day of the week: monday to sunday."
}
}
}