Adastrea-MCP
Provides full GitHub API access to the Adastrea repository for comprehensive project understanding and management.
Integrates with GitHub Copilot to provide an AI agent tailored for Unreal Engine development, enforcing Epic Games standards and leveraging server tools for code generation and analysis.
Comprehensive Unreal Engine integration with 30+ tools, 15+ resources, live editor communication, Blueprint interaction, actor management, intelligent code generation, and a complete UE5.6+ knowledge database.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Adastrea-MCPWhat's the current development status?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Adastrea-MCP
A Model Context Protocol (MCP) server for managing game project information for Adastrea. This server allows AI agents and tools to store, retrieve, and manage comprehensive details about the Adastrea game development project.
🚀 Vision: Building the world's best Unreal Engine MCP server. See our ROADMAP.md for the strategic plan.
📊 Current Status (v1.0.0): Phases 1, 2.1, 2.2, 2.3, and 3.1 complete! The server includes comprehensive Unreal Engine integration with 30+ tools, 15+ resources, live editor communication, Blueprint interaction, actor management, intelligent code generation, and a complete UE5.6+ knowledge database.
About Adastrea
This MCP server is specifically designed for the Adastrea game project, providing a centralized way for AI agents to understand and work with all aspects of the game's development.
Game Repository: https://github.com/Mittenzx/Adastrea
🔗 Repository Access: This MCP server has full GitHub API access to the Adastrea repository for comprehensive project understanding.
Pre-populated Project Data: The MCP server comes with comprehensive information about the Adastrea project already loaded, including:
Complete game description and features (22 major systems)
Technical details (33,000+ lines of C++ code)
Development timeline and milestones
Python automation tools and YAML templates
Current project status (Alpha 1.0.0-alpha, Phase 4 in progress)
Reality check: Code 85% complete, Content 10% complete
The pre-populated data combined with live repository access ensures AI agents have immediate and up-to-date context about Adastrea without manual configuration.
Related MCP server: unreal-engine-mcp
Features
Core Features
Centralized Game Project Information: Store all details about your game project in one place
MCP Resources: Access project information through standardized MCP resources
MCP Tools: Update and manage project information using built-in tools
Flexible Schema: Support for standard fields and custom fields for project-specific needs
Team Management: Track team members and their roles
Timeline Tracking: Monitor project milestones and progress
Technical Documentation: Store technical specifications and architecture details
Phase 1: Foundation Enhancement (✅ Completed)
Unreal Project File Parser: Parse
.uprojectfiles to extract engine version, modules, and pluginsC++ Code Analysis: Detect and catalog UCLASS, USTRUCT, UENUM, and UINTERFACE definitions
Blueprint Detection: Identify Blueprint assets and their metadata
Asset Management: Scan and categorize project assets (Meshes, Materials, Textures, etc.)
Plugin Scanner: Inventory and analyze installed plugins
Build Configuration: Detect available build configurations and target platforms
Code Intelligence: Search capabilities for classes, functions, and assets
Project Validation: Automated checks for common project structure issues
Phase 2.1: Editor Communication Layer (✅ Completed)
Adastrea-Director Integration: Seamless connection to Adastrea-Director
Director is now a comprehensive UE plugin with autonomous agents (P3 complete)
Includes built-in MCP server for AI agent access (84+ tests)
UE Python API integration with 25+ tests
Performance profiling, bug detection, and code quality monitoring
Live Editor State: Real-time access to UE Editor state and current level information
Console Command Execution: Run UE console commands remotely via MCP
Python Script Execution: Execute Python code in UE Editor's embedded interpreter
Live Asset Management: Real-time asset list with fallback to local cache
Graceful Degradation: Automatic fallback to local analysis when Director unavailable
Phase 2.2: Blueprint Interaction Tools (✅ Completed)
Blueprint Inspection: Deep inspection of Blueprint structure, variables, functions, and graphs
Blueprint Node Search: Find specific node types within Blueprints
Blueprint Modification: Add variables and functions, modify properties (requires Director)
Component Analysis: Inspect Blueprint component hierarchies
Graph Analysis: Analyze Blueprint event graphs and function graphs
Phase 2.3: Actor & Component System (✅ Completed)
Level Actor Registry: List and search actors in the current level
Actor Spawning: Create new actors programmatically with full configuration
Actor Modification: Modify actor properties, transforms, and tags
Component Inspection: Analyze actor component hierarchies and relationships
Actor Templates: Save and reuse common actor configurations
Template Management: Create, list, instantiate, and manage actor templates
UE5.6+ Knowledge Database (✅ Completed)
Comprehensive Systems Library: Detailed information on 12+ core Unreal Engine 5.6+ systems including:
Core Architecture (modules, subsystems, asset management)
Gameplay Framework (actors, components, game modes)
Rendering System (Lumen, Nanite, Virtual Shadow Maps)
Animation System (UAF, Motion Trails, MetaHuman)
Physics System (Chaos, collision, vehicles)
AI System (Behavior Trees, State Trees, Mass Entity)
Networking System (Iris replication, RPCs)
Audio System (MetaSounds, procedural audio)
UI System (UMG, Common UI, MVVM)
Niagara VFX System (particles, fluids)
Gameplay Ability System (GAS)
Material System (PBR, node-based editor)
Rich Metadata: Each system includes features, best practices, version info, related systems, and official references
Searchable Knowledge: Query by keywords, tags, or system IDs
Web-Sourced Information: Curated from official documentation, community forums, tutorials, and expert resources
MCP Resources & Tools: Access via resources (
unreal://knowledge/*) and query tools
GitHub Copilot Agent (✨ New)
Custom Unreal Engine Agent: Pre-configured GitHub Copilot agent for UE5.6+ development
Epic Games Standards: Enforces official Epic Games coding conventions and best practices
MCP Integration: Leverages all Adastrea-MCP tools for intelligent project analysis
Comprehensive Knowledge: Built-in expertise in all major UE5.6+ systems
Multi-Repository Deployment: Can be rolled out across all your Unreal Engine repositories
Reusable: Works with any Unreal Engine project, not just Adastrea
Phase 3.1: AI-Enhanced Development Tools (✅ Completed)
Intelligent Code Generation: Generate UE-compliant C++ code following best practices
Unreal-Aware Templates: Create UClasses, Blueprints-compatible classes, common patterns
GameMode Generation: Generate GameMode classes with proper setup
Character Generation: Create Character classes with health system
Component Generation: Generate ActorComponent classes for reusable functionality
Replication Code: Generate network replication code for properties and RPCs
Data Assets: Create UDataAsset classes for configuration data
Data Tables: Generate USTRUCT row structures for Data Tables
8 New Code Generation Tools: Comprehensive code scaffolding for UE development
Installation
npm install
npm run buildUsage
As an MCP Server
Add this to your MCP client configuration (e.g., Claude Desktop, Cline, or other MCP-compatible tools):
{
"mcpServers": {
"adastrea": {
"command": "node",
"args": ["/absolute/path/to/Adastrea-MCP/build/index.js"]
}
}
}Available Resources
Game Project Resources
game://project/info- Complete project information in JSON formatgame://project/summary- Human-readable project summary
Unreal Engine Resources (Phase 1)
unreal://project/config- Complete Unreal Engine project configuration from .uproject fileunreal://project/modules- List of all modules and their dependenciesunreal://project/plugins- Inventory of installed plugins with metadataunreal://project/classes- All UCLASS, USTRUCT, UENUM, and UINTERFACE definitionsunreal://project/blueprints- List of all Blueprint assets in the projectunreal://project/assets- Complete asset catalog with types and pathsunreal://build/config- Available build configurations and target platforms
Editor Integration Resources (Phase 2.1)
unreal://editor/state- Current state of UE Editor (requires Adastrea-Director)unreal://editor/capabilities- Available capabilities based on Director connection status
Actor & Component Resources (Phase 2.3)
unreal://level/actors- All actors in the current level with component hierarchies
UE5.6+ Knowledge Database Resources
unreal://knowledge/summary- Overview of the UE5.6+ knowledge database with system counts and categoriesunreal://knowledge/systems- Complete catalog of all UE5.6+ systems with detailed information, features, best practices, and referencesunreal://knowledge/tags- All available tags for categorizing and searching UE5.6+ systems
Available Tools
update_game_info
Update or add game project information. Supports partial updates - only provide the fields you want to change.
Parameters:
name(string): The name of the gamedescription(string): A detailed description of the gamegenre(string): The game's genre (e.g., RPG, FPS, Strategy)platform(array): Target platforms (e.g., ["PC", "Console", "Mobile"])engine(string): Game engine being used (e.g., Unity, Unreal, Godot)status(string): Current development status (e.g., Planning, In Development, Testing, Released)repository_url(string): URL to the game's source code repositoryteam(array): Team members and their rolesfeatures(array): Key features of the gametechnical_details(object): Technical specifications and architecture detailstimeline(object): Project timeline information with milestonescustom_fields(object): Any additional custom fields
Example:
{
"name": "Adastrea",
"genre": "RPG",
"engine": "Unity",
"status": "In Development",
"repository_url": "https://github.com/Mittenzx/Adastrea",
"platform": ["PC", "Console"],
"features": [
"Open world exploration",
"Dynamic combat system",
"Branching storylines"
]
}get_game_info
Retrieve the current game project information in JSON format.
clear_game_info
Clear all game project information and start fresh.
Parameters:
confirm(boolean, required): Must be set totrueto confirm deletion
Unreal Engine Tools (Phase 1)
scan_unreal_project
Perform a deep scan of an Unreal Engine project structure, analyzing .uproject files, modules, plugins, C++ classes, and assets.
Parameters:
project_path(string, required): Absolute path to the Unreal Engine project directory (containing the .uproject file)
Example:
{
"project_path": "/path/to/MyUnrealProject"
}validate_project_structure
Validate an Unreal Engine project structure and check for common issues.
Parameters:
project_path(string, required): Absolute path to the Unreal Engine project directory
search_code
Search for C++ classes, structs, enums, or interfaces in the scanned Unreal project.
Parameters:
query(string, required): Search query (class name, type, etc.)
find_class_usage
Find all usages of a specific C++ class in the project.
Parameters:
class_name(string, required): Name of the class to find usages for
get_class_hierarchy
Get the inheritance hierarchy for a specific C++ class.
Parameters:
class_name(string, required): Name of the class
search_assets
Search for assets in the scanned Unreal project by name, type, or path.
Parameters:
query(string, required): Search query (asset name, type, or path)
get_asset_dependencies
Get dependencies for a specific asset (placeholder for future implementation).
Parameters:
asset_path(string, required): Path to the asset
Editor Integration Tools (Phase 2.1)
execute_console_command
Execute a console command in the running Unreal Engine Editor via Adastrea-Director.
Parameters:
command(string, required): Console command to execute (e.g., 'stat fps', 'ke * list')
Example:
{
"command": "stat fps"
}run_python_script
Execute Python code in the Unreal Engine Editor's embedded Python interpreter.
Parameters:
code(string, required): Python code to execute in the UE Editor
Example:
{
"code": "import unreal\nprint(unreal.SystemLibrary.get_project_directory())"
}get_live_project_info
Get live project information from the running UE Editor. Prefers live data from Adastrea-Director over cached local data. Falls back to local analysis if Director is unavailable.
Parameters: None
Example Response:
{
"projectInfo": {
"projectName": "MyGame",
"projectPath": "C:/Projects/MyGame",
"engineVersion": "5.6",
"isLoaded": true
},
"source": "director",
"directorAvailable": true,
"localAnalysisAvailable": true
}list_assets_live
List assets from the running UE Editor in real-time. Prefers live data from Adastrea-Director over cached local data.
Parameters:
filter(string, optional): Optional filter string to search for specific assets
Example:
{
"filter": "Material"
}Actor & Component Tools (Phase 2.3)
spawn_actor
Spawn a new actor in the current level (requires Adastrea-Director integration).
Parameters:
className(string, required): Actor class to spawn (e.g., 'AStaticMeshActor', '/Game/Blueprints/BP_Character.BP_Character_C')location(object, optional): World location {x, y, z}rotation(object, optional): World rotation {pitch, yaw, roll}scale(object, optional): World scale {x, y, z}name(string, optional): Custom name for the actor instanceproperties(object, optional): Initial property valuestags(array, optional): Tags to assign to the actorfolder(string, optional): Level folder to place actor in
Example:
{
"className": "AStaticMeshActor",
"location": {"x": 0, "y": 0, "z": 100},
"rotation": {"pitch": 0, "yaw": 0, "roll": 0},
"name": "MyStaticMesh"
}modify_actor_properties
Modify properties of an existing actor in the level (requires Adastrea-Director integration).
Parameters:
actorPath(string, required): Full path to the actorproperties(object, optional): Properties to modifytransform(object, optional): Transform modifications (location, rotation, scale)tags(array, optional): Tags to assign
Example:
{
"actorPath": "/Game/Maps/MainLevel.MainLevel:PersistentLevel.Actor_0",
"transform": {
"location": {"x": 100, "y": 200, "z": 50}
},
"properties": {
"bHidden": false
}
}get_actor_components
Get the component hierarchy for an actor.
Parameters:
actorPath(string, required): Full path to the actor
Example:
{
"actorPath": "/Game/Maps/MainLevel.MainLevel:PersistentLevel.Actor_0"
}create_actor_template
Save an actor as a reusable template.
Parameters:
actorPath(string, required): Path to the actor to save as templatetemplateName(string, required): Name for the templatedescription(string, optional): Description of the templatecategory(string, optional): Category for organizationtags(array, optional): Tags for the template
Example:
{
"actorPath": "/Game/Maps/MainLevel.MainLevel:PersistentLevel.Actor_0",
"templateName": "Lamp Post Standard",
"category": "Environment",
"tags": ["lighting", "street"]
}list_actor_templates
List all available actor templates.
Parameters:
category(string, optional): Filter by categorytags(array, optional): Filter by tags
Example:
{
"category": "Environment"
}instantiate_template
Create an actor from a template (requires Adastrea-Director integration).
Parameters:
templateId(string, required): ID of the template to instantiatelocation(object, optional): World locationrotation(object, optional): World rotationscale(object, optional): World scalename(string, optional): Custom name for the spawned actorfolder(string, optional): Level folder
Example:
{
"templateId": "template_1234567890_abc123xyz",
"location": {"x": 500, "y": 300, "z": 0}
}delete_actor_template
Delete an actor template.
Parameters:
templateId(string, required): ID of the template to delete
Example:
{
"templateId": "template_1234567890_abc123xyz"
}UE5.6+ Knowledge Database Tools
query_ue_knowledge
Search the UE5.6+ knowledge database for information about Unreal Engine systems, features, and best practices.
Parameters:
query(string, required): Search query (keywords, system names, or tags)
Example:
{
"query": "rendering"
}get_ue_system
Get detailed information about a specific Unreal Engine system by ID.
Parameters:
systemId(string, required): System ID (e.g., 'rendering-system', 'gameplay-framework', 'animation-system')
Example:
{
"systemId": "rendering-system"
}get_ue_systems_by_tag
Get all Unreal Engine systems that match a specific tag.
Parameters:
tag(string, required): Tag to filter by (e.g., 'rendering', 'gameplay', 'animation', 'networking')
Example:
{
"tag": "gameplay"
}get_related_ue_systems
Get systems related to a specific Unreal Engine system.
Parameters:
systemId(string, required): System ID to find related systems for
Example:
{
"systemId": "gameplay-ability-system"
}Phase 3.1: Intelligent Code Generation Tools
generate_uclass
Generate a UClass following Unreal Engine conventions. Creates header and source files for a basic C++ class.
Parameters:
className(string, required): Name of the class (e.g., 'AMyActor', 'UMyObject')parentClass(string, optional): Parent class (e.g., 'AActor', 'UObject'). Default: 'UObject'module(string, optional): Module name. Default: 'YourProject'blueprintType(boolean, optional): Whether this class can be used as a Blueprint typeblueprintable(boolean, optional): Whether Blueprints can be derived from this classabstract(boolean, optional): Whether this is an abstract classconfig(string, optional): Config category (e.g., 'Game', 'Engine')
Example:
{
"className": "AMyCustomActor",
"parentClass": "AActor",
"module": "MyGame",
"blueprintable": true,
"blueprintType": true
}generate_blueprint_compatible_class
Generate a Blueprint-compatible C++ class with properties and functions exposed to Blueprints.
Parameters:
className(string, required): Name of the classparentClass(string, optional): Parent class. Default: 'UObject'module(string, optional): Module name. Default: 'YourProject'properties(array, optional): Properties to expose to Blueprintsfunctions(array, optional): Functions to expose to Blueprints
Example:
{
"className": "UMyComponent",
"parentClass": "UActorComponent",
"module": "MyGame",
"properties": [
{
"name": "Speed",
"type": "float",
"category": "Movement",
"editAnywhere": true,
"blueprintReadWrite": true,
"defaultValue": "600.0f",
"tooltip": "Movement speed"
}
],
"functions": [
{
"name": "GetSpeed",
"returnType": "float",
"category": "Movement",
"blueprintPure": true,
"isConst": true
}
]
}generate_game_mode
Generate a GameMode class following UE best practices.
Parameters:
className(string, required): Name of the GameMode class (e.g., 'AMyGameMode')module(string, optional): Module name. Default: 'YourProject'
Example:
{
"className": "AMyGameMode",
"module": "MyGame"
}generate_character_class
Generate a Character class with health system and common functionality.
Parameters:
className(string, required): Name of the Character class (e.g., 'AMyCharacter')module(string, optional): Module name. Default: 'YourProject'
Example:
{
"className": "AMyCharacter",
"module": "MyGame"
}generate_actor_component
Generate an ActorComponent class for reusable functionality.
Parameters:
className(string, required): Name of the ActorComponent class (e.g., 'UMyComponent')module(string, optional): Module name. Default: 'YourProject'
Example:
{
"className": "UHealthComponent",
"module": "MyGame"
}generate_replication_code
Generate network replication code for properties and RPCs.
Parameters:
className(string, required): Name of the class to add replication toproperties(array, required): Properties to replicaterpcs(array, optional): Remote Procedure Calls to generate
Example:
{
"className": "AMyActor",
"properties": [
{
"name": "Health",
"type": "float",
"replicationType": "Replicated"
},
{
"name": "Score",
"type": "int32",
"replicationType": "ReplicatedUsing",
"repNotifyFunction": "OnRep_Score"
}
],
"rpcs": [
{
"name": "ServerTakeDamage",
"type": "Server",
"reliable": true,
"parameters": [
{ "name": "DamageAmount", "type": "float" }
]
}
]
}generate_data_asset
Generate a UDataAsset class for storing configuration data.
Parameters:
className(string, required): Name of the DataAsset class (e.g., 'UMyDataAsset')module(string, optional): Module name. Default: 'YourProject'properties(array, required): Properties for the data asset
Example:
{
"className": "UWeaponDataAsset",
"module": "MyGame",
"properties": [
{
"name": "WeaponName",
"type": "FString",
"category": "Weapon",
"editAnywhere": true,
"tooltip": "Display name of the weapon"
},
{
"name": "Damage",
"type": "float",
"category": "Stats",
"editAnywhere": true,
"defaultValue": "10.0f",
"tooltip": "Base damage"
}
]
}generate_data_table
Generate a USTRUCT for use as a DataTable row structure.
Parameters:
structName(string, required): Name of the struct (e.g., 'FMyTableRow')module(string, optional): Module name. Default: 'YourProject'properties(array, required): Properties for the data table row
Example:
{
"structName": "FWeaponTableRow",
"module": "MyGame",
"properties": [
{
"name": "WeaponID",
"type": "int32",
"editAnywhere": true,
"tooltip": "Unique weapon identifier"
},
{
"name": "WeaponName",
"type": "FString",
"editAnywhere": true,
"tooltip": "Display name"
},
{
"name": "Damage",
"type": "float",
"editAnywhere": true,
"tooltip": "Base damage"
}
]
}Example Workflows
Basic Project Information
Initialize Project Information:
Use update_game_info to set: - name: "Adastrea" - genre: "Action RPG" - engine: "Unreal Engine 5" - status: "In Development"Add Team Information:
Use update_game_info to add team: - [{name: "Mittenzx", role: "Lead Developer"}]Access Project Info:
AI agents can read
game://project/inforesourceGet human-readable summary from
game://project/summaryUse get_game_info tool for programmatic access
Unreal Engine Project Analysis (Phase 1)
Scan an Unreal Project:
Use scan_unreal_project with: - project_path: "/path/to/MyUnrealProject"This will analyze:
.uproject file and configuration
All modules and their dependencies
Installed plugins
C++ classes (UCLASS, USTRUCT, UENUM, UINTERFACE)
Blueprint assets
Project assets
Search for Classes:
Use search_code with: - query: "Character"Returns all classes matching the search term
Analyze Class Hierarchy:
Use get_class_hierarchy with: - class_name: "AMyCharacter"Shows the full inheritance chain
Find Asset Usage:
Use search_assets with: - query: "Material"Lists all materials in the project
Access Unreal Resources:
Read
unreal://project/configfor complete project configurationRead
unreal://project/classesfor all C++ classesRead
unreal://project/assetsfor asset catalog
Live Editor Integration (Phase 2.1)
Check Director Connection:
Read unreal://editor/capabilities to verify: - Director is connected - Editor commands available - Python execution availableExecute Console Commands:
Use execute_console_command with: - command: "stat fps" Opens FPS counter in editorRun Python Scripts:
Use run_python_script with: - code: "import unreal\nprint(unreal.EditorLevelLibrary.get_all_level_actors())" Lists all actors in current levelGet Live Asset List:
Use list_assets_live with: - filter: "Blueprint" Gets real-time list of Blueprint assets from editorAccess Editor State:
Read
unreal://editor/statefor current editor contextGet current level, selected actors, viewport state
Use for context-aware suggestions
Actor & Component Management (Phase 2.3)
List Actors in Level:
Read unreal://level/actors to get: - All actors in current level - Actor locations, rotations, scales - Component hierarchiesSpawn New Actors:
Use spawn_actor with: - className: "AStaticMeshActor" - location: {x: 0, y: 0, z: 100} Creates a new static mesh actor at specified locationModify Actor Properties:
Use modify_actor_properties with: - actorPath: "/Game/Maps/MainLevel.MainLevel:PersistentLevel.Actor_0" - transform: {location: {x: 100, y: 200, z: 50}} Moves the actor to a new locationInspect Component Hierarchy:
Use get_actor_components with: - actorPath: "/Game/Maps/MainLevel.MainLevel:PersistentLevel.Actor_0" Returns tree structure of all componentsWork with Actor Templates:
# Save an actor as a template Use create_actor_template with: - actorPath: "/Game/Maps/MainLevel.MainLevel:PersistentLevel.MyActor" - templateName: "Lamp Post Standard" - category: "Environment" # List available templates Use list_actor_templates with: - category: "Environment" # Instantiate from template Use instantiate_template with: - templateId: "template_1234567890_abc123xyz" - location: {x: 500, y: 300, z: 0}
UE5.6+ Knowledge Database
Explore Available Systems:
Read unreal://knowledge/summary to get: - Total number of systems - Systems by version - All available tagsSearch for Specific Information:
Use query_ue_knowledge with: - query: "rendering" Returns all systems related to rendering (Lumen, Nanite, VSM)Get Detailed System Info:
Use get_ue_system with: - systemId: "gameplay-ability-system" Returns complete details including features, best practices, and referencesFind Systems by Category:
Use get_ue_systems_by_tag with: - tag: "networking" Returns all networking-related systemsDiscover Related Systems:
Use get_related_ue_systems with: - systemId: "animation-system" Returns related systems like gameplay-framework and metahuman-system
Intelligent Code Generation (Phase 3.1)
Generate a Basic Actor Class:
Use generate_uclass with: - className: "AMyPickupActor" - parentClass: "AActor" - module: "MyGame" - blueprintable: true - blueprintType: true Creates header and source files with proper UE conventionsGenerate a Blueprint-Compatible Component:
Use generate_blueprint_compatible_class with: - className: "UHealthComponent" - parentClass: "UActorComponent" - module: "MyGame" - properties: [ { name: "MaxHealth", type: "float", category: "Health", editAnywhere: true, blueprintReadWrite: true, defaultValue: "100.0f" }, { name: "CurrentHealth", type: "float", category: "Health", blueprintReadOnly: true } ] - functions: [ { name: "TakeDamage", returnType: "void", parameters: [{ name: "Amount", type: "float" }], category: "Health", blueprintCallable: true } ] Creates a fully Blueprint-integrated componentGenerate Common Pattern Classes:
# Generate a GameMode Use generate_game_mode with: - className: "AMyGameMode" - module: "MyGame" # Generate a Character with health system Use generate_character_class with: - className: "APlayerCharacter" - module: "MyGame" # Generate an ActorComponent Use generate_actor_component with: - className: "UInventoryComponent" - module: "MyGame"Add Network Replication:
Use generate_replication_code with: - className: "AMyActor" - properties: [ { name: "Health", type: "float", replicationType: "Replicated" }, { name: "Score", type: "int32", replicationType: "ReplicatedUsing", repNotifyFunction: "OnRep_Score" } ] - rpcs: [ { name: "ServerDoAction", type: "Server", reliable: true, parameters: [{ name: "ActionID", type: "int32" }] } ] Generates GetLifetimeReplicatedProps and RPC implementationsCreate Data Assets:
Use generate_data_asset with: - className: "UWeaponDataAsset" - module: "MyGame" - properties: [ { name: "WeaponName", type: "FString", category: "Weapon" }, { name: "Damage", type: "float", category: "Stats", defaultValue: "10.0f" }, { name: "FireRate", type: "float", category: "Stats", defaultValue: "0.1f" } ] Creates a data asset class for configurationGenerate Data Table Structures:
Use generate_data_table with: - structName: "FWeaponTableRow" - module: "MyGame" - properties: [ { name: "WeaponID", type: "int32", tooltip: "Unique ID" }, { name: "WeaponName", type: "FString", tooltip: "Display name" }, { name: "Damage", type: "float", tooltip: "Base damage" }, { name: "WeaponMesh", type: "TSoftObjectPtr<UStaticMesh>", tooltip: "3D mesh asset" } ] Creates a struct for use in Data Tables
Data Storage
Project Information: Stored in
game-project-data.jsonin the package root directory. This file is automatically created when you first update project information.Actor Templates: Stored in
.adastrea/actor-templates.jsonin the project root directory. This file is automatically created when you create your first actor template.
GitHub Copilot Integration
Adastrea-MCP includes a pre-configured GitHub Copilot agent that can be deployed across all your Unreal Engine repositories for consistent, expert-level AI assistance.
Features
Expert UE5.6+ Knowledge: Comprehensive understanding of modern Unreal Engine systems
Epic Games Standards: Enforces official coding conventions and best practices
MCP Tool Integration: Automatically uses Adastrea-MCP tools for project analysis
Smart Context Awareness: Understands C++, Blueprints, and their interactions
Multi-Repository Support: Deploy once, use across all your Unreal projects
Quick Start
Option 1: Single Repository
Copy the agent configuration to your Unreal project:
# From your Unreal project root
mkdir -p .github/agents
# Replace /path/to/your/Adastrea-MCP with actual path
cp /path/to/your/Adastrea-MCP/.github/agents/unreal-engine.md .github/agents/Option 2: Organization-Wide (Recommended)
Deploy across all repositories in your organization:
Create or use your organization's
.githubrepositoryCopy agents to the
agents/directoryAll organization repositories automatically get access
See .github/agents/README.md for detailed deployment instructions and usage examples.
Using the Agent
In your IDE with GitHub Copilot:
@unreal_engine Create a health component with replication
@unreal_engine How do I implement Lumen in my level?
@unreal_engine Optimize this actor for multiplayerThe agent will:
Follow Epic Games coding standards
Use MCP tools to understand your project
Query the knowledge database for best practices
Generate production-ready code
Provide context-aware suggestions
Example Workflows
Creating Actor Classes:
@unreal_engine I need a character with health, stamina, and sprint abilityBlueprint Integration:
@unreal_engine Make this C++ function callable from BlueprintsPerformance Optimization:
@unreal_engine This actor is causing performance issues [paste code]System Implementation:
@unreal_engine Implement a quest system with save/load supportFor complete documentation, see GitHub Copilot Agent Guide.
Benefits for AI Agents
When agents have access to this MCP server, they can:
Understand the complete context of your game project
Make informed suggestions based on your tech stack
Respect your project's architecture and conventions
Track progress against milestones
Work consistently with your team's structure and roles
Development
Build
npm run buildWatch Mode
npm run watchRoadmap
We're on a mission to build the world's best Unreal Engine MCP server! Our comprehensive roadmap includes:
Phase 1: ✅ Foundation Enhancement - Deep Unreal project understanding (COMPLETED)
Phase 2: ✅ Deep UE Integration - Leveraging Adastrea-Director plugin for real-time editor interaction (COMPLETED: 2.1, 2.2, 2.3)
Phase 3: 🔄 AI-Enhanced Tools - Intelligent code generation and refactoring (COMPLETED: 3.1, IN PROGRESS: 3.2, 3.3)
Phase 4: 📋 Advanced Ecosystem - Multi-project support, marketplace integration (PLANNED)
Phase 5: 📋 Intelligence & Automation - Semantic understanding and predictive assistance (PLANNED)
🎉 Major Achievements:
✅ 30+ MCP tools for comprehensive UE development
✅ 15+ MCP resources for project data access
✅ Live UE Editor integration via Adastrea-Director
✅ Complete Blueprint interaction system
✅ Actor spawning and template management
✅ Intelligent C++ code generation (8 tools)
✅ UE5.6+ Knowledge Database with 12+ systems
✅ GitHub Copilot Agent for multi-repo deployment
📋 View Full Roadmap for detailed plans, timelines, and contribution opportunities.
Integration with Other MCP Servers
Adastrea-MCP can work alongside other MCP servers to provide comprehensive Unreal Engine development assistance.
Integration with Adastrea-Director
Adastrea-MCP works seamlessly with Adastrea-Director, a comprehensive AI-powered development assistant that provides:
UE Editor Plugin with dockable AI assistant panel (Weeks 1-6 complete)
Autonomous Agents (P3 Complete) for performance profiling, bug detection, and code quality monitoring
UE Python API Integration with 25+ tests for asset operations, actor management, and editor automation
Built-in MCP Server with 84+ tests for AI agent access to Unreal Engine
RAG System for intelligent documentation understanding
Planning Agents for autonomous task decomposition and goal analysis
Python Backend with LLM integration (Google Gemini, OpenAI)
Complementary Roles:
Adastrea-MCP: Static analysis, code generation, UE5.6+ knowledge database (37 tools, 13 resources)
Adastrea-Director: Runtime execution, autonomous monitoring, AI-assisted planning, live editor integration
Together, they form a complete AI-assisted game development ecosystem. Director's built-in MCP server handles runtime operations while Adastrea-MCP provides comprehensive static analysis and code scaffolding capabilities.
📖 Setup Guide: See docs/guides/DUAL_SERVER_GUIDE.md for detailed instructions on using both servers together.
Integration with VibeUE
Adastrea-MCP can be connected as an external MCP server to VibeUE, an AI-powered Unreal Engine plugin (UE 5.7+) that brings AI directly into the editor:
In-Editor AI Chat: Natural language control of Unreal Engine
27 Built-in Tools: Blueprint lifecycle, UMG widgets, materials, actors, Python, filesystem
Real-time Manipulation: Create/modify Blueprints, widgets, materials instantly
External MCP Support: Connect Adastrea-MCP via
vibeue.mcp.jsonconfiguration
Complementary Roles:
Adastrea-MCP: Offline analysis, C++ code generation, UE5.6+ knowledge, project validation
VibeUE: In-editor real-time Blueprint/widget creation, material management, actor spawning
📖 Setup Guide: See docs/integration/VIBEUE_INTEGRATION.md for detailed integration instructions and workflows.
Contributing
We welcome contributions! Whether you're fixing bugs, adding features, improving documentation, or testing with your Unreal Engine projects, your help is valuable. Check out our ROADMAP.md to see where you can contribute.
License
MIT
Available Tools
44 toolsadd_blueprint_functionB
Create a new function in a Blueprint (requires Adastrea-Director integration)
| Name | Required | Description | Default |
|---|---|---|---|
| function | Yes | Function definition | |
| blueprint_path | Yes | Relative path to the Blueprint asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action and the integration requirement, but fails to mention side effects, permissions, whether the operation is reversible, or what happens on failure. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. However, it is under-specified, which slightly reduces the structure score as it lacks meaningful elaboration beyond the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested objects and no annotations or output schema, the description is too minimal. It provides only a purpose statement and a prerequisite, leaving out critical context about behavior, prerequisites for use, return values, and operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema fully documents both parameters including nested function properties. The description adds no additional parameter-specific information, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Create a new function in a Blueprint.' This distinguishes it from sibling tools like add_blueprint_variable or modify_blueprint_property, and the addition of the integration requirement adds context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only mentions a prerequisite ('requires Adastrea-Director integration'), but does not explain scenarios where this tool is preferred or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_blueprint_variableA
Add a new variable to a Blueprint (requires Adastrea-Director integration)
| Name | Required | Description | Default |
|---|---|---|---|
| variable | Yes | Variable definition | |
| blueprint_path | Yes | Relative path to the Blueprint asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the integration requirement but omits other behavioral traits such as side effects (e.g., modifying the Blueprint asset), permissions needed, whether changes are reversible, or the return value. This is insufficient for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with a parenthetical requirement. No unnecessary words, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested object parameters, no output schema) and lack of annotations, the description is minimally viable. The schema covers parameters, and the integration requirement is mentioned, but it lacks broader context about behavior, errors, or side effects that an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are fully documented in the schema. The description does not add any additional semantic meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Add a new variable to a Blueprint', specifying the verb and resource. It distinguishes from sibling tools like add_blueprint_function and modify_blueprint_property by being specific to variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the purpose: use when adding a variable to a Blueprint. The description also mentions a prerequisite ('requires Adastrea-Director integration') which provides context. However, it does not explicitly contrast with alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_game_infoB
Clear all game project information and start fresh
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be set to true to confirm deletion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing that this is a destructive operation. While 'Clear all' signals destructiveness, it doesn't explain reversibility, what exactly counts as 'game project information,' or what happens to existing data after the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. 'Clear all game project information and start fresh' delivers the core message efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one boolean parameter, full schema coverage), but as a destructive mutation with no annotations and no output schema, the description leaves gaps about consequences and post-deletion state. It doesn't mention whether cleared data can be recovered or when the agent should use this reset operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the confirm parameter already documented as 'Must be set to true to confirm deletion.' The description adds no additional parameter semantics beyond the schema's existing coverage, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Clear') with a clear resource ('all game project information'), making the purpose unambiguous. It naturally distinguishes itself from sibling tools like get_game_info and update_game_info by signaling a full reset rather than retrieval or modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'and start fresh' implies the tool is for resetting the project state, but the description provides no explicit guidance on when to choose this over alternatives like update_game_info or delete_actor_template. It also doesn't state prerequisites or exclusions (e.g., that the operation must be confirmed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_actor_templateB
Save an actor as a reusable template
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional tags for the template | |
| category | No | Optional category for organization | |
| actorPath | Yes | Path to the actor to save as template (requires Adastrea-Director for live actors) | |
| description | No | Optional description of the template | |
| templateName | Yes | Name for the template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states 'Save an actor as a reusable template' without mentioning side effects, permission requirements, overwrite behavior, or what happens if the actor path is invalid. The schema adds one prerequisite, but the description contributes minimal behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb and object, and contains no wasted words. It is concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and is part of a large sibling set, the description is under-specified. It does not explain return values, when to use the tool, or important behavioral caveats. The schema covers parameter meanings but the overall description lacks essential context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all five parameters documented in the input schema. The description adds no parameter-specific detail, so the baseline of 3 applies. It does not need to compensate for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Save') with a clear resource ('actor') and outcome ('reusable template'). It distinguishes itself from sibling tools like list_actor_templates and delete_actor_template by focusing on creation of a template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as instantiate_template or modify_actor_properties. The schema includes a prerequisite note about Adastrea-Director for live actors, but the description itself offers no usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_actor_templateB
Delete an actor template
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | ID of the template to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. However, it only restates the action without explaining consequences such as permanence, side effects on dependent entities, or required permissions. This is a minimal addition beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear, and front-loaded sentence with no unnecessary words. It is appropriately concise for a simple delete operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter deletion tool with fully documented schema, the description is minimally viable. However, it lacks context about the destructive nature's implications (e.g., irreversibility, cascading effects) and any return values, which would be helpful for an agent to fully understand the tool's impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the templateId parameter with 100% coverage ('ID of the template to delete'). The description adds no additional meaning to the parameter, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' and resource 'actor template', clearly distinguishing it from sibling tools like create_actor_template and list_actor_templates. The action and target are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions under which deletion is appropriate. It simply states the action without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_console_commandA
Execute a console command in the Unreal Engine Editor (requires Adastrea-Director to be running)
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Console command to execute (e.g., 'stat fps', 'ke * list') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions a prerequisite (Adastrea-Director running), which is useful, but it does not disclose potential side effects, whether the command could be destructive, or what output/return behavior to expect. Since console commands can mutate editor state, this omission is notable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is concise and unambiguous. Every word contributes value: the action, the scope, and a critical prerequisite. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple single-parameter schema, and the description states its purpose and prerequisite. However, with no output schema, the description does not explain execution results or potential consequences, which leaves some ambiguity for an agent selecting the tool. It is minimally complete for basic selection but lacks depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of the single 'command' parameter with a clear description and examples. The tool description itself adds no parameter-specific details, but the schema already covers this, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute a console command in the Unreal Engine Editor', identifying the specific verb (execute) and resource (console command in Unreal). The prerequisite 'requires Adastrea-Director to be running' adds context that helps distinguish it from other tools. This differentiates it clearly from siblings like run_python_script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a UE console command needs to be executed, but it does not explicitly state when to use this tool over alternatives or provide exclusions. The prerequisite is mentioned but not presented as a decision guideline. This is adequate but lacks explicit alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_code_metadataA
Extract detailed metadata from C++ code including classes, functions, properties, enums, structs with their comments and specifiers. Useful for analysis and custom documentation generation.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the C++ file to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In the absence of annotations, the description carries the full burden. It does specify the expected content (metadata types) and implies a read-only operation via the verb 'extract', but it does not explicitly state that no modifications are made, nor does it describe error handling or return format. This is a moderate level of disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, with the core function stated upfront and a secondary use-case sentence. Every word adds value, with no redundant information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter and no output schema, the description covers the purpose, target language, metadata categories, and common use cases. It is missing details about output formatting or failure modes, but these are not critical for a simple extraction tool with one required input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a complete description of the single parameter (file_path) with a clear explanation. The tool description adds no additional parameter-specific details, so the high schema coverage warrants a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific and descriptive verb, 'Extract', paired with the resource, 'C++ code', and enumerates the exact metadata categories (classes, functions, properties, enums, structs). This clearly distinguishes it from sibling tools like search_code or get_class_hierarchy, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'Useful for analysis and custom documentation generation,' providing clear context for when to use it. However, it does not explicitly mention alternative tools or exclusion cases, which would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_class_usageB
Find all usages of a specific C++ class in the project
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | Name of the class to find usages for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only restates the core action ('find all usages') and does not elaborate on side effects, whether a prior scan is required, performance characteristics, or what counts as a usage. The single sentence is too minimal to cover these aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff or redundancy. It efficiently communicates the essential purpose, making every word count.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity (one parameter, no output schema, no annotations), the description leaves significant gaps. It does not explain what 'usages' means (e.g., references, includes, dependencies), what the return format is, or any prerequisites. An agent cannot predict the tool's output or side effects from the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter class_name, so the baseline is 3. The description adds a minor clarification ('C++ class') that is not explicitly in the schema, but it largely duplicates the schema description without providing additional meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('find'), resource ('C++ class'), and scope ('in the project'). It distinguishes from sibling tools like search_code (generic search) and get_class_hierarchy (hierarchy traversal) by focusing on 'usages'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to locate references to a C++ class, but it does not explicitly state when to use this tool over alternatives or mention exclusions. Since the purpose is narrow, the usage scenario is inferable, but no explicit guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_actor_componentC
Generate an ActorComponent class for reusable functionality
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module name. Default: 'YourProject' | |
| className | Yes | Name of the ActorComponent class (e.g., 'UMyComponent') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing side effects and behavior. It only says 'Generate an ActorComponent class', but does not clarify whether this writes to disk, modifies the project, requires an active Unreal project, overwrites existing files, or what the output format is. This is a generation tool with potentially mutating behavior, and the description is silent on those aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It immediately communicates the core action and resource. 'For reusable functionality' is a brief purpose clause, but not wasteful. It is concise and well-structured for such a short description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a code generation tool with 2 parameters, no output schema, and no annotations, the description is undersized. It fails to explain the generation context (e.g., C++ vs Blueprint, side effects, project requirements, or what the generated component contains). The schema fully covers parameters, but the overall tool behavior remains ambiguous, making the description inadequate for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'className' and 'module' have descriptive text with an example format. The tool description adds no parameter semantics beyond the schema, so the baseline of 3 applies. The className example 'UMyComponent' is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an ActorComponent class, with the verb 'Generate' and resource 'ActorComponent class'. It adds the purpose 'for reusable functionality', which provides context but is generic. It distinguishes from sibling generation tools that target other class types (game mode, character, etc.), though it doesn't explicitly differentiate from other generate_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool vs alternatives like generate_uclass or generate_blueprint_compatible_class. There are no prerequisites, no exclusions, and no mention of when not to use it. The only hint is the vague 'for reusable functionality', which does not effectively steer the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_blueprint_compatible_classB
Generate a Blueprint-compatible C++ class with properties and functions exposed to Blueprints
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module name. Default: 'YourProject' | |
| className | Yes | Name of the class | |
| functions | No | Functions to expose to Blueprints | |
| properties | No | Properties to expose to Blueprints | |
| parentClass | No | Parent class. Default: 'UObject' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the generation outcome without mentioning side effects like file creation, project modification, or code insertion. The mutation of the project is implied but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, crisp sentence that front-loads the purpose without filler. Every word contributes to understanding the core function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, nested arrays for functions/properties, no output schema or annotations), the description is too sparse. It omits details about code generation behavior, default values, parent class handling, and potential side effects, leaving the agent without enough context to predict outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all 5 parameters with 100% coverage, so the baseline is 3. The description adds minimal value by referencing properties and functions exposed to Blueprints, but it does not clarify parameter formats, types, or relationships beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a Blueprint-compatible C++ class, naming the resource and the specific features (properties and functions exposed to Blueprints). This distinguishes it from sibling generators like generate_uclass or generate_actor_component by emphasizing Blueprint compatibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as generate_uclass or add_blueprint_function. There are no prerequisites, exclusions, or context clues indicating the intended scenario for using this generator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_character_classB
Generate a Character class with health system and common functionality
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module name. Default: 'YourProject' | |
| className | Yes | Name of the Character class (e.g., 'AMyCharacter') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states the output type and omits any details about side effects, file modifications, project structure requirements, or the exact scope of 'common functionality.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately conveys the tool's purpose. It is appropriately sized and front-loaded with the core action and target, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a generation tool with no output schema or annotations, the description is under-specified. It fails to detail what 'common functionality' includes, how the health system is implemented, or what the agent should expect as a result, leaving significant gaps for decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full descriptions for both parameters (className and module), so the baseline is 3. The description adds no extra meaning to the parameters beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a Character class with a health system and common functionality, using the specific verb 'generate' and a specific resource. This distinguishes it from sibling tools like generate_game_mode or generate_actor_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or preferred scenarios, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_data_assetB
Generate a UDataAsset class for storing configuration data
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module name. Default: 'YourProject' | |
| className | Yes | Name of the DataAsset class (e.g., 'UMyDataAsset') | |
| properties | Yes | Properties for the data asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure, yet it only states 'Generate' without noting side effects, file writes, overwriting behavior, or output format. This is a significant gap for a code-generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a nested properties array and no output schema, yet the description explains only the basic purpose. Missing details about generated class structure, file destination, or property formatting leave the agent under-informed for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter names and descriptions are already documented. The description adds no additional meaning about parameters, only a general sense of configuration storage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the specific resource ('UDataAsset class') and the action ('Generate'), making the core purpose clear. However, it does not explicitly differentiate from siblings like 'generate_data_table' or 'generate_uclass', relying primarily on the specific asset type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for storing configuration data' implies a typical use case, but offers no explicit guidance on when to prefer this over sibling generation tools. No exclusions or alternative tool references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_data_tableA
Generate a USTRUCT for use as a DataTable row structure
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module name. Default: 'YourProject' | |
| properties | Yes | Properties for the data table row | |
| structName | Yes | Name of the struct (e.g., 'FMyTableRow') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only states the generation action without clarifying whether the tool writes to disk, returns a string, or requires a specific project context. This is a significant gap for a code generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that gets straight to the point without fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set and full schema coverage, the description is adequate but not rich. It lacks explicit differentiation from sibling generators and does not describe the return format, which the missing output schema would otherwise clarify.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides complete descriptions for all three parameters (module, properties, structName) with 100% coverage, so the description adds no parameter information. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a USTRUCT specifically for DataTable row structures, using the verb 'generate' and identifying the concrete deliverable. This distinguishes it from sibling tools like generate_uclass or generate_actor_component that target different code generation needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: whenever a struct is needed as a DataTable row. However, it does not explicitly mention alternatives or 'when not to use' scenarios, though the purpose is specific enough to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_documentationA
Auto-generate comprehensive documentation from C++ code including comments, metadata, classes, functions, and properties. Creates markdown documentation with detailed API information.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title for the generated documentation. Default: 'Unreal Engine Documentation' | |
| file_path | Yes | Absolute path to the C++ header file (.h) to generate documentation for | |
| includePrivate | No | Include private members in documentation. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It reveals that the tool creates markdown documentation but does not mention potential side effects (e.g., file writes, overwriting), prerequisites (e.g., being in an Unreal Engine project), or limitations. This is a minimal but acceptable level of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core action and resource. No wasted words, and key output details (markdown, API information) are included efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the relatively simple tool (3 params, no output schema), the description is mostly complete: it states the source (C++ code), output format (markdown), and content scope. It lacks details about output location or environment-specific constraints, but these are not critical for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the three parameters. The description adds no additional meaning about parameters; it only describes the tool's overall purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Auto-generate comprehensive documentation from C++ code' with specific content types (comments, metadata, classes, functions, properties). It distinguishes itself from sibling tools that generate code templates or diagrams.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for generating markdown documentation from C++ code. However, it does not explicitly mention when not to use it or name alternatives, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_game_modeC
Generate a GameMode class following UE best practices
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module name. Default: 'YourProject' | |
| className | Yes | Name of the GameMode class (e.g., 'AMyGameMode') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only says it 'generates' a class and claims adherence to best practices, but does not explain side effects (e.g., file writes, project modifications), permissions needed, or what output the agent can expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, the phrase 'following UE best practices' is somewhat hollow and could be replaced with more concrete details, but as written it is still appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool with no output schema and no annotations, the description is insufficient. It does not explain what a GameMode class entails in Unreal Engine, what files or code are generated, or how this integrates with the user's project. The agent would lack crucial context to invoke and verify the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters (module and className) with 100% coverage, so the baseline is 3. The description adds no additional semantics about the parameters, such as naming conventions or how they influence generation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a GameMode class, using a specific verb ('Generate') and resource ('GameMode class'). However, it does not distinguish itself from sibling generation tools like generate_character_class or generate_actor_component beyond naming the class type, and 'following UE best practices' is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as generate_character_class or generate_actor_component. The description provides no context about prerequisites, project setup, or when a GameMode class is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_integration_guideA
Generate a comprehensive integration guide for a system showing how to integrate it into an Unreal Engine project with setup steps, code examples, and best practices.
| Name | Required | Description | Default |
|---|---|---|---|
| file_paths | Yes | Array of absolute paths to C++ header files that make up the system | |
| system_name | Yes | Name of the system (e.g., 'Inventory System', 'Combat System') | |
| targetAudience | No | Target audience level: 'beginner', 'intermediate', or 'advanced'. Default: 'intermediate' | |
| includeBlueprints | No | Include Blueprint integration information. Default: true | |
| includeCodeExamples | No | Include C++ code examples. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states the action ('generate a guide') without mentioning whether it reads the provided header files, what output format it produces (e.g., Markdown, text), whether it writes to disk, or any side effects. This leaves significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose and includes relevant details (setup steps, code examples, best practices) without any fluff. It is efficiently sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too brief for a 5-parameter generation tool with no output schema. It omits crucial context such as the expected output format, dependency on valid header file paths, whether an existing Unreal project is required, and any potential read-only or write behavior. This leaves the agent uncertain about preconditions and return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for all parameters. The tool description adds minimal parameter-related context, referencing 'setup steps, code examples, and best practices' which loosely maps to includeCodeExamples and includeBlueprints, but does not meaningfully enhance the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate') and resource ('comprehensive integration guide for a system') and clearly distinguishes itself from sibling code-generation and documentation tools by focusing on integration into an Unreal Engine project with setup steps, code examples, and best practices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the primary context clear: it is for generating an integration guide for an Unreal Engine project. However, it does not explicitly name alternatives or provide exclusion criteria, so it misses the full 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_replication_codeB
Generate network replication code for properties and RPCs
| Name | Required | Description | Default |
|---|---|---|---|
| rpcs | No | Remote Procedure Calls to generate | |
| className | Yes | Name of the class to add replication to | |
| properties | Yes | Properties to replicate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, and the description only states the action without disclosing side effects, output format, whether it modifies project files, or any requirements. This leaves significant behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise and front-loaded with the verb and object. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a code generation tool with no output schema and no annotations, the description fails to explain the outcome (e.g., generated code returned in response, file modifications, or compilation steps). This is a critical gap given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema, but does not need to compensate since the schema is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Generate' with the specific resource 'network replication code' for 'properties and RPCs'. This is specific enough to distinguish it from sibling generation tools like generate_uclass or generate_actor_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies usage in networking contexts, but there is no explicit guidance on when to choose this over alternatives, nor any exclusions. The user must infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_system_diagramB
Create a system architecture diagram in Mermaid format showing class relationships, inheritance, and dependencies. The diagram can be rendered in markdown viewers.
| Name | Required | Description | Default |
|---|---|---|---|
| maxDepth | No | Maximum depth for relationships. Default: 3 | |
| file_paths | Yes | Array of absolute paths to C++ header files to include in the diagram | |
| maxItemsPerClass | No | Maximum number of properties/functions to show per class. Default: 5 | |
| includeInheritance | No | Include inheritance relationships. Default: true | |
| includeDependencies | No | Include dependency relationships. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing side effects, inputs, and output. It mentions the diagram is in Mermaid format and can be rendered in markdown viewers, but does not state that it reads C++ header files, whether it is read-only, or how invalid paths are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and the second sentence adds a useful detail about markdown rendering. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description implicitly indicates the output is Mermaid code. It does not mention the required file_paths parameter or that it focuses on C++ headers, though these are covered by the schema. Overall, it provides enough context to understand the tool's function, but lacks explicit mention of return value and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a system architecture diagram in Mermaid format, showing class relationships, inheritance, and dependencies. This distinguishes it from sibling tools like get_class_hierarchy (raw hierarchy data) or generate_documentation (documentation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention any prerequisites, exclusions, or alternative tools. It only gives a high-level purpose without situational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_uclassB
Generate a UClass following Unreal Engine conventions. Creates header and source files for a basic C++ class.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Config category (e.g., 'Game', 'Engine') | |
| module | No | Module name. Default: 'YourProject' | |
| abstract | No | Whether this is an abstract class | |
| className | Yes | Name of the class (e.g., 'AMyActor', 'UMyObject') | |
| parentClass | No | Parent class (e.g., 'AActor', 'UObject'). Default: 'UObject' | |
| blueprintType | No | Whether this class can be used as a Blueprint type | |
| blueprintable | No | Whether Blueprints can be derived from this class |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of disclosing side effects. It mentions file creation but does not disclose potential overwrites, project prerequisites, naming conventions, or any mutation of the project structure. Given the tool generates code, these omissions are significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and contains no filler. Every word contributes to conveying the tool's purpose and output, making it appropriately concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the schema documenting parameters, the description lacks critical contextual information for a code-generation tool: no mention of required project state, output locations, error handling, or return values. With no output schema and no annotations, the description is insufficient for an agent to fully anticipate tool behavior in a real workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of all 7 parameters with descriptions and examples, so the schema carries the semantic weight. The description adds no extra context about parameter interactions or generated code structure, but baseline 3 is appropriate since the schema is fully documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a UClass and creates header/source files, with a specific scope of 'basic C++ class' and 'following Unreal Engine conventions.' This distinguishes it from sibling generation tools like generate_game_mode or generate_character_class, which target more specialized class types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as generate_blueprint_compatible_class or other specialized generators. The description implies usage for basic UClass creation but does not provide exclusion criteria or decision context, leaving the agent without clear selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_actor_componentsB
Get component hierarchy for an actor
| Name | Required | Description | Default |
|---|---|---|---|
| actorPath | Yes | Full path to the actor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavior. It merely states the action without mentioning side effects, error handling, or what exactly is returned. While 'Get' implies a read operation, no explicit behavioral details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is highly concise and well-structured for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description should explain what the returned hierarchy looks like or any important constraints. It provides the concept but lacks specifics about the return format and edge cases, making it viable but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (actorPath is described as 'Full path to the actor'), so the schema already documents the parameter. The description adds no additional semantic information beyond the schema, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'component hierarchy' for an actor, clearly distinguishing it from similar siblings like get_class_hierarchy, which targets class hierarchies rather than actor components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool instead of alternatives such as get_class_hierarchy or inspect_blueprint. The description lacks any context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_dependenciesC
Get dependencies for a specific asset (placeholder for future implementation)
| Name | Required | Description | Default |
|---|---|---|---|
| asset_path | Yes | Path to the asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. The placeholder warning hints at incomplete implementation but does not disclose actual runtime behavior such as return values, errors, or side effects. This is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, immediately conveying the action and adding the placeholder note. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a minimal description with no output schema or annotations, it leaves many questions unanswered: what dependencies are, return format, recursion, error behavior. The placeholder note mitigates but does not compensate for the lack of context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single asset_path parameter, and the description does not add any semantic details beyond the schema. Baseline of 3 applies because the schema handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves dependencies for a given asset, using a specific verb and resource. However, the '(placeholder for future implementation)' caveat lowers confidence about current functionality, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus sibling tools like search_assets or list_assets_live. There is no mention of context, alternatives, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blueprint_functionsA
List all functions in a Blueprint with their signatures, parameters, and properties
| Name | Required | Description | Default |
|---|---|---|---|
| blueprint_path | Yes | Relative path to the Blueprint asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It indicates a read-only operation ('List') but does not mention error behavior, prerequisites (e.g., valid project path), or output format, leaving important behavioral traits unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the action and avoids redundancy, earning the maximum score for conciseness and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the core purpose and return content, the lack of an output schema and the absence of details about scope (e.g., inherited functions, sorting) or error handling leaves the description minimally sufficient but not fully complete for a tool with no structured output specification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the single parameter blueprint_path as a relative path to the Blueprint asset (100% coverage), and the description does not add additional semantic detail beyond what the schema already provides, so it meets the baseline for schema-covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'functions in a Blueprint' and specifies the return contents (signatures, parameters, properties), distinguishing it from sibling tools like get_blueprint_variables which list variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving function definitions, but it does not explicitly state when to choose it over alternatives like inspect_blueprint or search_blueprint_nodes, nor does it provide exclusions or context about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blueprint_variablesA
List all variables in a Blueprint with their types, categories, and properties
| Name | Required | Description | Default |
|---|---|---|---|
| blueprint_path | Yes | Relative path to the Blueprint asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosure. The word 'List' indicates a read-only operation, and the description mentions what information is returned, but it does not disclose potential limitations, error behavior, or whether the variable values are also returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the purpose without any waste. It earns its place and is easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter listing tool, the description provides sufficient context: the operation, the resource, and the output details. It is slightly limited by the lack of an output schema and absence of any guidance on related tools, but the core information is complete enough for straightforward use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the only parameter, 'blueprint_path', as 'Relative path to the Blueprint asset', giving 100% coverage. The description adds no additional meaning about path format, resolution, or examples beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('all variables in a Blueprint') and specifies the scope (types, categories, properties). It clearly distinguishes from sibling tools like get_blueprint_functions, which lists functions rather than variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the description: it is for retrieving variable definitions from a Blueprint. However, it does not explicitly state when not to use this tool or mention alternatives such as get_blueprint_functions, inspect_blueprint, or add_blueprint_variable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_class_hierarchyA
Get the inheritance hierarchy for a specific C++ class
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | Name of the class |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read-only operation, and no side effects are suggested, which is appropriate for a simple getter. However, it does not disclose the output format, failure behavior (e.g., unknown class), or whether the hierarchy includes both ancestors and descendants, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose without any redundant wording or filler. It is immediately comprehensible and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and high schema coverage, the description is mostly complete. However, the absence of an output schema and annotations means the description should ideally clarify the return structure (e.g., list of parent classes, child classes, or both) and any project context requirements, which are currently unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema adequately describes the sole parameter 'class_name' with a simple 'Name of the class' (100% coverage). The description adds context by specifying 'C++ class' and 'inheritance hierarchy', but it does not clarify expected naming conventions (e.g., full path, case sensitivity) or the precise meaning of 'hierarchy' in terms of output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('inheritance hierarchy') for a specific target ('C++ class'), making the tool's function immediately clear. It also implicitly distinguishes itself from sibling query tools like 'find_class_usage' and 'inspect_blueprint' by focusing solely on class hierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. With several sibling tools that could also retrieve class-related information (e.g., 'find_class_usage', 'get_blueprint_functions'), explicit usage guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_infoB
Retrieve the current game project information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only says 'retrieve', implying a read-only operation, but gives no details about return format, error handling, or prerequisites (e.g., whether a project must be open).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no redundant words. It is appropriately sized for a simple getter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description is minimally sufficient but lacks important context. It does not specify what 'current game project information' includes or how the return value is structured, and it does not differentiate from similar siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema description coverage is trivially 100%. As per guidelines, a baseline of 4 is appropriate since no parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') and identifies the resource ('current game project information'), clearly stating the tool's function. However, it does not differentiate from the sibling tool 'get_live_project_info', which appears to serve a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'get_live_project_info' or 'get_ue_system'. There is no mention of context, exclusions, or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_project_infoA
Get live project information from the running Unreal Engine Editor via Adastrea-Director (prefers live data over cached)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It does disclose a key behavior—preferring live data over cached—and mentions the dependency on the running editor. However, it does not specify safety (read-only), error behaviors, or return format details, leaving some gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys the essential purpose and the live-data preference without any fluff. Every word adds value, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with zero parameters and no output schema, but the description's 'project information' is vague and could mean many things. It does not describe the structure or types of information returned, which is a notable gap given the absence of an output schema. More specificity about the return value would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (0 parameters), and schema description coverage is 100%, so the schema already exhaustively documents parameters. The description correctly avoids adding irrelevant parameter details. Baseline 4 applies for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Get'), resource ('live project information'), and source ('running Unreal Engine Editor'). It also distinguishes itself by noting the preference for live data over cached, which sets it apart from potential siblings like get_game_info. The verb+resource structure is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when live data is needed over cached) but does not explicitly name alternatives or provide exclusion criteria. It gives a contextual hint about the live-vs-cached tradeoff but lacks clear 'use this instead of X' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ue_systemB
Get detailed information about a specific Unreal Engine system by ID
| Name | Required | Description | Default |
|---|---|---|---|
| systemId | Yes | System ID (e.g., 'rendering-system', 'gameplay-framework', 'animation-system') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'get detailed information.' It does not specify what 'system' refers to, whether data comes from a live project or a knowledge base, what happens if the ID is not found, or any other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It effectively communicates the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter, the description is minimally adequate, but it lacks context about what constitutes a 'system' and how this tool relates to other knowledge-oriented tools like query_ue_knowledge or get_ue_systems_by_tag. No output schema means additional context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully covers the single parameter systemId with descriptive examples, so the baseline is 3. The description adds no additional parameter semantics beyond 'by ID,' which is already evident from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving detailed information about a specific Unreal Engine system by ID. The verb 'get' and resource 'system' are precise, and the 'by ID' qualifier distinguishes it from siblings like get_ue_systems_by_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_ue_systems_by_tag or get_related_ue_systems. It only states the mechanism (by ID) but does not provide context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ue_systems_by_tagA
Get all Unreal Engine systems that match a specific tag
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag to filter by (e.g., 'rendering', 'gameplay', 'animation', 'networking') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The phrase 'Get all' implies a read operation and suggests a list return, which is transparent. However, it does not explicitly confirm read-only behavior, mention absence of side effects, or describe potential large result sets. It adds some behavioral context but not rich detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action, resource, and filter in under 10 words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter, no output schema, simple list operation), the description is mostly complete. It conveys the core purpose and the filter parameter is well documented in the schema. However, it lacks any sibling differentiation or usage guidance, which is a minor gap for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the 'tag' parameter already has a clear description with examples. The tool description simply references 'a specific tag' and adds no new meaning beyond the schema. Baseline of 3 applies because the schema handles parameter semantics well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'Unreal Engine systems', with a specific filter by tag. It implicitly distinguishes itself from sibling tools like get_ue_system (by ID) and get_related_ue_systems (by relation) by specifying 'match a specific tag'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It doesn't mention default use cases, prerequisites, or how it contrasts with get_ue_system or get_related_ue_systems. The usage context is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_blueprintA
Get full Blueprint structure including variables, functions, graphs, and components
| Name | Required | Description | Default |
|---|---|---|---|
| blueprint_path | Yes | Relative path to the Blueprint asset (e.g., 'Blueprints/BP_Character.uasset') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It states what information is returned but does not explicitly confirm the operation is read-only or free of side effects. Although the verb 'Get' strongly implies a safe read, the description does not disclose potential performance costs or output format, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It front-loads the action and resource, then lists what is included, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one well-documented parameter, the description sufficiently covers the output scope by listing the major Blueprint components. However, the absence of an output schema and lack of detail about the structure's hierarchy or shape leave some room for ambiguity, so it does not reach a perfect 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the sole parameter blueprint_path is well described with a concrete example. The tool description adds no additional parameter-level detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('full Blueprint structure'). It explicitly enumerates the included contents (variables, functions, graphs, components), which distinguishes it from narrower sibling tools like get_blueprint_functions or get_blueprint_variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a comprehensive overview of a Blueprint is needed, but it does not explicitly contrast with alternatives or state when not to use it. It provides context ('full') but lacks explicit exclusionary guidance, resulting in a score of 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instantiate_templateA
Create an actor from a template (requires Adastrea-Director integration)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional custom name for the spawned actor | |
| scale | No | World scale for the actor | |
| folder | No | Level folder to place actor in | |
| location | No | World location to spawn the actor | |
| rotation | No | World rotation for the actor | |
| templateId | Yes | ID of the template to instantiate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of disclosing behavior. It only mentions the integration requirement, but does not disclose side effects, permissions, return values, or any destructive implications. For a creation tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core purpose and a key requirement without any wasted words. It is highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters including nested objects), lack of annotations, and no output schema, the description is too sparse. It does not mention what happens on success, failure modes, or return data, leaving the agent with insufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with each parameter documented. The description itself adds no extra parameter context beyond the schema, so it meets the baseline but does not enhance understanding of how the parameters interact or are used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create an actor') and the resource ('from a template'), which distinguishes it from sibling tools like spawn_actor (likely direct spawn) and create_actor_template (creates templates). It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite ('requires Adastrea-Director integration'), indicating when this tool is available and needed. However, it does not explicitly mention alternatives or when not to use it, though the purpose already differentiates it from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_actor_templatesC
List all available actor templates
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional tags filter | |
| category | No | Optional category filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral aspects but only states the action. It does not clarify that it is a read-only operation, what fields the returned templates contain, or how the optional filters interact with the 'all' claim, creating ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no fluff, which is appropriately front-loaded. However, it is slightly under-specified, missing useful context that could be added without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should explain what constitutes an actor template, the shape of the response, and how filtering works. The single clause leaves the agent with insufficient information for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (tags, category) are already described in the input schema with 100% coverage. The description adds no additional meaning about these filters, so it meets the baseline without enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'all available actor templates', making the operation clear. It distinguishes from sibling tools like create_actor_template and instantiate_template by focusing on the listing action, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no context on when to use this tool versus alternatives such as instantiate_template or get_actor_components. There is no mention of prerequisites or typical use cases, leaving the agent to infer the purpose from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assets_liveA
List assets from the running Unreal Engine Editor in real-time via Adastrea-Director (prefers live data over cached)
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional filter string to search for specific assets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It reveals that the tool operates on the running editor and has a preference for live over cached data, which are meaningful behavioral traits. However, it does not clarify fallback behavior if live data is unavailable or potential error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded. Every word contributes to explaining what the tool does and its key differentiator, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional parameter, no output schema), the description covers the core context: real-time operation from the running editor and a preference for live data. It lacks explicit details on output format or fallback behavior, but these are not critical for such a straightforward list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage for the single 'filter' parameter, so the description adds no extra parameter semantics. Baseline of 3 applies because the schema fully documents the parameter, and the description does not contradict or extend it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as listing assets from the running Unreal Engine Editor in real-time. It also distinguishes itself from similar tools like search_assets by explicitly stating a preference for live data over cached, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'prefers live data over cached' implies a use case for real-time asset state, but it does not explicitly name alternatives or state when not to use this tool. Usage context is communicated but not formalized with clear exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_actor_propertiesB
Modify properties of an existing actor in the level (requires Adastrea-Director integration)
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags to assign to the actor | |
| actorPath | Yes | Full path to the actor (e.g., '/Game/Maps/MainLevel.MainLevel:PersistentLevel.Actor_0') | |
| transform | No | Transform modifications | |
| properties | No | Properties to modify with their new values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action 'modify' and the integration requirement, but does not disclose whether the change is persistent, what happens if the actorPath is invalid, or any side effects. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with the verb and resource, followed by a parenthetical prerequisite. It is concise and efficient, though it omits some potentially useful context that could make it more informative without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested transform object, multiple property types) and the absence of both annotations and an output schema, the description is too minimal. It omits return behavior, error handling, and how the integration affects usage, leaving the agent to infer critical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all parameters (100% coverage), so the baseline is 3. The tool description adds no additional parameter-specific meaning beyond what the schema already states; it only repeats the general 'modify properties' concept.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Modify' and clearly identifies the resource as 'properties of an existing actor in the level'. This distinguishes it from sibling tools like 'spawn_actor' (creation) and 'modify_blueprint_property' (blueprint-level properties).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite ('requires Adastrea-Director integration') but does not explicitly state when to prefer this tool over alternatives or when not to use it. The usage context is implied by the tool's name and purpose, but no exclusions or alternative comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_blueprint_propertyA
Change the default value of a Blueprint variable (requires Adastrea-Director integration)
| Name | Required | Description | Default |
|---|---|---|---|
| new_value | Yes | New default value for the property | |
| property_name | Yes | Name of the property/variable to modify | |
| blueprint_path | Yes | Relative path to the Blueprint asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does add the integration requirement, which is a useful contextual signal. However, it does not disclose side effects, reversibility, whether the change propagates to instances, or potential failure modes, leaving significant behavioral ambiguity for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and includes the key prerequisite. It is free of redundancy and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with full schema coverage and no output schema, the description adequately covers the purpose and the prerequisite. It does not explain return values or errors, but the core usage is clear and sufficient for an agent to understand what the tool does and what inputs are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all three parameters (blueprint_path, property_name, new_value) with 100% coverage. The description adds no additional parameter semantics beyond what the schema already states, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Change the default value') and the target ('Blueprint variable'), distinguishing it from siblings like 'add_blueprint_variable' (adds new) and 'get_blueprint_variables' (reads). It also mentions a specific integration requirement, further clarifying its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a clear prerequisite ('requires Adastrea-Director integration') that tells the agent when the tool is available. However, it does not explicitly mention alternatives or when-not-to-use, though the context implies it is for existing blueprint variables rather than adding or inspecting them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_ue_knowledgeA
Search the UE5.6+ knowledge database for information about Unreal Engine systems, features, and best practices
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (keywords, system names, or tags) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the tool performs a search, implying a read-only operation, but it does not mention return format, pagination, result limits, or whether it returns snippets, summaries, or references. This is a significant gap for a tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundancy. It efficiently communicates the tool's purpose and scope, entirely appropriate for a search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple (one parameter, low complexity), the description does not clarify what the search returns or how results are structured, which is needed since there is no output schema. It also does not relate to sibling knowledge tools, leaving some contextual ambiguity. However, for a basic search action, the core function is adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the sole parameter 'query' is described as 'Search query (keywords, system names, or tags)'. The tool description adds no additional meaning to the parameter beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Search'), a resource ('UE5.6+ knowledge database'), and the scope ('Unreal Engine systems, features, and best practices'). This distinguishes it from sibling tools that focus on code, assets, actors, or blueprint operations, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs general Unreal Engine information, but it does not explicitly state when to use this tool versus alternatives like get_ue_systems_by_tag or get_related_ue_systems. No exclusions or alternative recommendations are provided, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_python_scriptB
Execute Python code in the Unreal Engine Editor (requires Adastrea-Director to be running)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python code to execute in the UE Editor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only notes the prerequisite and omits any mention of potential side effects, permissions, or safety implications of executing arbitrary code in the editor, leaving a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates both purpose and prerequisite without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Executing arbitrary Python code is a high-complexity, potentially destructive operation, yet the description provides no information about return values, error handling, or effects on the editor. With no output schema and no annotations, the description is insufficient for an agent to safely predict behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with a description that mirrors the tool description ('Python code to execute in the UE Editor'). The description adds no additional meaning about expected format, limits, or execution behavior, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies 'Execute Python code in the Unreal Engine Editor,' giving a precise verb and resource. The resource distinguishes it from sibling tools like execute_console_command, which handles console commands rather than Python scripts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating it executes Python code, but it does not explicitly compare with alternatives or state when not to use it. It mentions a prerequisite (Adastrea-Director running), but that is not a full usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_unreal_projectB
Perform a deep scan of an Unreal Engine project structure, analyzing .uproject files, modules, plugins, C++ classes, and assets
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | Absolute path to the Unreal Engine project directory (containing the .uproject file) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It does not state whether the scan is read-only, if it requires engine installation, what side effects exist, performance implications, or what the return value looks like. The list of analyzed elements is useful but insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence clearly states the action and scope. No wasted words; every element (uproject, modules, plugins, C++ classes, assets) adds specificity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one well-documented parameter and a clear purpose, but no output schema and no annotation. The description does not explain the return value, scan depth, or any limitations. It is minimally viable but leaves important contextual gaps for a 'deep scan' tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes project_path as an absolute path to the project directory containing the .uproject file, achieving 100% coverage. The description adds no additional parameter meaning beyond that, but the schema fully documents the param, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('scan') and resource ('Unreal Engine project structure') with concrete elements (uproject, modules, plugins, C++ classes, assets). It distinguishes from many siblings like get_blueprint_functions, but does not explicitly differentiate from validate_project_structure, which could overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It implies usage via 'deep scan' but does not state a specific scenario or contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_assetsA
Search for assets in the scanned Unreal project by name, type, or path
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (asset name, type, or path) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It confirms the search is a read operation, but provides no details on query behavior (e.g., substring vs exact match, case sensitivity), result format, or pagination. The description is too sparse to disclose meaningful behavioral traits beyond the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is direct and front-loaded. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one param and no output schema, the description covers the core action and scope, but it omits details about return values, query semantics, and relationship to the scan process. It is minimally viable but incomplete for an agent needing to anticipate results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the query parameter description already stating 'asset name, type, or path'. The tool description repeats this same information, adding no new meaning. Baseline 3 applies because the schema fully documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (Search) and resource (assets in scanned Unreal project), and lists search dimensions (name, type, or path). This distinguishes it from sibling tools like list_assets_live and search_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for scanned (non-live) projects via the word 'scanned', but it does not explicitly state when to use this tool versus alternatives like list_assets_live or search_blueprint_nodes. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_blueprint_nodesA
Find specific node types within a Blueprint (e.g., FunctionCall, Branch, ForLoop)
| Name | Required | Description | Default |
|---|---|---|---|
| node_type | No | Optional node type to search for (e.g., 'FunctionCall', 'Branch', 'ForLoop') | |
| blueprint_path | Yes | Relative path to the Blueprint asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description carries the full behavioral transparency burden since no annotations are present. The verb 'Find' implies a read-only search, but the description does not explicitly state that the tool makes no modifications, nor does it describe search traversal details (e.g., recursive or limited to top-level graph). It adds minimal context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action ('Find') and includes helpful examples. Every word earns its place, with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description should at least hint at what the tool returns (e.g., list of matching nodes, their locations, or a count). It does not, leaving the agent uncertain about the response format. The low complexity (2 parameters) is offset by this missing return-value information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for parameters is 100%, so the description adds little beyond the schema. The examples for node_type in the description are also present in the parameter's own description. There is no extra meaning provided, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find' and the resource 'specific node types within a Blueprint', with concrete examples (FunctionCall, Branch, ForLoop). This distinguishes it from sibling tools like get_blueprint_functions (which retrieves functions) or search_assets (which searches broader asset content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use when you need to locate particular node types inside a Blueprint. However, it does not explicitly mention alternatives or when not to use this tool, leaving differentiation to the agent's inference. No exclusions or comparisons to siblings are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeA
Search for C++ classes, structs, enums, or interfaces in the scanned Unreal project
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (class name, type, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the search is read-only, how results are returned, or any limitations (e.g., exact vs. partial matching). The mention of 'scanned project' adds some context but falls short of transparently describing the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose without any filler. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool, the description provides a clear scope but lacks critical context such as return format, behavioral details, or usage alternatives. Since there is no output schema and no annotations, the description should compensate more; it falls short of fully rounding out the tool's context, though it remains minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the 'query' parameter with 100% coverage, but the description adds valuable meaning by specifying the acceptable targets (C++ classes, structs, enums, interfaces). This clarifies what a valid query looks like beyond the generic schema text, adding meaningful semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for C++ classes, structs, enums, or interfaces in the scanned Unreal project. This specific verb+resource distinguishes it from sibling tools like search_assets (which searches assets) and find_class_usage (which finds usages), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to locate specific C++ code entities, and it mentions the prerequisite that the project must be scanned. However, it provides no explicit guidance on when-not-to-use or alternatives among the many sibling tools, so usage guidance is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spawn_actorB
Spawn a new actor in the current level (requires Adastrea-Director integration)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional custom name for the actor instance | |
| tags | No | Tags to assign to the actor | |
| scale | No | World scale for the actor | |
| folder | No | Level folder to place actor in | |
| location | No | World location to spawn the actor | |
| rotation | No | World rotation for the actor | |
| className | Yes | Actor class to spawn (e.g., 'AStaticMeshActor', '/Game/Blueprints/BP_Character.BP_Character_C') | |
| properties | No | Initial property values for the actor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only mentions the integration requirement. It does not state that spawning modifies the level, whether the operation is permanent, what side effects occur, or any permission/authentication requirements. This is a significant transparency gap for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately conveys the core action and a key prerequisite. There is no wasted wording or redundant information, making it easy to parse and remember.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, nested schemas, no output schema, and no annotations, the description is too minimal. It does not clarify what 'current level' refers to, whether the spawned actor is saved persistently, what the function returns, or any additional preconditions beyond integration. This leaves significant ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of parameter descriptions, so the baseline is 3. The tool description adds no parameter-specific meaning beyond the schema, such as clarifying the format of className or the world coordinate systems for nested objects. It is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Spawn a new actor in the current level'. It uses a specific verb and resource, and the mention of 'current level' adds context. It also distinguishes from sibling tools like instantiate_template, as spawning directly from a class is a different operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a prerequisite ('requires Adastrea-Director integration') but does not provide guidance on when to use this tool versus alternatives like instantiate_template or create_actor_template. It implies an intended use case but lacks explicit exclusions or alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_game_infoC
Update or add game project information. Can update individual fields or multiple fields at once.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name of the game | |
| team | No | Team members and their roles | |
| genre | No | The game's genre (e.g., RPG, FPS, Strategy) | |
| engine | No | Game engine being used (e.g., Unity, Unreal, Godot) | |
| status | No | Current development status (e.g., Planning, In Development, Testing, Released) | |
| features | No | Key features of the game | |
| platform | No | Target platforms (e.g., PC, Console, Mobile) | |
| timeline | No | Project timeline information | |
| description | No | A detailed description of the game | |
| custom_fields | No | Any additional custom fields for project-specific information | |
| repository_url | No | URL to the game's source code repository (e.g., GitHub URL) | |
| technical_details | No | Technical specifications and architecture details |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but reveals little. It says 'update or add' which implies mutation, but doesn't explain side effects, whether unspecified fields are preserved, or return behavior. For a tool that can modify many fields, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that are front-loaded and free of waste. The first sentence states the action, the second adds a useful usage detail about granularity. Very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 12 parameters including nested objects and no output schema, the description is minimal. It doesn't clarify how the tool behaves in edge cases (e.g., creating vs updating), what the response is, or any requirements. The high parameter count demands more context than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides; it only generalizes that fields can be updated individually or together.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('update or add') and the resource ('game project information'). It conveys a write operation that can modify existing or create new game info. However, it doesn't list specific fields, but the schema covers that, so it's still clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like get_game_info or clear_game_info. The statement about updating individual or multiple fields at once hints at how, but not when to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_project_structureC
Validate an Unreal Engine project structure and check for common issues
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | Absolute path to the Unreal Engine project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the tool validates and checks for issues, implying a read-only analysis, but does not disclose return format, side effects, or what constitutes 'common issues'. This leaves significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words, making it concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description should explain what the validation returns or how results are presented, but it does not. It also lacks details about the scope of validation, making it incomplete for a tool with no structured output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single parameter (project_path) with a description, giving 100% schema coverage. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('validate') and resource ('Unreal Engine project structure') and indicates the action ('check for common issues'), making the purpose clear. However, it does not differentiate from the sibling tool 'scan_unreal_project', which might also inspect projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a general use case (validating a project) but provides no guidance on when to prefer this tool over alternatives like 'scan_unreal_project', nor any prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
44 tool updates
v1.0.0- First observed
add_blueprint_function - First observed
add_blueprint_variable - First observed
clear_game_info - First observed
create_actor_template - First observed
delete_actor_template - First observed
execute_console_command - First observed
extract_code_metadata - First observed
find_class_usage - First observed
generate_actor_component - First observed
generate_blueprint_compatible_class - First observed
generate_character_class - First observed
generate_data_asset - First observed
generate_data_table - First observed
generate_documentation - First observed
generate_game_mode - First observed
generate_integration_guide - First observed
generate_replication_code - First observed
generate_system_diagram - First observed
generate_uclass - First observed
get_actor_components - First observed
get_asset_dependencies - First observed
get_blueprint_functions - First observed
get_blueprint_variables - First observed
get_class_hierarchy - First observed
get_game_info - First observed
get_live_project_info - First observed
get_related_ue_systems - First observed
get_ue_system - First observed
get_ue_systems_by_tag - First observed
inspect_blueprint - First observed
instantiate_template - First observed
list_actor_templates - First observed
list_assets_live - First observed
modify_actor_properties - First observed
modify_blueprint_property - First observed
query_ue_knowledge - First observed
run_python_script - First observed
scan_unreal_project - First observed
search_assets - First observed
search_blueprint_nodes - First observed
search_code - First observed
spawn_actor - First observed
update_game_info - First observed
validate_project_structure
TDQS
Scored across 44 tools
Several tools overlap in purpose, such as inspect_blueprint versus get_blueprint_functions/get_blueprint_variables, and generate_documentation versus extract_code_metadata. The descriptions help, but an agent could still hesitate between similar getters and generators. The placeholder get_asset_dependencies also muddies the boundary between real and non-functional tools.
Tool names follow a highly consistent snake_case verb_noun pattern throughout, e.g., get_, create_, update_, delete_, search_, generate_, and execute_. Minor variations like query_, scan_, or inspect_ are still predictable and fit the established style.
With 44 tools, the server far exceeds the 25-tool threshold and feels like a monolithic collection of several distinct Unreal Editor subsystems. Each tool may be individually useful, but the overall surface is too heavy for an agent to navigate efficiently.
The set covers major workflows: project scanning, code search, blueprint inspection, actor templates, code generation, and UE knowledge lookup. However, there are notable gaps such as get_asset_dependencies being explicitly a placeholder, missing blueprint variable/function deletion, no actor destruction, and no component mutation operations.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Cloud-hosted MCP server for durable AI memory
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Capability registry for the agentic economy. Semantic search over verified MCP server listings.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for controlling Unreal Engine 5 from AI agents, providing 120+ commands for spawning actors, editing Blueprints, managing assets, and more via CLI or MCP.54 PyPI209MIT
- AlicenseBqualityCmaintenanceAn MCP server that gives AI agents broad control over Unreal Engine 5.7, enabling actor/asset/level management, Blueprint and material creation, screenshots, automation, and arbitrary editor Python execution.35MIT
- AlicenseBqualityAmaintenanceAn MCP server that lets an AI agent drive Unreal Engine 5: create projects, import assets, build levels and Blueprints, configure replication, compile C++, run Play In Editor and package the game.1004MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that connects Claude to Unreal Engine 5.8 via the official Remote Control API, enabling asset manipulation, actor control, level operations, and AI-powered 3D model generation (via Meshy) through natural language.-