create_edge
ChatGPTAdd a new edge between two nodes. The condition describes when the conversation transitions from source to target node. IMPORTANT: Do not call multiple pathway mutation tools in parallel — they perform read-modify-write and will overwrite each other.
create_memory
ChatGPTCreate a new memory entry for a project
create_node
ChatGPTAdd a new node to the pathway. IMPORTANT: Do not call multiple pathway mutation tools in parallel — they perform read-modify-write and will overwrite each other. Node schema: { id: string, type: "<nodeType>", position: { x: number, y: number }, data: NodeData } NodeData by type: - start: { type: "start", title: string, prompt: string, tools?: string[], variableKeys?: string[] } - prompt: { type: "prompt", title: string, prompt: string, tools?: string[], isGlobalNode?: boolean, globalNodeReason?: string, variableKeys?: string[] } - goto: { type: "goto", title: string, referenceNodeId: string | null }
create_project
ChatGPTCreate a new project with default agent and pathway
create_test_case
ChatGPTCreate a new test case for a project. A test case defines a simulated conversation scenario to evaluate agent behaviour.
create_test_suite
ChatGPTCreate a new test suite for a project. A test suite groups related test cases together for batch execution. Optionally connect existing test cases by providing their IDs.
create_tool
ChatGPTCreate a new tool for a project
delete_edge
ChatGPTDelete an edge from the pathway. IMPORTANT: Do not call multiple pathway mutation tools in parallel — they perform read-modify-write and will overwrite each other.
delete_memory
ChatGPTDelete a memory entry
delete_node
ChatGPTDelete a node and its connected edges from the pathway. IMPORTANT: Do not call multiple pathway mutation tools in parallel — they perform read-modify-write and will overwrite each other.
delete_project
ChatGPTDelete a project (owner only)
delete_test_case
ChatGPTDelete a test case from a project. Removes criteria and disconnects from suites.
delete_test_suite
ChatGPTDelete a test suite from a project. This does not delete the test cases themselves.
delete_tool
ChatGPTDelete a tool from a project
get_agent
ChatGPTGet complete agent data (configuration + pathway) for a project
get_project
ChatGPTGet project details by ID
get_session
ChatGPTGet full session detail including all events (messages, decisions, tool calls, etc.). This is the primary tool for debugging agent behaviour — it returns the complete conversation timeline with serialized messages and decision events. The project is inferred from the session itself; no projectId needed.
get_session_stats
ChatGPTGet session statistics for a project (session counts over time). Useful for observability dashboards.
get_test_case
ChatGPTGet a single test case by ID, including its configuration and acceptance criteria.
get_test_results
ChatGPTGet test results for a test suite, including per-test-case and per-criterion outcomes.
get_test_suite
ChatGPTGet a single test suite by ID, including its connected test case IDs.
get_tool
ChatGPTGet a specific tool configuration
list_memories
ChatGPTList all memories for a project
list_projects
ChatGPTList all projects accessible by the current user
list_sessions
ChatGPTList session histories for a project with pagination and filters. Returns lightweight summaries (no events). Use get_session for full detail. Filters: - page / pageSize: pagination (default 1 / 20) - startDate / endDate: YYYY-MM-DD format - provider: filter by integration type - search: search by session ID - markedOnly: only marked sessions - hasComments: only sessions with comments
list_test_cases
ChatGPTList all test cases for a project. Returns each test case with its configuration and acceptance criteria.
list_test_suites
ChatGPTList all test suites for a project. Returns each suite with its id, name, timestamps, and the IDs of connected test cases.
list_tool_types
ChatGPTList available tool types that can be created
list_tools
ChatGPTList all tools configured for a project
run_test_suite
ChatGPTRun all test cases in a test suite. Returns immediately with RUNNING status. Use get_test_results to check progress.
search_memories
ChatGPTSearch memories by semantic similarity
update_agent
ChatGPTUpdate agent configuration for a project. Partial update — only provided fields are changed. VARIABLES — three separate lifecycle concerns. Declaring a variable does NOT by itself cause extraction: 1. variableConfigs — the master registry. Declares that a variable exists (key, type, description). Other fields / pathway nodes reference variables by key from this registry. 2. postSessionVariableKeys — extracted ONCE at session end. Cheap, ideal for final data capture (webhook payload, analytics, CRM sync). This is the default choice for most data-capture use cases. AUTO-SYNC: when this field is NOT explicitly provided and variableConfigs is updated, newly-added keys are auto-added and removed keys are pruned (keys the user previously unselected stay unselected). Pass an explicit array to override (pass [] to disable post-session extraction entirely). 3. pathway node.data.variableKeys — extracted DURING that node's turn. Cost scales per turn per variable; only use when a value must drive routing or mid-conversation dynamic prompts. Set via update_pathway / update_node, not here. Typical recipe: - Most agents: just set variableConfigs. Auto-sync will enable post-session extraction. - Need mid-conversation behavior from a variable: also add its key to the relevant node's variableKeys. - Do NOT want a declared variable extracted post-session: pass postSessionVariableKeys explicitly, omitting that key. Updatable fields: - name: string — Agent display name - globalPrompt: string | null — System prompt shared across all nodes - executionMode: "smart" | "turbo" | "balance" | null — Execution mode - timezone: string | null — e.g. "Asia/Taipei" - memoryEnabled: boolean — Enable agent memory across sessions - variableConfigs: VariableConfig[] | null — [{ key: string, type: "string"|"number"|"email", description: string }] - postSessionVariableKeys: string[] | null — Auto-synced with variableConfigs unless explicitly provided (see above) - beforeStartConfig: { enabled, mode: "template", toolTemplates? } | null Pre-session initialization. Runs ONCE before the conversation starts to fetch data / prepare context (e.g., look up a customer record by phone number, prefetch knowledge-base chunks). Tool side-effects — variables written, context injected — carry into the session. - "toolTemplates" directly invoke tools with LiquidJS-rendered args, no LLM in the loop. NOT the user-facing greeting / opening message. The agent's first utterance is generated by the start node's prompt during the first inference turn (see update_pathway). For voice agents, a literal multi-language opening line can be pinned via voiceConfig.languageRouter.firstMessage — that field has no MCP tool today; set it via the Pathors UI or REST API. - postSessionWebhook: { url, headers? } | null - postEvaluationConfig: { enabled, prompt, resultType: "pass_fail"|"number"|"enum", enumOptions?, numberConfig? } | null - placeholderMessages: { messages: Record<string, string>, defaultLanguage } | null — i18n loading / connection placeholder strings shown to the user while the session warms up. NOT a greeting.
update_edge
ChatGPTUpdate an edge (condition, source, or target). IMPORTANT: Do not call multiple pathway mutation tools in parallel — they perform read-modify-write and will overwrite each other.
update_memory
ChatGPTUpdate an existing memory entry
update_node
ChatGPTUpdate a node in the pathway (partial merge). IMPORTANT: Do not call multiple pathway mutation tools in parallel — they perform read-modify-write and will overwrite each other. Merges updates into the existing node. To update node data fields, pass them inside "data": e.g. { data: { prompt: "new prompt" } }. The node id cannot be changed. The merged result is validated against the node schema.
update_pathway
ChatGPTReplace the entire pathway (nodes + edges). IMPORTANT: Do not call multiple pathway mutation tools in parallel — they perform read-modify-write and will overwrite each other. Node types: "start" | "prompt" | "goto" Each node: { id: string, type: "<nodeType>", position: { x, y }, data: NodeData } - start: { type: "start", title, prompt, tools?: string[], variableKeys?: string[] } - prompt: { type: "prompt", title, prompt, tools?: string[], isGlobalNode?: boolean, globalNodeReason?: string, variableKeys?: string[] } - goto: { type: "goto", title, referenceNodeId: string | null } Each edge: { id: string, source: "<nodeId>", target: "<nodeId>", data: { condition: string } } Rules: Pathway MUST have at least one start node. All fields (title, prompt) are required strings.
update_project
ChatGPTUpdate project name
update_test_case
ChatGPTPartially update an existing test case. Only provided fields are updated. When acceptanceCriteria is provided, it replaces all existing criteria entirely.
update_test_suite
ChatGPTUpdate an existing test suite. Only provided fields are updated. When testCaseIds is provided, it replaces the entire set of connected test cases.
update_tool
ChatGPTUpdate a tool configuration