DocsCreate an agent
Start in My agents
Open the agent builder and describe the job. The builder asks questions and proposes instructions, a model, toolkits, skills and, when useful, routines. You choose which proposed toolkits to add.
Create the agent
Save its definition. At this point it has a name and instructions, but it is not running anywhere yet.
Install it into a project
Choose a project for a running copy. Set up the toolkits and credentials it needs there, then choose which actions the project allows.
Chat or schedule work
Chat with the installed agent in Toolspoke. A routine with a schedule can start a run on its own; you can pause it for an individual project.
Review and refine
Open the project copy to see runs, usage and memories. Review tool calls in the activity log, then edit the agent or its project access as needed.
Where the boundaries are
An agent definition carries its instructions, model, toolkits, skills and routines. A project copy holds its conversations, runs and memories. Installing it does not give it every action in a toolkit: the project's action policy still applies.
Bring your own agent
You can also connect Claude, Cursor, Codex or another MCP client to Toolspoke's gateway. That client runs outside Toolspoke and uses the same project toolkits and controls. See Connect your agent for the MCP setup.
Artifacts from runs
During a run, an agent can call create_artifact to save an HTML page, Markdown document, CSV, JSON, plain text or PDF. The tool returns a signed link that the agent can send through a connected app. The artifact also appears on the run card. Anyone with the link can open it for 30 days, and a project member can revoke it from the run card.
Each run may create up to ten artifacts of 1 MiB each. HTML can use inline styles and data images; JavaScript inside the shared HTML and external network requests are blocked. Keep credentials and information the recipient should not see out of shared artifacts.
Reuse a report script
A saved agent script can fetch and process data with callTool, build the finished page, and call create_artifact inside an active run. Only the script's small input and its returned link reach the agent; source data and page content stay inside the script and gateway. The finished page still has the 1 MiB limit.
const records = await callTool("crm__list_records", { since: args.since });
const rows = records.items.map(item =>
"<li>" + String(item.name).replaceAll("&", "&").replaceAll("<", "<") + "</li>"
).join("");
const report = await callTool("create_artifact", {
name: "weekly-report.html", format: "html",
content: "<h1>Weekly report</h1><ul>" + rows + "</ul>"
});
return report.url;