approve_tool_call
ChatGPTApprove a Siesta agent's tool call that is waiting for a human decision, letting the agent continue. Find the blocked call in get_conversation's toolCalls, where approvalRequired is true, and pass its messageId. State what the call will do — its toolTitle and pendingArguments are on that same entry — in the same reply that calls this tool. Do NOT ask a separate yes/no question first: the client puts its own confirmation to the user, so asking beforehand makes them answer twice. A call that has already been decided returns an error naming its current state, and is never decided twice. The response's nextAction says whether the conversation is now finished or still needs something.
create_agent
ChatGPTCreate a NEW agent (chatbot). Use this only to make a brand-new agent — to change an agent that already exists, call update_agent with its id (from list_agents) instead of creating another one. Only name and systemMessage are essential — the system message is the agent's core instructions and is usually authored by you. Model and connection are optional (a sensible default is chosen when omitted). Attach skills, sub-agents, tools (connections) and system tools by id or name; discover them via list_skills / list_agents / list_connections / list_system_tools.
create_graph_edge
ChatGPTCreate a relationship between existing nodes. Resolve both node ids first. The edge id is generated by the server.
create_graph_node
ChatGPTCreate a node after search_graph_nodes found no matching entity. The node id is generated by the server.
create_memory_collection
ChatGPTCreate a NEW, empty memory collection. Only do this when no existing collection fits — check list_memory_collections first. Add pages to it with create_memory_page, then attach it to an agent with create_agent/update_agent's memoryCollections.
create_memory_page
ChatGPTCreate a NEW page in a memory collection — this is how you write memory content. The body is the text the agent will read, usually authored by you. To change a page that already exists, call update_memory_page with its id instead of creating a second one. Pass parentPageId to nest it under another page; omit it for a top-level page. The page is appended after its siblings.
create_skill
ChatGPTCreate a new skill from a name, instructions and (optionally) bound functions. The name and instructions are usually authored by you to describe what the skill does. To bind functions, first call list_skill_functions and pass the functionIds here.
create_workflow
ChatGPTCreate a workflow from a full graph of nodes and edges in one call. Each node has a caller-chosen key; edges connect nodes by key; a node's inputs reference upstream nodes as {{otherKey.outputField}}. Node positions are laid out automatically. The graph must be acyclic; error edges must target an errorHandler node. Call describe_node_types first (and list_workflow_functions to pick any tool-node functions). INPUT ROUTING: an on-demand run's input (from run_workflow) is delivered to the ENTRY node — the single node with no incoming edge. If that node has an input mapping, the mapping is used and the raw input is IGNORED; if it has no mapping, the raw input becomes the node's input. To pass a payload that downstream nodes reference as {{key.Payload}}, make the entry node a Webhook node (its output is 'Payload'). The simplest testable workflow is an Assistant entry node with no input mapping — it just receives the raw input as its prompt. Schedule trigger nodes take no input.
delete_graph_edge
ChatGPTDelete a relationship using its current version for optimistic concurrency.
delete_graph_node
ChatGPTDelete a node using its current version for optimistic concurrency.
describe_node_types
ChatGPTDiscover the workflow building blocks for this organization: the structural node types (assistant, iterator, aggregator, webhook, schedule, recording, errorHandler, taskCreated, createTask, updateTask) with their input/output property names and how many targets each can select (find agents with list_agents), plus the list of tool-function providers with counts. Tool functions themselves are numerous and are NOT returned here — search them with list_workflow_functions. Call this before create_workflow.
get_agent
ChatGPTRead an agent's full configuration (system message, model, connection, skills, sub-agents, tools) so you can see how it is set up before updating it. Get the agentId from list_agents.
get_conversation
ChatGPTRead a Siesta agent conversation's message history plus a lightweight summary of what the agent did (tool calls, attachments, artifacts, sub-agent delegations, reasoning count) — useful for resuming a chat or analysing an agent's behaviour to improve it. Returns the most recent messages by default (a long conversation can be large); totalMessageCount tells you how many exist, and offset pages further back. Heavy detail is fetched on demand: get_tool_call_result (a tool's full args/result), get_conversation_reasoning (chain-of-thought), get_sub_agent_conversation (a sub-agent's messages). Get the conversationId from list_conversations.
get_conversation_reasoning
ChatGPTPeek at a Siesta agent's own reasoning (chain-of-thought) for one of its conversations — to understand WHY it made its choices and design better agents. Reasoning is verbose, so this is opt-in and paged: pass a search to jump straight to the relevant part instead of pulling it all. Get the conversationId from list_conversations (get_conversation's reasoningItemCount tells you whether there's any).
get_graph_edge
ChatGPTGet one relationship and its current version from a graph.
get_graph_neighborhood
ChatGPTGet one page of direct relationships around a node. Follow every continuation token when all relationships are needed.
get_graph_node
ChatGPTGet one node and its current version from a graph.
get_graph_schema
ChatGPTGet observed node types, edge types, and endpoints. Use Properties or Full detail to include property keys.
get_graph_subgraph
ChatGPTGet the connected subgraph up to three hops from a node in both relationship directions.
get_memory_collection
ChatGPTRead a memory collection and its page hierarchy (page ids, names and nesting, without the page bodies). Call this to see how a collection is organised before adding or editing pages; read a page's body with get_memory_page. Very large hierarchies are cut off — when truncated is true, find the pages you need with list_memory_pages and a search instead. Get the memoryCollectionId from list_memory_collections.
get_memory_page
ChatGPTRead one memory page including its full body. Get the memoryPageId from get_memory_collection or list_memory_pages.
get_skill
ChatGPTRead a skill's full detail — its instructions and bound functions — so you can see what it does before updating it. Get the skillId from list_skills.
get_sub_agent_conversation
ChatGPTRead the messages a Siesta SUB-AGENT produced when the main Siesta agent delegated to it — to see what the sub-agent did. Returns the most recent messages (paged like get_conversation). Get the conversationId and subConversationId from get_conversation's subAgentCalls.
get_tool_call_result
ChatGPTFetch the full detail — arguments and result — of ONE tool call a Siesta agent made during one of its own conversations. Results can be large (a fetched email, web page, DB rows), so they are NOT included in get_conversation; pull them here only when you need them. The value is capped if huge. Get the conversationId and callId from get_conversation's toolCalls.
get_workflow
ChatGPTRead a workflow's full graph — nodes (with their ids, types and input mappings) and edges. To edit a node via update_workflow, pass its id here as the node Key. Get the workflowId from list_workflows.
get_workflow_run
ChatGPTRead a single workflow run's node-by-node results — for each node that executed: its status, its output, and on failure the error message plus the input that broke it. Assistant nodes include a conversationId you can read with get_conversation. Use this to debug why a run failed and then fix the graph with update_workflow. Get the workflowId from list_workflows and the runId from list_workflow_runs.
list_agents
ChatGPTList the agents (chatbots) available in the current organization. Use this first to discover an agent's id before messaging it.
list_connections
ChatGPTList the connections (integrations) available to use as an agent's model provider or as a tool. Use this to find the connectionId/name to pass to create_agent (model provider) or as a tool. LLM/model-serving connections are the ones list_models returns models for. An organization can have many connections, so pass a search to narrow to the ones you need.
list_conversations
ChatGPTList existing conversations between users and Siesta agents (newest first), most useful for finding a conversation to resume. This reads Siesta's own conversation store — not the calling client's chat history. Optionally filter by agent or by search text over the conversation title, and page with offset.
list_data_source_collections
ChatGPTList the data-source collections (RAG knowledge bases) available in the organization. Pass the returned ids or names to create_agent/update_agent's dataSourceCollections to attach them so the agent can retrieve from them. (Creating collections/uploading documents is not done here — this only lists existing collections to attach.)
list_graphs
ChatGPTList knowledge graphs available to the current user. Use this to find a graphId and verify whether it can be edited.
list_memory_collections
ChatGPTList the memory collections in the current organization. A memory collection is a tree of memory pages (long-lived notes/knowledge an agent can read and, when memory write is enabled, edit). Use this to find a memoryCollectionId before reading or writing pages, or before attaching memory to an agent with create_agent/update_agent.
list_memory_pages
ChatGPTList the pages of one memory collection as a flat list (id, name, parent, order — no bodies). Pass a search to narrow a large collection. Use get_memory_collection instead when you want the nesting, and get_memory_page to read a page's body.
list_models
ChatGPTList the LLM models available for an agent. Optionally pass a connection (id or name) to only list models that connection supports. Pass the returned model name to create_agent.
list_skill_functions
ChatGPTList the tool functions that can be bound to a skill, with the ids to pass back in create_skill/update_skill. Call this first when building a skill's functions. Each item's functionId (plus connectionId only if the same function appears more than once) is what you put in the skill's functions list. ALWAYS pass a search — there can be hundreds of functions, and an unfiltered call returns a large list (only the first page is returned; page with limit/offset if you really need more).
list_skills
ChatGPTList the skills available in the current organization. A skill is a named set of instructions plus bound tool functions that can be attached to agents. Use this to find a skill's id before reading or updating it.
list_system_tools
ChatGPTList the built-in system tools (e.g. web grounding, scraping) that can be enabled on an agent. Pass the returned ids to create_agent/update_agent's systemTools.
list_workflow_functions
ChatGPTSearch the tool functions that can back a workflow 'tool' node. Filter by provider name (e.g. "Gmail") or by what the function does (e.g. "send email"); returns the functionId to pass as a tool node's function, its input/output property names, and the connections it can run through. Always pass a search — there can be thousands of functions.
list_workflow_runs
ChatGPTList recent runs of a workflow (newest first), each with its overall status and node count — use this to find a run to inspect after run_workflow, or to review run history. Get the runId from here and pass it to get_workflow_run for node-by-node detail.
list_workflows
ChatGPTList the workflows in the current organization. Use this to find a workflow's id before reading or updating it.
move_memory_page
ChatGPTMove a memory page to a different parent and/or position in its collection's tree. Moving a page takes its whole subtree with it. Omit parentPageId to move the page to the top level. Returns the collection's page hierarchy after the move.
reject_tool_call
ChatGPTReject a Siesta agent's tool call that is waiting for a human decision, so the agent continues without running it. Find the blocked call in get_conversation's toolCalls, where approvalRequired is true, and pass its messageId. State its toolTitle and pendingArguments in the same reply that calls this tool, rather than asking a separate question first. A call that has already been decided returns an error naming its current state, and is never decided twice.
run_workflow
ChatGPTTrigger a manual (on-demand) run of a workflow to test it. The workflow must be active (set isActive on create/update first). Runs are processed asynchronously: this queues the run and returns immediately — it does NOT return the run id or wait for it to finish. To reliably find the run you just started: (1) BEFORE calling this, call list_workflow_runs and note the newest runId; (2) call run_workflow; (3) poll list_workflow_runs (newest first) — the first run at the top whose id is NOT the one you noted is your run. If no new run has appeared yet, wait ~1s and poll again; give up after a few tries. Then call get_workflow_run with that runId for node-by-node results once it has completed.
search_graph_nodes
ChatGPTSearch nodes in one graph. Always use this before creating a node so an existing entity can be reused instead of duplicated.
send_message
ChatGPTSend a message to a Siesta agent and get its reply. To start a new conversation, pass agentId (get it from list_agents). To continue an existing conversation instead, pass conversationId (from a previous send_message or from list_conversations) and the same agent will keep the context. Pass exactly one of agentId or conversationId. If the agent fails to answer (e.g. a misconfigured model), this returns an error explaining why — it does NOT return an empty success. The response's status tells you whether the reply is final (Finished) or still needs client tool results / an approval.
update_agent
ChatGPTUpdate an EXISTING agent in place (this is how you modify an agent you already created — do NOT create a new one). Only the fields you pass are changed — every other setting is preserved. For list fields (skills, subAgents, tools, systemTools) passing a value REPLACES that whole set; omit it to keep the current set. Get the agentId from list_agents.
update_graph_edge
ChatGPTReplace a relationship using its current version for optimistic concurrency. Read the edge first when its version is unknown.
update_graph_node
ChatGPTReplace a node using its current version for optimistic concurrency. Read the node first when its version is unknown.
update_memory_collection
ChatGPTRename an existing memory collection. To change what the memory says, edit its pages with update_memory_page instead.
update_memory_page
ChatGPTUpdate an EXISTING memory page in place (this is how you edit memory — do NOT create a duplicate page). Only the fields you pass are changed; body REPLACES the whole page body, so read the page first with get_memory_page when you mean to append to it. To move a page in the tree use move_memory_page.
update_skill
ChatGPTUpdate an existing skill. Only the fields you pass are changed — omit a field to keep its current value. Passing functions replaces the whole bound-functions set; omit it to keep the current functions. Get the skillId from list_skills.
update_workflow
ChatGPTReplace a workflow's graph. Pass the FULL set of nodes and edges you want the workflow to have (typically start from get_workflow, keeping each node's id as its Key so it is preserved; new keys create new nodes, omitted nodes are removed). Name/description/active default to their current values when omitted. IMPORTANT: a node that has already produced a run CANNOT be removed or re-keyed — dropping it throws 'Cannot delete workflow nodes that already have runs' (this preserves run history). So to change a workflow that has already been run, ALWAYS start from get_workflow and keep each existing node's id as its Key (edit in place); you may still add new nodes and edges.