{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_2kgmqmcfgvpt","handle":"cloud-for-bots","url":"https://wellknown.network/agents/cloud-for-bots","links":{"self":"https://wellknown.network/agents/cloud-for-bots/record.json","html":"https://wellknown.network/agents/cloud-for-bots","markdown":"https://wellknown.network/agents/cloud-for-bots/record.md","api":"https://wellknown.network/api/v1/agents/cloud-for-bots","status":"https://wellknown.network/api/v1/agents/cloud-for-bots/status","claim":"https://wellknown.network/agents/cloud-for-bots/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/cloud-for-bots/claim.json","badge":"https://wellknown.network/agents/cloud-for-bots/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/cloud-for-bots/history","tools":"https://wellknown.network/api/v1/agents/cloud-for-bots/tools"},"ard":{"identifier":"urn:air:cloudforbots.com:server:cloud-for-bots","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Cloud for Bots","summary":"Sandboxes, storage, secrets, queues, timers, locks, inboxes and run ledger for AI bots. One MCP.","description":"Sandboxes, storage, secrets, queues, timers, locks, inboxes and run ledger for AI bots. One MCP.","publisher":{"name":"com.botrecipe","url":null},"homepage":"https://cloudforbots.com","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://cloudforbots.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-16T14:49:22.994142Z","publishedAt":"2026-10-16T14:49:22.994142Z","registryName":"com.botrecipe/cloudforbots"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"infra.browser-automation","name":"Browser Automation","confidence":1,"provenance":"derived"},{"slug":"security.secrets","name":"Secrets Management","confidence":1,"provenance":"derived"},{"slug":"automation.scheduling","name":"Scheduling & Cron","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":0.977,"provenance":"derived"},{"slug":"code.execution","name":"Code Execution","confidence":0.911,"provenance":"derived"},{"slug":"finance.accounting","name":"Accounting","confidence":0.885,"provenance":"derived"},{"slug":"productivity.email","name":"Email","confidence":0.859,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.525,"provenance":"derived"}],"categories":["automation","code","commerce","communication","finance","infra","productivity","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-23T18:26:34.333Z","lastProbedAt":"2026-10-23T18:26:34.333Z","statusComputedAt":"2026-10-23T18:31:28.548Z","reliability30d":{"probes":21,"successRate":1,"p50Ms":219,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":21,"ok":21,"authBoundaryOk":0,"serviceOk":21,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-23T18:26:34.333Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":228,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T11:24:28.736Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":216,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T04:26:23.776Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":205,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T21:31:35.095Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":209,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T15:31:03.460Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":206,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T08:28:30.014Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":212,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T02:32:39.108Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":222,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T20:29:37.635Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":207,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T11:27:01.079Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":236,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T02:28:53.234Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":224,"error":null,"detail":{"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"toolCount":48,"toolsHash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","serverName":"cloud-for-bots","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"loop_check_step","description":"[loop-breaker] Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args "},{"name":"loop_loop_status","description":"[loop-breaker] Show a run's loops so far, whether it is halted, and its last 10 steps."},{"name":"loop_weekly_report","description":"[loop-breaker] Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only"},{"name":"loop_usage_and_upgrade","description":"[loop-breaker] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"memory_save_checkpoint","description":"[run-memory] Call after each completed step with the state you would need to continue (cursor, ids done, partial results; up to 256 KB JSON). Pro saves it (last"},{"name":"memory_resume","description":"[run-memory] Call FIRST when a run starts. If a checkpoint exists for run_id (Pro), returns the last step, state and done list: continue from there and skip fin"},{"name":"memory_list_checkpoints","description":"[run-memory] List recent checkpoints (step, size, time) for one run or all runs on your key."},{"name":"memory_weekly_report","description":"[run-memory] Draft a plain-English report of the last 7 days: runs, checkpoints saved (Pro) or that would have been saved (free). Read-only; sends nothing."},{"name":"memory_usage_and_upgrade","description":"[run-memory] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"budget_open_budget","description":"[budget-guard] Open a hard budget for one agent run before it starts: max dollars, tokens, calls and/or wall-clock seconds. Returns a handle. Give the handle to"},{"name":"budget_reserve","description":"[budget-guard] Call BEFORE each model call, tool call or sub-agent spawn with your estimate. Returns allowed=true and deducts it, or allowed=false with the limi"},{"name":"budget_record","description":"[budget-guard] After a call, report the actual usage minus what you reserved (positive if it cost more, negative to give back an overestimate). Keeps the ledger"},{"name":"budget_weekly_report","description":"[budget-guard] Draft a plain-English report of the last 7 days for your key (or IP): runs, spend, runs that went over their cap, and dollars spent after a cap w"},{"name":"budget_budget_status","description":"[budget-guard] See spend vs limits, remaining budget, whether the run is stopped and why, and the last 20 ledger events. Set close=true when the run finishes."},{"name":"budget_usage_and_upgrade","description":"[budget-guard] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered."},{"name":"approve_check_action","description":"[approval-rules] Before a consequential action, ask whether the user's rules auto-approve it. Returns auto_approve, needs_approval (with a plain-English approva"},{"name":"approve_get_decision","description":"[approval-rules] Check whether the user approved or rejected an approval card (by card_id and card_token). Only act when status is approved."},{"name":"approve_set_rules","description":"[approval-rules] Save the user's rules (needs an API key so they stay yours). Each rule: {name, when:{type:[...], max_usd, min_usd, reversible, target_ends_with"},{"name":"approve_get_rules","description":"[approval-rules] Show the rules in effect for your key (or the default starter rules)."},{"name":"approve_weekly_report","description":"[approval-rules] Draft a plain-English report of the last 7 days: actions checked, how many your rules would auto-approve, how many needed you, top kinds of ask"},{"name":"approve_usage_and_upgrade","description":"[approval-rules] Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 200 calls/day. Not metered"},{"name":"wake_schedule_wake","description":"[agent-wake] Schedule a wake-up for your agent. At the time you pick, Agent Wake POSTs your saved state (notes, thread ID, next step) to your callback URL, or h"},{"name":"wake_check_wakes","description":"[agent-wake] Collect wake-ups that are due for your inbox (each returned once, with its saved state and thread ID) and list upcoming ones. Call this at the star"},{"name":"wake_cancel_wake","description":"[agent-wake] Cancel a pending wake-up by wake_id. Call once without confirm to preview, then with confirm=true."},{"name":"wake_usage_and_upgrade","description":"[agent-wake] Show today's usage for your key or IP and the $49/month All Access upgrade link. Free tier: 50 calls/day. Not metered."},{"name":"library_search","description":"[bot-library] Find bot recipes other bots published, ranked by real installs and reported success. Args: q?, limit? (max 50). No key needed."},{"name":"library_get","description":"[bot-library] Read one library entry (recipe, tools, version, signature, install and success counts). Args: slug."},{"name":"library_install","description":"[bot-library] Clone a library bot into this bot: returns the recipe steps, tools, prompt and memory_seed to run now. Counts one install per account. Args: slug."},{"name":"library_publish","description":"[bot-library] Publish or update (new version) a reusable bot recipe. The publishing key owns and signs it. Blocked automatically if it contains keys, tokens, em"},{"name":"library_rate","description":"[bot-library] After running an installed recipe, report whether it worked. This is what ranks the library. Args: slug, ok (boolean)."},{"name":"library_report","description":"[bot-library] Report a broken, unsafe or spammy entry. 3 reports from different accounts pause it automatically. Args: slug, reason."},{"name":"vault","description":"[login-vault] Sign-in sessions without the bot seeing passwords. Actions: put, list, delete, login, fetch, end, watch (free watch-only)."},{"name":"handoff","description":"[human-handoff] Bot hits captcha/2FA; a person gets a one-tap link; bot polls and continues. Actions: create, status, cancel, list. Free keys are watch-only."},{"name":"replay","description":"[run-replay] Timeline of a run: steps, loops, checkpoints, spend, stop point. Pass run_id; omit to list recent runs. Set ui=openui for a live card."},{"name":"secrets","description":"[bot-secrets] Store API keys and tokens once; your bot never sees them again. Actions: set (name in UPPER_SNAKE_CASE, value, allowed_hosts like [\"api.openai.com"},{"name":"fetch","description":"[bot-secrets] Call any https API with your stored secrets filled in on our side: put {{secret:NAME}} in url, headers or body. Only sent to the secret's allowed "},{"name":"queue","description":"[bot-queue] Durable job queues for bots. Actions: push (queue, message or messages[], delay_s?, max_attempts?), pull (queue, max<=10, visibility_s?), ack (ids),"},{"name":"cron","description":"[bot-cron] Run something on a schedule, even when your bot is offline. Actions: set (name, schedule like \"*/5 * * * *\" or \"@hourly\" in UTC, request: {url, metho"},{"name":"browser","description":"[bot-browser] A real headless Chrome per named session that pauses instead of dying: logins, cookies and tabs survive between calls and across days. Actions: op"},{"name":"lock","description":"[bot-coord] Named locks (leases) shared by every bot on your account, e.g. browser.lock. Actions: acquire (name, holder?, ttl_s? default 60, wait_s? up to 25), "},{"name":"rate","description":"[bot-coord] Shared rate counters across all your bots, e.g. \"6 posts per 6h across all lanes\". Actions: take (name, limit like \"6/6h\", n?) -> allowed, remaining"},{"name":"inbox","description":"[bot-inbox] Give a bot its own public webhook URL. Actions: create (name) -> url (POST anything there: webhooks, forms, other bots); list; delete. Events land i"},{"name":"topic","description":"[bot-bus] Agent-to-agent message bus. Actions: subscribe (topic, queue), unsubscribe, publish (topic, message or messages, from?), list. publish copies each mes"},{"name":"ai","description":"[bot-ai] Model gateway: call Grok, Claude or GPT with one cloudforbots key. Bring your own provider key, stored first in Secrets (XAI_API_KEY / ANTHROPIC_API_KE"},{"name":"ledger","description":"[bot-ledger] Run ledger and cost view across all your bots. Actions: record (bot, status ok|failed|running|skipped, run_id?, kind?, usd?, tokens_in?, tokens_out"},{"name":"sandbox","description":"[bot-sandbox] A named Linux sandbox (Python, Node, shell, internet) that pauses instead of dying: files, installed packages and running processes survive betwee"},{"name":"store","description":"[bot-storage] Durable key-value + file storage for your bot, shared by every key on your account. Survives sandbox restarts. Actions: get, set (value: any JSON,"},{"name":"report","description":"[daily-report] Opt-in daily owner summary (loops stopped, spend blocked, approvals waiting). Actions: subscribe, unsubscribe, preview."}],"package":null,"toolSurface":{"id":"ts_jxavcrgpem5b","endpointId":"ep_67rf7gyypwtr","hash":"d9befd57c12fbe9afc1f9dbe944d77a3b01e028ddfa9860ec71ed2323b5a6c2c","toolCount":48,"serverName":"cloud-for-bots","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-18T02:25:43.707Z","lastSeenAt":"2026-10-23T18:26:34.342Z","observations":21,"toolNames":["loop_check_step","loop_loop_status","loop_weekly_report","loop_usage_and_upgrade","memory_save_checkpoint","memory_resume","memory_list_checkpoints","memory_weekly_report","memory_usage_and_upgrade","budget_open_budget","budget_reserve","budget_record","budget_weekly_report","budget_budget_status","budget_usage_and_upgrade","approve_check_action","approve_get_decision","approve_set_rules","approve_get_rules","approve_weekly_report","approve_usage_and_upgrade","wake_schedule_wake","wake_check_wakes","wake_cancel_wake","wake_usage_and_upgrade","library_search","library_get","library_install","library_publish","library_rate","library_report","vault","handoff","replay","secrets","fetch","queue","cron","browser","lock","rate","inbox","topic","ai","ledger","sandbox","store","report"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_67rf7gyypwtr","url":"https://cloudforbots.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-22T15:31:03.501Z","auth":{"observedAt":"2026-10-22T15:31:03.517Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-22T15:31:03.545Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"cloudforbots.com","issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validFrom":"2026-10-15T15:10:54.000Z","validTo":"2027-01-13T15:10:53.000Z","daysToExpiry":81,"sanCount":1,"fingerprint256":"36:50:25:95:85:88:5E:32:36:66:65:70:B9:F1:C9:B8:C0:0D:E4:11:0D:E4:29:B9:EC:C1:5F:49:B6:FF:9B:07"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.botrecipe/cloudforbots","url":"https://registry.modelcontextprotocol.io/v0/servers/com.botrecipe%2Fcloudforbots","firstSeenAt":"2026-10-18T02:18:49.883Z","fetchedAt":"2026-10-21T12:21:07.091Z","normalizedAt":"2026-10-21T12:21:07.091Z"}]},"firstSeenAt":"2026-10-18T02:18:49.883Z","updatedAt":"2026-10-23T18:34:27.282Z"}