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
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
# Unreal Workbench — Agent Plugin
|
# 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
|
## 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
|
- **Log Analyzer** (`analyze_logs`) — analyze a UE log file, get structured findings, crash triage, and recommended fixes
|
||||||
- **Asset Janitor** — audit naming conventions, find unused assets, check LODs
|
- **Asset Janitor** (`tidy_assets`) — audit naming conventions, find unused assets, check LODs
|
||||||
- **Smart Librarian** — semantic search over UE5 engine docs + your team's knowledge base
|
- **Research tools** (free) — search curated UE engine documentation, known engine patterns, and your project's ingested logs
|
||||||
- **Tool-Maker** — generate safe Python scripts for UE5 editor automation
|
- **Tool-Maker** (`make_tool`) — generate safe Python scripts for UE editor automation, billed only on approval
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
@@ -26,20 +26,20 @@ npx plugins discover Tinirau/unreal-workbench
|
|||||||
|
|
||||||
## Authentication
|
## 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
|
```json
|
||||||
{
|
{
|
||||||
"team_id": "tm_your_team",
|
"team_id": "your-team-uuid",
|
||||||
"project_id": "prj_your_project"
|
"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
|
## Structure
|
||||||
|
|
||||||
@@ -57,8 +57,8 @@ unreal-workbench/
|
|||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- An AI client that supports [Agent Plugins 1.0.0](https://agent-plugins.org) (Claude Code, Cursor, OpenAI Codex, etc.)
|
- 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))
|
- A Spaghetti account — [sign in](https://spaghetti.gg) (created on first sign-in)
|
||||||
- UE 5.8+ (for built-in MCP tool integration; the Spaghetti tools work with 5.6+ for non-MCP features)
|
- UE 5.8+ for the editor connector plugin; the cloud tools work with any engine version's logs and inventories
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"spaghetti": {
|
"spaghetti": {
|
||||||
"type": "streamable-http",
|
"type": "streamable-http",
|
||||||
"url": "https://mcp.spaghetti.gg"
|
"url": "https://mcp.spaghetti.gg/api/mcp/agentic-engine/mcp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
||||||
"name": "unreal-workbench",
|
"name": "unreal-workbench",
|
||||||
"version": "0.1.0",
|
"version": "0.1.1",
|
||||||
"description": "Unreal Engine 5 agent tools — crash analysis, asset auditing, knowledge base, code generation. Powered by Spaghetti Unreal AI Workbench.",
|
"description": "Unreal Engine 5 agent tools — log analysis, asset auditing, engine docs research, script generation. Powered by Spaghetti Unreal AI Workbench.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Tinirau Ltd",
|
"name": "Tinirau Ltd",
|
||||||
"url": "https://spaghetti.gg"
|
"url": "https://spaghetti.gg"
|
||||||
|
|||||||
+60
-53
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
name: ue5-unreal
|
name: ue5-unreal
|
||||||
description: >
|
description: >
|
||||||
Unreal Engine 5 development assistant — crash analysis, asset auditing,
|
Unreal Engine 5 development assistant — log analysis, asset auditing,
|
||||||
knowledge-base search, and Python script generation via Spaghetti Unreal AI
|
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
|
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
|
needs expert help with log errors or crashes, asset cleanup, engine docs,
|
||||||
automation.
|
or editor automation.
|
||||||
---
|
---
|
||||||
|
|
||||||
# UE5 Unreal AI Workbench Tools
|
# UE5 Unreal AI Workbench Tools
|
||||||
@@ -17,73 +17,80 @@ connect — a browser window opens for sign-in at spaghetti.gg).
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
Your UE5 project must have a `.spaghetti` file at its root containing
|
The user must have signed in at [spaghetti.gg](https://spaghetti.gg) at least
|
||||||
`team_id` and `project_id`. If no `.spaghetti` exists, the first tool call
|
once (accounts and welcome credits are created on first sign-in).
|
||||||
returns an Agentic Directive instructing you to create one. Follow it.
|
|
||||||
|
|
||||||
## 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
|
### Log Analyzer (`spaghetti/analyze_logs`)
|
||||||
mentions a crash dump / minidump.
|
|
||||||
|
|
||||||
**What it does:** Parses the UE5 Output Log and crash dumps, identifies
|
**When to call:** The user reports errors or a crash in their UE5 project and
|
||||||
root-cause nodes or C++ pointers, and returns a precise fix with context from
|
has a log file (for example `Saved/Logs/<Project>.log`, or a crash log).
|
||||||
the proprietary UE5 bug knowledge base.
|
|
||||||
|
|
||||||
**Input:** Crash log text (paste the Output Log contents or the relevant
|
**What it does:** Full-log analysis — structured findings with severity and
|
||||||
section).
|
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
|
**Input:** A local log path (`logPath`) to start a session, or pasted log
|
||||||
not modify project files.
|
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
|
**Safety:** Read-only analysis. Does not modify project files.
|
||||||
assets, missing LODs, or compliance reports.
|
|
||||||
|
|
||||||
**What it does:** Finds textures without LODs, detects naming-convention
|
### Asset Janitor (`spaghetti/tidy_assets`)
|
||||||
violations (`T_`, `BP_`, etc.), identifies unused/0-reference assets, and
|
|
||||||
generates compliance reports.
|
|
||||||
|
|
||||||
**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
|
**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,
|
- `search_docs_code` — hybrid search over curated UE engine documentation.
|
||||||
or how specific systems work. Also for snippet search (verified node setups,
|
- `search_patterns` — recommended engine approaches vs anti-patterns for a described intent.
|
||||||
Blueprint patterns).
|
- `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).
|
||||||
**What it does:** Semantic search over two knowledge bases:
|
- `investigate_incident` — bounded investigation combining logs, relations, docs, and patterns. Requires project context.
|
||||||
- **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.
|
|
||||||
|
|
||||||
### Tool-Maker (`spaghetti/make_tool`)
|
### Tool-Maker (`spaghetti/make_tool`)
|
||||||
|
|
||||||
**When to call:** The user wants to automate a UE5 editor task (batch-rename
|
**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
|
**What it does:** Generates an editor-automation Python script from a
|
||||||
`unreal.EditorAssetLibrary` API. The script runs via the UE 5.8 Python remote
|
natural-language description of the task.
|
||||||
execution bridge.
|
|
||||||
|
|
||||||
**Safety — three-layer model:**
|
**Safety — three-layer model:**
|
||||||
1. **API allowlist:** only approved `unreal.EditorAssetLibrary` functions.
|
1. **API allowlist:** only approved editor APIs.
|
||||||
2. **Dry run:** scripts default to simulation mode (log what would happen,
|
2. **Dry run:** delivered scripts are simulation transforms — destructive
|
||||||
don't execute destructive ops).
|
operations commented out, reversible operations wrapped in
|
||||||
3. **Human approval:** before any destructive script runs, the user sees an
|
`unreal.ScopedTransaction` for undo support.
|
||||||
Approve/Reject dialog.
|
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
|
**Always show the generated script to the user before executing.**
|
||||||
script modifies assets, wrap in `unreal.ScopedTransaction` for undo support.
|
|
||||||
|
|
||||||
## Safety defaults
|
## Safety defaults
|
||||||
|
|
||||||
@@ -92,9 +99,9 @@ script modifies assets, wrap in `unreal.ScopedTransaction` for undo support.
|
|||||||
- **Use ScopedTransaction** for reversible operations (enables Ctrl+Z).
|
- **Use ScopedTransaction** for reversible operations (enables Ctrl+Z).
|
||||||
- **Read the Output Log** for errors after any automated editor operation.
|
- **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
|
Tool calls bill the user's personal wallet, or the team wallet when team
|
||||||
this UE5 project belongs to. All tool calls are billed to the team's Spaghetti
|
context is set. If you see `402 Payment Required` / "Insufficient credits",
|
||||||
wallet. If you see a `402 Payment Required`, direct the user to
|
call the free `topup` tool to create a checkout link, or direct the user to
|
||||||
`spaghetti.gg/billing` to top up.
|
`spaghetti.gg/billing` to top up.
|
||||||
|
|||||||
Reference in New Issue
Block a user