From 6795b0e5538b31f12658b674f450ac2ba12989d0 Mon Sep 17 00:00:00 2001 From: basielienis Date: Sun, 6 Sep 2026 05:31:59 +0300 Subject: [PATCH] fix: point mcp.json at the real MCP endpoint + replace stale tool docs - mcp.json: bare https://mcp.spaghetti.gg -> https://mcp.spaghetti.gg/api/mcp/agentic-engine/mcp (the host root does not serve MCP; Caddy proxies the whole host without a path rewrite) - SKILL.md/README: replace tools that no longer exist (analyze_crash, audit_assets, search_kb) with the shipped set (analyze_logs, tidy_assets, make_tool, topup, the five research tools); document credit costs and the approval flow - drop stale claims: GoTrue, spaghetti.gg/dashboard, tm_/prj_ id prefixes, '.spaghetti auto-created on first tool call' (unimplemented) - plugin.json: 0.1.0 -> 0.1.1 --- README.md | 28 ++++----- mcp.json | 2 +- plugin.json | 4 +- skills/ue5-unreal/SKILL.md | 113 ++++++++++++++++++++----------------- 4 files changed, 77 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index 0df49f6..bac6199 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # Unreal Workbench — Agent Plugin -Agent Plugins 1.0.0 distribution package for [Spaghetti Unreal AI Workbench](https://spaghetti.gg) — AI-powered tools for Unreal Engine 5.8 developers. +Agent Plugins 1.0.0 distribution package for [Spaghetti Unreal AI Workbench](https://spaghetti.gg) — AI-powered tools for Unreal Engine developers. ## What this gives you -Connects your AI coding assistant (Claude Code, Cursor, Codex, etc.) to the Spaghetti MCP server, providing: +Connects your AI coding assistant (Claude Code, Cursor, Codex, etc.) to the Unreal AI Workbench MCP server, providing: -- **Crash Investigator** — paste a UE5 crash log, get a root-cause diagnosis + fix -- **Asset Janitor** — audit naming conventions, find unused assets, check LODs -- **Smart Librarian** — semantic search over UE5 engine docs + your team's knowledge base -- **Tool-Maker** — generate safe Python scripts for UE5 editor automation +- **Log Analyzer** (`analyze_logs`) — analyze a UE log file, get structured findings, crash triage, and recommended fixes +- **Asset Janitor** (`tidy_assets`) — audit naming conventions, find unused assets, check LODs +- **Research tools** (free) — search curated UE engine documentation, known engine patterns, and your project's ingested logs +- **Tool-Maker** (`make_tool`) — generate safe Python scripts for UE editor automation, billed only on approval ## Install @@ -26,20 +26,20 @@ npx plugins discover Tinirau/unreal-workbench ## Authentication -On first connect, your client opens a browser to sign in at [spaghetti.gg](https://spaghetti.gg) via OAuth (GoTrue). No API key or headers to configure — the OAuth flow is handled entirely by your client. +Sign in once at [spaghetti.gg](https://spaghetti.gg) — your account is created on first sign-in, with welcome credits. On first connect, your client opens a browser to sign in via OAuth. No API keys to configure — the OAuth flow is handled entirely by your client. -## Project context +## Project context (optional) -Your UE5 project needs a `.spaghetti` file at its root: +Your UE5 project can have a `.spaghetti` file at its root: ```json { - "team_id": "tm_your_team", - "project_id": "prj_your_project" + "team_id": "your-team-uuid", + "project_id": "your-project-uuid" } ``` -Get these from your [spaghetti.gg dashboard](https://spaghetti.gg/dashboard). The file is safe to commit to Git/Perforce (no secrets). If it's missing, the first tool call guides you through creating it. +Team and project ids are UUIDs; a setup CLI that fetches them and writes this file automatically is coming. Until then, all tools also work on your personal account without this file. The file is safe to commit to Git/Perforce (no secrets). ## Structure @@ -57,8 +57,8 @@ unreal-workbench/ ## Requirements - An AI client that supports [Agent Plugins 1.0.0](https://agent-plugins.org) (Claude Code, Cursor, OpenAI Codex, etc.) -- A Spaghetti account ([sign up](https://spaghetti.gg/signup)) -- UE 5.8+ (for built-in MCP tool integration; the Spaghetti tools work with 5.6+ for non-MCP features) +- A Spaghetti account — [sign in](https://spaghetti.gg) (created on first sign-in) +- UE 5.8+ for the editor connector plugin; the cloud tools work with any engine version's logs and inventories ## License diff --git a/mcp.json b/mcp.json index 406e954..a884dae 100644 --- a/mcp.json +++ b/mcp.json @@ -3,7 +3,7 @@ "mcpServers": { "spaghetti": { "type": "streamable-http", - "url": "https://mcp.spaghetti.gg" + "url": "https://mcp.spaghetti.gg/api/mcp/agentic-engine/mcp" } } } diff --git a/plugin.json b/plugin.json index 1caca3f..adbf225 100644 --- a/plugin.json +++ b/plugin.json @@ -1,8 +1,8 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "unreal-workbench", - "version": "0.1.0", - "description": "Unreal Engine 5 agent tools — crash analysis, asset auditing, knowledge base, code generation. Powered by Spaghetti Unreal AI Workbench.", + "version": "0.1.1", + "description": "Unreal Engine 5 agent tools — log analysis, asset auditing, engine docs research, script generation. Powered by Spaghetti Unreal AI Workbench.", "author": { "name": "Tinirau Ltd", "url": "https://spaghetti.gg" diff --git a/skills/ue5-unreal/SKILL.md b/skills/ue5-unreal/SKILL.md index 817de16..90a6e0a 100644 --- a/skills/ue5-unreal/SKILL.md +++ b/skills/ue5-unreal/SKILL.md @@ -1,11 +1,11 @@ --- name: ue5-unreal description: > - Unreal Engine 5 development assistant — crash analysis, asset auditing, - knowledge-base search, and Python script generation via Spaghetti Unreal AI + Unreal Engine 5 development assistant — log analysis, asset auditing, + engine-docs research, and Python script generation via Spaghetti Unreal AI Workbench. Call these tools when the user is working in a UE5 project and - needs expert help with crashes, asset cleanup, engine docs, or editor - automation. + needs expert help with log errors or crashes, asset cleanup, engine docs, + or editor automation. --- # UE5 Unreal AI Workbench Tools @@ -17,73 +17,80 @@ connect — a browser window opens for sign-in at spaghetti.gg). ## Prerequisites -Your UE5 project must have a `.spaghetti` file at its root containing -`team_id` and `project_id`. If no `.spaghetti` exists, the first tool call -returns an Agentic Directive instructing you to create one. Follow it. +The user must have signed in at [spaghetti.gg](https://spaghetti.gg) at least +once (accounts and welcome credits are created on first sign-in). -## Available tools (Phase 1 — MVP) +A `.spaghetti` file at the UE5 project root (`team_id`, `project_id`) is +optional — without it, calls bill the user's personal wallet and everything +works except the two project-scoped research tools (`search_logs_temporal`, +`investigate_incident`). If you see a "no user account exists" error, point +the user at the portal sign-in; if you see "not a member of team", the +`.spaghetti`/headers point at the wrong team. -### Crash Investigator (`spaghetti/analyze_crash`) +## Available tools -**When to call:** The user reports a UE5 crash, paste an output log, or -mentions a crash dump / minidump. +### Log Analyzer (`spaghetti/analyze_logs`) -**What it does:** Parses the UE5 Output Log and crash dumps, identifies -root-cause nodes or C++ pointers, and returns a precise fix with context from -the proprietary UE5 bug knowledge base. +**When to call:** The user reports errors or a crash in their UE5 project and +has a log file (for example `Saved/Logs/.log`, or a crash log). -**Input:** Crash log text (paste the Output Log contents or the relevant -section). +**What it does:** Full-log analysis — structured findings with severity and +evidence, crash triage naming the suspect Blueprint, and statistics. Uploads +are session-based; large logs never flow through chat. -**Safety:** Read-only analysis. Returns a diagnosis + suggested fix; does -not modify project files. +**Input:** A local log path (`logPath`) to start a session, or pasted log +text (`logText`) as the fallback path. -### Asset Janitor (`spaghetti/audit_assets`) +**Cost:** 5 credits per session, billed only when analysis runs — empty logs +or logs with no Error/Fatal entries are free. Retries never bill twice. -**When to call:** The user asks about asset cleanup, naming conventions, unused -assets, missing LODs, or compliance reports. +**Safety:** Read-only analysis. Does not modify project files. -**What it does:** Finds textures without LODs, detects naming-convention -violations (`T_`, `BP_`, etc.), identifies unused/0-reference assets, and -generates compliance reports. +### Asset Janitor (`spaghetti/tidy_assets`) -**Input:** Optionally specify which checks to run (naming, LODs, unused). +**When to call:** The user asks about asset cleanup, naming conventions, +unused assets, missing LODs, or compliance reports. + +**What it does:** Audits a project asset inventory — unused assets with +reclaimable sizes, redirectors, naming-convention violations, LOD problems — +and returns a prioritized report plus a downloadable CSV. + +**Input:** An inventory JSONL path. With the UE connector plugin installed, +call its `export_asset_inventory` tool in the editor first (it writes +`Saved/spaghetti_inventory.jsonl`); without it, a short Python-console script +produces the same file. + +**Cost:** 3 credits per session, billed only when a report is produced. **Safety:** Audit is read-only. If the user wants to apply fixes, use -Tool-Maker to generate a dry-run Python script first. +Tool-Maker to generate a dry-run script first. -### Smart Librarian (`spaghetti/search_kb`) +### Research tools (free) -**When to call:** The user asks about UE5 engine architecture, best practices, -or how specific systems work. Also for snippet search (verified node setups, -Blueprint patterns). - -**What it does:** Semantic search over two knowledge bases: -- **Team KB:** your project's private RAG index (studio docs, past bug - resolutions, conventions). -- **UE5 Engine Graph:** GraphRAG over the public UE 5.8 source for multi-hop - reasoning about engine architecture. - -**Input:** Natural-language query about UE5 or your project's knowledge base. +- `search_docs_code` — hybrid search over curated UE engine documentation. +- `search_patterns` — recommended engine approaches vs anti-patterns for a described intent. +- `search_logs_temporal` — time/severity/subsystem-filtered search over logs previously ingested by `analyze_logs`. Requires project context. +- `query_temporal_relations` — entity-relation traversal over ingested logs (up to 3 hops, optionally as of a point in time). +- `investigate_incident` — bounded investigation combining logs, relations, docs, and patterns. Requires project context. ### Tool-Maker (`spaghetti/make_tool`) **When to call:** The user wants to automate a UE5 editor task (batch-rename -assets, apply materials, configure project settings, etc.). +assets, apply settings, generate reports, etc.). -**What it does:** Generates a safe, production-quality Python script using -`unreal.EditorAssetLibrary` API. The script runs via the UE 5.8 Python remote -execution bridge. +**What it does:** Generates an editor-automation Python script from a +natural-language description of the task. **Safety — three-layer model:** -1. **API allowlist:** only approved `unreal.EditorAssetLibrary` functions. -2. **Dry run:** scripts default to simulation mode (log what would happen, - don't execute destructive ops). -3. **Human approval:** before any destructive script runs, the user sees an - Approve/Reject dialog. +1. **API allowlist:** only approved editor APIs. +2. **Dry run:** delivered scripts are simulation transforms — destructive + operations commented out, reversible operations wrapped in + `unreal.ScopedTransaction` for undo support. +3. **Human approval:** the user Approves/Declines via the client's approval + flow. Billed 10 credits only on approval; blocked, declined, and + cancelled runs are free. -**Always show the generated script to the user before executing.** If the -script modifies assets, wrap in `unreal.ScopedTransaction` for undo support. +**Always show the generated script to the user before executing.** ## Safety defaults @@ -92,9 +99,9 @@ script modifies assets, wrap in `unreal.ScopedTransaction` for undo support. - **Use ScopedTransaction** for reversible operations (enables Ctrl+Z). - **Read the Output Log** for errors after any automated editor operation. -## Context +## Billing -The `.spaghetti` file at the project root identifies which team and project -this UE5 project belongs to. All tool calls are billed to the team's Spaghetti -wallet. If you see a `402 Payment Required`, direct the user to +Tool calls bill the user's personal wallet, or the team wallet when team +context is set. If you see `402 Payment Required` / "Insufficient credits", +call the free `topup` tool to create a checkout link, or direct the user to `spaghetti.gg/billing` to top up.