Skip to main content
Glama

reorder_children

Reorganize child elements in HNPX documents by specifying a new order for child IDs under a parent node to restructure narrative hierarchies.

Instructions

Reorganize the order of child elements

Args: file_path (str): Path to the HNPX document parent_id (str): ID of the parent node child_ids (list): List of child IDs in the desired order

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
file_pathYes
parent_idYes
child_idsYes

Implementation Reference

  • The core handler function for the 'reorder_children' tool. It parses the HNPX XML document, locates the specified parent node, validates that the provided child_ids match all current non-summary children, reorders them by removing and re-appending in the new sequence, saves the updated document, and returns a confirmation message.
    def reorder_children(file_path: str, parent_id: str, child_ids: list) -> str:
        """Reorganize the order of child elements
    
        Args:
            file_path (str): Path to the HNPX document
            parent_id (str): ID of the parent node
            child_ids (list): List of child IDs in the desired order
        """
        tree = hnpx.parse_document(file_path)
        parent = hnpx.find_node(tree, parent_id)
    
        if parent is None:
            raise NodeNotFoundError(parent_id)
    
        # Get current children (excluding summary)
        current_children = [child for child in parent if child.tag != "summary"]
        current_ids = [child.get("id") for child in current_children]
    
        # Validate input
        if set(child_ids) != set(current_ids):
            raise InvalidOperationError(
                "reorder_children", "child_ids must contain all existing child IDs"
            )
    
        # Create mapping and reorder
        child_map = {child.get("id"): child for child in current_children}
    
        # Remove all children (except summary)
        for child in current_children:
            parent.remove(child)
    
        # Add back in new order
        for child_id in child_ids:
            parent.append(child_map[child_id])
    
        hnpx.save_document(tree, file_path)
    
        return f"Reordered children of node {parent_id}"
  • Registers the reorder_children function as an MCP tool using the FastMCP app.tool() decorator.
    app.tool()(tools.reorder_children)

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/mozhaa/hnpx-sdk'

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