Skip to main content
Glama

split_tile

Partition solution spaces into MECE subsets using specific attributes to systematically organize research ideas and analyze gaps in hierarchical tile-based exploration.

Instructions

Split a tile into MECE (Mutually Exclusive, Collectively Exhaustive) subsets using a specific attribute/dimension. This is the core operation of the tiling trees method - partitioning the solution space systematically. Use physics/math-oriented splits when possible.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tileIdYesID of the tile to split
splitAttributeYesThe attribute/dimension used to split (e.g., 'energy source', 'scale', 'physical mechanism', 'timeframe')
splitRationaleYesWhy this attribute was chosen for splitting
subsetsYesThe mutually exclusive and collectively exhaustive subsets

Implementation Reference

  • Core implementation of the split_tile tool logic in ResearchTreeManager class. Creates child tiles from subsets, updates parent with split info, and ensures tile hasn't been split before.
    splitTile(
      tileId: string,
      splitAttribute: string,
      splitRationale: string,
      subsets: Array<{ title: string; description: string; isLeaf?: boolean }>
    ): { parentTile: Tile; createdTiles: Tile[] } {
      const tile = this.tiles.get(tileId);
      if (!tile) {
        throw new Error(`Tile ${tileId} not found`);
      }
    
      if (tile.childrenIds.length > 0) {
        throw new Error(`Tile ${tileId} has already been split. Use addTilesToSplit to add more tiles.`);
      }
    
      // Create the child tiles
      const createdTiles = subsets.map((subset) =>
        this.createTile(
          subset.title,
          subset.description,
          tileId,
          subset.isLeaf || false
        )
      );
    
      // Update parent with split information
      tile.splitAttribute = splitAttribute;
      tile.splitRationale = splitRationale;
      tile.isMECE = undefined; // Needs validation
      tile.isLeaf = false; // No longer a leaf
      tile.updatedAt = new Date();
    
      return {
        parentTile: tile,
        createdTiles,
      };
    }
  • Input schema and description for the split_tile tool, defining parameters like tileId, splitAttribute, splitRationale, and subsets array.
    {
      name: "split_tile",
      description: "Split a tile into MECE (Mutually Exclusive, Collectively Exhaustive) subsets using a specific attribute/dimension. This is the core operation of the tiling trees method - partitioning the solution space systematically. Use physics/math-oriented splits when possible.",
      inputSchema: {
        type: "object",
        properties: {
          tileId: {
            type: "string",
            description: "ID of the tile to split",
          },
          splitAttribute: {
            type: "string",
            description: "The attribute/dimension used to split (e.g., 'energy source', 'scale', 'physical mechanism', 'timeframe')",
          },
          splitRationale: {
            type: "string",
            description: "Why this attribute was chosen for splitting",
          },
          subsets: {
            type: "array",
            items: {
              type: "object",
              properties: {
                title: { type: "string" },
                description: {
                  type: "string",
                  description: "Precise definition of this subset to ensure no overlap with siblings",
                },
                isLeaf: {
                  type: "boolean",
                  description: "True if this is a concrete idea/project (leaf node)",
                },
              },
              required: ["title", "description"],
            },
            description: "The mutually exclusive and collectively exhaustive subsets",
          },
        },
        required: ["tileId", "splitAttribute", "splitRationale", "subsets"],
      },
    },
  • MCP server handler case for split_tile tool call, which delegates to treeManager.splitTile and returns JSON result.
    case "split_tile": {
      const result = treeManager.splitTile(
        args.tileId as string,
        args.splitAttribute as string,
        args.splitRationale as string,
        args.subsets as any[]
      );
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(result, null, 2),
          },
        ],
      };
    }
  • src/index.ts:393-395 (registration)
    Registration of all tools including split_tile via ListToolsRequestSchema handler returning the TOOLS array.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: 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/k-chrispens/tiling-trees-mcp'

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