Skip to main content
Glama

generate_nature_scene

Create photorealistic natural outdoor scenes with procedurally generated terrain, vegetation, and environmental elements using Infinigen's 3D scene generation capabilities.

Instructions

Generate a photorealistic natural outdoor scene using Infinigen. Creates terrain, vegetation, and natural elements.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
seedNoRandom seed for reproducible generation (default: random)
output_folderYesOutput folder path for generated scene files
configsNoConfiguration files to use (e.g., ['desert.gin', 'simple.gin'])
use_gpuNoWhether to use GPU acceleration (default: false)

Implementation Reference

  • The handler function that executes the tool: generates a random seed if not provided, constructs a Python command to run Infinigen's datagen.manage_jobs, executes it via child_process.exec, and returns the output or error.
    async function generateNatureScene(args: {
      seed?: number;
      output_folder: string;
      configs?: string[];
      use_gpu?: boolean;
    }): Promise<string> {
      const seed = args.seed ?? Math.floor(Math.random() * 1000000);
      const configs = args.configs ?? ["simple.gin"];
      const useGpu = args.use_gpu ?? false;
    
      const gpuFlag = useGpu ? "" : "LocalScheduleHandler.use_gpu=False";
    
      const command = `python -m infinigen.datagen.manage_jobs --output_folder ${args.output_folder} --num_scenes 1 --specific_seed ${seed} --configs ${configs.join(" ")} --pipeline_configs local_16GB.gin monocular.gin blender_gt.gin ${gpuFlag ? `--pipeline_overrides ${gpuFlag}` : ""}`;
    
      try {
        const { stdout, stderr } = await execAsync(command, { maxBuffer: 10 * 1024 * 1024 });
        return `Scene generation started successfully.\nSeed: ${seed}\nOutput: ${args.output_folder}\n\nCommand output:\n${stdout}\n${stderr || ""}`;
      } catch (error) {
        throw new Error(`Failed to generate scene: ${error instanceof Error ? error.message : "Unknown error"}`);
      }
    }
  • Input schema definition for the generate_nature_scene tool, specifying parameters, types, descriptions, defaults, and required fields.
    inputSchema: {
      type: "object",
      properties: {
        seed: {
          type: "number",
          description: "Random seed for reproducible generation (default: random)",
        },
        output_folder: {
          type: "string",
          description: "Output folder path for generated scene files",
        },
        configs: {
          type: "array",
          items: { type: "string" },
          description: "Configuration files to use (e.g., ['desert.gin', 'simple.gin'])",
          default: ["simple.gin"],
        },
        use_gpu: {
          type: "boolean",
          description: "Whether to use GPU acceleration (default: false)",
          default: false,
        },
      },
      required: ["output_folder"],
    },
  • src/index.ts:28-56 (registration)
    Tool object registration in the TOOLS array, which is returned by ListToolsRequestHandler. Includes name, description, and inputSchema.
    {
      name: "generate_nature_scene",
      description: "Generate a photorealistic natural outdoor scene using Infinigen. Creates terrain, vegetation, and natural elements.",
      inputSchema: {
        type: "object",
        properties: {
          seed: {
            type: "number",
            description: "Random seed for reproducible generation (default: random)",
          },
          output_folder: {
            type: "string",
            description: "Output folder path for generated scene files",
          },
          configs: {
            type: "array",
            items: { type: "string" },
            description: "Configuration files to use (e.g., ['desert.gin', 'simple.gin'])",
            default: ["simple.gin"],
          },
          use_gpu: {
            type: "boolean",
            description: "Whether to use GPU acceleration (default: false)",
            default: false,
          },
        },
        required: ["output_folder"],
      },
    },
  • src/index.ts:203-213 (registration)
    Dispatch logic in CallToolRequestHandler switch statement: calls the generateNatureScene handler and formats the response for MCP.
    case "generate_nature_scene": {
      const result = await generateNatureScene(args as any);
      return {
        content: [
          {
            type: "text",
            text: result,
          },
        ],
      };
    }
Behavior2/5

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 that the tool 'creates terrain, vegetation, and natural elements,' which implies a generative/write operation, but doesn't cover critical aspects like whether it overwrites existing files, requires specific permissions, has rate limits, or what the output entails (e.g., file types, location). For a tool with no annotations and complex behavior, this is a significant gap.

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?

The description is concise and front-loaded: it states the core purpose in the first sentence and adds detail in the second. Both sentences earn their place by clarifying the tool's function and scope. However, it could be slightly more structured by explicitly contrasting with siblings or outlining key behaviors.

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

Completeness2/5

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

Given the complexity (a generative scene tool with 4 parameters, no annotations, and no output schema), the description is incomplete. It doesn't explain what the tool returns, how output is structured, or any side effects (e.g., file creation, resource usage). For a tool that likely produces significant output, this lack of context is a notable shortfall.

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

Parameters3/5

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

The schema description coverage is 100%, meaning all parameters are documented in the schema. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain the purpose of 'configs' or 'seed' in more detail). According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Generate a photorealistic natural outdoor scene using Infinigen. Creates terrain, vegetation, and natural elements.' It specifies the action (generate), resource (natural outdoor scene), and technology (Infinigen). However, it doesn't explicitly differentiate from its sibling 'generate_indoor_scene' beyond the 'outdoor' vs 'indoor' distinction, which is implied but not stated.

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

Usage Guidelines2/5

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 doesn't mention the sibling tools 'check_infinigen' or 'generate_indoor_scene', nor does it specify prerequisites, constraints, or typical use cases. The agent must infer usage from the tool name and description alone.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/elfenlieds7/infinigen-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server