Skip to main content
Glama

list_sections

Extract and display all sections from a Markdown document to help users navigate content and understand document structure.

Instructions

        List all sections in the document.
        
        Args:
            document_path: Path to the Markdown file
            validation_level: Validation strictness - "STRICT", "NORMAL", or "PERMISSIVE"  
        

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
document_pathYes
validation_levelNoNORMAL

Implementation Reference

  • The primary handler function for the 'list_sections' MCP tool. It loads the document using StatelessMarkdownProcessor, retrieves sections, extracts content previews using line ranges, and returns a structured list of sections with metadata.
    def list_sections(document_path: str, validation_level: str = "NORMAL") -> Dict[str, Any]:
        """
        List all sections in the document.
        
        Args:
            document_path: Path to the Markdown file
            validation_level: Validation strictness - "STRICT", "NORMAL", or "PERMISSIVE"  
        """
        try:
            validation_map = {"STRICT": ValidationLevel.STRICT, "NORMAL": ValidationLevel.NORMAL, "PERMISSIVE": ValidationLevel.PERMISSIVE}
            validation_enum = validation_map.get(validation_level.upper(), ValidationLevel.NORMAL)
            
            editor = self.processor.load_document(document_path, validation_enum)
            sections = editor.get_sections()
            
            # Get full content to extract section content
            full_content = editor.to_markdown()
            lines = full_content.split('\n')
            
            # Build section list with content preview
            section_list = []
            for section in sections:
                # Extract section content using line ranges
                try:
                    section_lines = lines[section.line_start:section.line_end+1]
                    section_content = '\n'.join(section_lines)
                    content_preview = section_content[:100] + "..." if len(section_content) > 100 else section_content
                except (IndexError, AttributeError):
                    # Fallback if line extraction fails
                    content_preview = "Content preview not available"
                
                section_list.append({
                    "id": section.id,  
                    "title": section.title,
                    "level": section.level,
                    "line_start": section.line_start,
                    "line_end": section.line_end,
                    "content_preview": content_preview
                })
            
            return {
                "success": True,
                "sections": section_list,
                "total_sections": len(sections)
            }
            
        except Exception as e:
            return self.processor.create_error_response(str(e), type(e).__name__)

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/quantalogic/quantalogic_markdown_mcp'

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