Skip to main content
Glama

use_smart_object

DestructiveIdempotent

Claim a free SmartObject slot on a labeled actor and mark it occupied in one call, applying an optional behavior definition; requires initialized PIE/BeginPlay runtime.

Instructions

Claim a free slot on an actor's SmartObject component and immediately mark it occupied (USmartObjectSubsystem::MarkSlotAsOccupied), driving a behavior definition. Single-call claim+occupy keyed by actor_label (an FSmartObjectClaimHandle cannot be rebuilt from a string, so a two-step claim_handle path is impossible). HONEST GATE: the component handle only registers once the subsystem runtime is initialized (PIE/BeginPlay); headless it is invalid and this returns a clean error. Idempotent: an already-occupied slot returns already_occupied without re-occupying.

Returns: { actor_label: string, slot_id: string, behavior_definition: string, is_occupied: bool, already_occupied: bool, success: bool }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actor_labelYesEditor label of the actor carrying the USmartObjectComponent
behavior_classNoOptional behavior definition class (short native name or /Script path); defaults to USmartObjectBehaviorDefinition

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the annotations by disclosing the runtime-initialization precondition, the failure mode when headless, and the exact idempotent return semantics (already_occupied without re-occupying). This complements readOnlyHint=false, idempotentHint=true and destructiveHint=true with environment and error behavior the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then rationale, gate, idempotency and return shape; every clause carries information. It is slightly dense with parentheticals, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description enumerates the returned fields and covers the mutation semantics, the environment precondition, and the idempotent path. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so both parameters are already documented, but the description adds rationale: it explains why the key is actor_label (a FSmartObjectClaimHandle cannot be rebuilt from a string) and that behavior_class drives the behavior definition, which is more than the schema conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Claim a free slot on an actor's SmartObject component and immediately mark it occupied') and explicitly frames it as a single-call claim+occupy keyed by actor_label, which implicitly separates it from the two-step claim_handle path used by siblings like claim_smart_object.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: usable only once the subsystem runtime is initialized (PIE/BeginPlay), returns a clean error headless, and is safe to re-call because an already-occupied slot returns already_occupied. It stops short of naming sibling alternatives (claim_smart_object / release_smart_object) explicitly, so the routing is inferable rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools