{"ok":true,"site":{"host":"weave.eo2suite.com","url":"https://weave.eo2suite.com/projects/proj_mveupkxioay7ojw","type":"live","desc":"AI-native creator workspace with local-first files, knowledge workflows, and multi-agent orchestration","tools":[{"name":"list_projects","kind":"answer","impl":"imperative","description":"List all EO2Weave projects with their folder counts and last access time.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"create_project","kind":"act","impl":"imperative","description":"Create a new EO2Weave project. Folders (local directories) are attached separately by the user in the UI — a new project starts empty.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Project name"}},"required":["name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"list_mounted_folders","kind":"answer","impl":"imperative","description":"List the local folders the user has granted EO2Weave access to (path, owning project, read-only flag). Conversations are bound to one of these folders — use this to find which folder a task should target, then list_conversations to find conversations working on it.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"list_conversations","kind":"answer","impl":"imperative","description":"List conversations (metadata only, no message bodies), newest first. Filter by mounted folder to find conversations that operate on it.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"folderId":{"type":"string","description":"Only conversations bound to this mounted folder id (from list_mounted_folders)"},"limit":{"type":"number","description":"Max entries to return (default 20, max 100)"},"offset":{"type":"number","description":"Offset for paging"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"search_conversations","kind":"answer","impl":"imperative","description":"Full-text search across all conversations (titles + message bodies). Supports optional project and time-window filters (Unix epoch ms). Returns conversation ids, titles and matched excerpts — the semantic way to locate \"the conversation where we discussed X\".","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Keyword or phrase to search for"},"updatedAfter":{"type":"number","description":"Unix epoch ms lower bound on conversation updatedAt"},"updatedBefore":{"type":"number","description":"Unix epoch ms upper bound"},"limit":{"type":"number","description":"Max results (default 10, max 50)"}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"create_conversation","kind":"act","impl":"imperative","description":"Create a new conversation. NOTE: a new conversation has NO mounted folder — it cannot operate on files until the user mounts a folder in the UI. For file tasks prefer an existing conversation bound to the target folder (list_mounted_folders + list_conversations).","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Conversation title (auto-generated later if omitted)"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"rename_conversation","kind":"act","impl":"imperative","description":"Rename a conversation. Marks the title as manual (auto-title generation will not overwrite it). Operates on THIS EO2Weave instance only — when multiple instances are open, use the variant matching the conversation’s origin.","annotations":{},"inputSchema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Target conversation id"},"title":{"type":"string","description":"New title (trimmed, 1-200 chars)"}},"required":["conversationId","title"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"get_messages","kind":"answer","impl":"imperative","description":"Read the message history of a conversation, newest page first. Content is the final text per message; tool-call details are omitted. Single messages over 32KB are truncated with truncated:true.","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Conversation id"},"page":{"type":"number","description":"1 = newest page (default)"},"pageSize":{"type":"number","description":"Messages per page (default 50, max 200)"}},"required":["conversationId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"send_message","kind":"transact","impl":"imperative","description":"Send a user message into a conversation and start the EO2Weave agent on it. Runs with the app’s currently configured provider/model (see list_providers / set_default_model). By default returns immediately with status \"started\" — poll get_run_status / get_run_progress for progress. wait=true blocks (max timeoutMs, hard cap 300s) and returns the final result with the agent’s summary and changed files. If the conversation already has a run in progress the message is queued (status \"queued\"). The conversation must have a mounted folder for file-manipulation tasks.","inputSchema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Conversation to send into"},"content":{"type":"string","description":"Message text (the task for the agent)"},"wait":{"type":"boolean","description":"Block until the run finishes (default false). Caps at 55s — for longer tasks use wait=false and poll get_run_status."},"timeoutMs":{"type":"number","description":"Max wait when wait=true (default 50000, hard cap 55000 — the extension relay times out at 60s)"}},"required":["conversationId","content"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"get_run_status","kind":"answer","impl":"imperative","description":"Get the status and (when finished) the result of a run started with send_message. Result includes the agent’s final summary, the list of changed files, and token usage.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"runId":{"type":"string","description":"Run id from send_message"}},"required":["runId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"get_run_progress","kind":"answer","impl":"imperative","description":"Live progress of a running run: elapsed time, completed tool-call count, the tool currently executing (name + argument preview) and a preview of the streaming output. Use to report progress or detect liveness. For finished runs returns only the terminal status.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"runId":{"type":"string","description":"Run id from send_message"}},"required":["runId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"cancel_run","kind":"transact","impl":"imperative","description":"Cancel a running or queued run.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"runId":{"type":"string","description":"Run id from send_message"}},"required":["runId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"read_folder_file","kind":"answer","impl":"imperative","description":"Read a file from the workspace of the given conversation (path relative to the folder root). NOTE: this is the workspace copy — changes reach the real local disk when the user syncs to disk.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Conversation whose workspace to read from"},"path":{"type":"string","description":"Relative path, e.g. \"src/App.tsx\""}},"required":["conversationId","path"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"write_folder_file","kind":"act","impl":"imperative","description":"Write a file into the workspace of the given conversation (creates parent folders, overwrites existing). Goes to the workspace copy — the user syncs to the real disk from the UI. Useful to hand documents/specs to the agent before send_message.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Conversation whose workspace to write into"},"path":{"type":"string","description":"Relative path, e.g. \"specs/fix-login.md\""},"content":{"type":"string","description":"Full file content (text)"}},"required":["conversationId","path","content"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"list_folder_files","kind":"answer","impl":"imperative","description":"List files under a path in the conversation’s workspace. Paths are relative to the folder root. depth 0 = direct children only.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Conversation whose workspace to list"},"path":{"type":"string","description":"Relative directory path (default \"\" = folder root)"},"depth":{"type":"number","description":"Recursion depth (default 2)"}},"required":["conversationId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"list_providers","kind":"answer","impl":"imperative","description":"List every LLM provider configured in the app: whether an API key / OAuth is set up, its pinned (frequently used) models, and which provider+model is currently the global default used by all new runs.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"list_models","kind":"answer","impl":"imperative","description":"List all models available for a provider (live catalog when the provider supports fetching, cached otherwise). Pinned models are flagged.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider id from list_providers"}},"required":["providerId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"add_pinned_model","kind":"act","impl":"imperative","description":"Add a model to a provider’s pinned (frequently used) list.","inputSchema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider id"},"modelId":{"type":"string","description":"Model id (from list_models)"}},"required":["providerId","modelId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"remove_pinned_model","kind":"act","impl":"imperative","description":"Remove a model from a provider’s pinned list.","inputSchema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider id"},"modelId":{"type":"string","description":"Model id"}},"required":["providerId","modelId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]},{"name":"set_default_model","kind":"act","impl":"imperative","description":"Set the global default provider+model used by new runs (including manual sends from the UI). The provider must already have an API key or OAuth configured.","inputSchema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider id"},"modelId":{"type":"string","description":"Model id"}},"required":["providerId","modelId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/projects/proj_mveupkxioay7ojw","pages":["/projects/proj_mveupkxioay7ojw","/"]}],"category":"AI & Agents","favicon":"/favicons/weave.eo2suite.com.ico","apiSurface":"spec","toolCount":20}}