Install
openclaw skills install @peakflo/peakflo-spacesConnect OpenClaw to Spaces by Peakflo, a hosted MCP server for finance and ops work. Hand off one-off or recurring tasks to cloud agents or people, and query workflows, data tables, reports, policy documents and approvals. Sign in with OAuth; no API keys.
openclaw skills install @peakflo/peakflo-spacesSpaces by Peakflo is a hosted (remote) MCP server for finance and operations teams. Use it to:
task_create).Server facts:
https://api.peakflo.ai/mcptransport is omitted.If no Spaces tools are available in this session (no peakflo__… tools), the peakflo server is not set up yet. Give the user the commands below. The user runs them in their own terminal on the Gateway host. Don't run them yourself: openclaw gateway stop would stop the Gateway that is running this session, and sign-in needs the user's browser.
openclaw mcp add peakflo \
--url https://api.peakflo.ai/mcp \
--transport streamable-http \
--auth oauth
# Stop the Gateway during sign-in. Sign-in still needs network access and a browser.
# The ";" makes sure the Gateway starts again even if sign-in fails or is cancelled.
openclaw gateway stop; openclaw mcp login peakflo; openclaw gateway start
openclaw mcp doctor peakflo --probe
The same definition as config (mcp.servers in openclaw.json):
{
mcp: {
servers: {
peakflo: {
url: "https://api.peakflo.ai/mcp",
transport: "streamable-http",
auth: "oauth"
}
}
}
}
openclaw mcp login peakflo prints an authorization URL. The user opens it, signs up or signs in, picks a workspace and clicks Allow access. OpenClaw catches the loopback redirect and saves the credentials. If the browser cannot reach the callback, use the printed openclaw mcp login peakflo --code <code> command.doctor --probe should report the server as ok and list its tools. A warning such as "OAuth credentials are not authorized" means the login step has not finished yet.peakflo__<tool>. In this skill, a bare tool name refers to that tool: task_create means peakflo__task_create, workflow_execute means peakflo__workflow_execute, and so on. The safety rules below apply to the prefixed names too.Never ask the user for a password, API key, token or authorization code in chat. Sign-in always happens in the browser.
task_createUse it when the user wants something done rather than answered: "have someone…", "every Monday…", "hand this off…", "collect…", "follow up with…".
title: short and specific.description: clear instructions, with everything the assignee needs to do the work.schedule (optional): { "cron": "0 9 * * 1", "timezone": "Asia/Singapore" }. The timezone is an IANA name and defaults to UTC.assignee (optional): { "kind": "user", "id": "<uuid>" } for a person, with the ID taken from users_list. Use { "kind": "agent", "id": "<uuid>" } only when the user gives you a Spaces agent ID. No tool in this skill lists agents. Never guess an ID, and never put a user ID under kind: "agent".clientRequestId: generate one per intended task and reuse it if you retry, so a retry does not create a duplicate.Routing:
users_list and set them as assignee. If you can't tell who it should be, ask. Don't leave the assignee empty.Confirm before you create a task. task_create is a write: it notifies people, and a recurring task uses credits every time it runs. Show the user the title, the assignee (or "triage" for a one-off), and the schedule in plain words (for example "every Monday at 09:00 Asia/Singapore"). Create the task only after they say yes.
After the call, give the user the task link from the result. Say the task is queued or scheduled. Never say the work is done.
Examples:
users_list to find the finance person (ask the user if it's unclear), confirm, then task_create with schedule: { cron: "0 9 * * 1", timezone: "Asia/Singapore" } and assignee: { kind: "user", id: "<that person's ID>" }.task_create with schedule and no assignee. A recurring task with no assignee goes to the requesting user.task_create with no assignee, which goes through triage.Look up the answer before you reply. Don't answer from memory.
| Question | Tools |
|---|---|
| Workflows, automations and their runs | workflow_list, workflow_get, workflow_execution_list, workflow_execution_get_steps |
| Bills, invoices, payables, receivables, spend | report_schema → report_schema_detail → report_query |
| Custom data | table_list → table_schema → table_query or table_sql (read-only SQL) |
| Policies and reference documents | datastore_list → datastore_query |
| Pending approvals and human tasks | task_list |
| Connected apps (accounting, ERP, email) | integrations_list → integration_mcp_tools_list |
table_list) before you say there is no data.Examples: "Which of my workflows failed last week?", "Show unpaid and overdue bills by vendor.", "What does our expense policy say about client dinners?"
task_create), run a workflow (workflow_execute), complete an approval (task_complete), call a connected-app tool that changes data (integration_mcp_tool_call), or change or delete table data, show the user exactly what you will do and wait for a yes.openclaw mcp logout peakflo, or revoke access in app.peakflo.ai → Settings → MCP → Connected apps.