Skip to main content
Glama

listMethods

Discover available methods in the AEM MCP Server for content, component, and asset management with AI and automation integrations.

Instructions

Get list of available MCP methods

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Primary MCP SDK handler for the 'listMethods' tool call. Returns the complete list of available tools (including schemas) as formatted JSON text.
    case 'listMethods': {
      const result = tools;
      return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
    }
  • Tool schema definition for 'listMethods' in the static tools array, used for both listTools response and tool execution validation.
    {
      name: 'listMethods',
      description: 'Get list of available MCP methods',
      inputSchema: { type: 'object', properties: {} },
    },
  • Registers the standard MCP 'listTools' request handler, which exposes the 'listMethods' tool in its response.
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      return { tools };
    });
  • Secondary handler for 'listMethods' in the custom MCPRequestHandler class (used by HTTP gateway), delegates to getAvailableMethods().
    case 'listMethods':
      return { methods: this.getAvailableMethods() };
  • Helper method providing a hardcoded list of available methods (simplified format without schemas), used by the custom handler.
    getAvailableMethods() {
      return [
        { name: 'validateComponent', description: 'Validate component changes before applying them', parameters: ['locale', 'page_path', 'component', 'props'] },
        { name: 'updateComponent', description: 'Update component properties in AEM', parameters: ['componentPath', 'properties'] },
        { name: 'undoChanges', description: 'Undo the last component changes', parameters: ['job_id'] },
        { name: 'scanPageComponents', description: 'Scan a page to discover all components and their properties', parameters: ['pagePath'] },
        { name: 'fetchSites', description: 'Get all available sites in AEM', parameters: [] },
        { name: 'fetchLanguageMasters', description: 'Get language masters for a specific site', parameters: ['site'] },
        { name: 'fetchAvailableLocales', description: 'Get available locales for a site and language master', parameters: ['site', 'languageMasterPath'] },
        { name: 'replicateAndPublish', description: 'Replicate and publish content to selected locales', parameters: ['selectedLocales', 'componentData', 'localizedOverrides'] },
        { name: 'getAllTextContent', description: 'Get all text content from a page including titles, text components, and descriptions', parameters: ['pagePath'] },
        { name: 'getPageTextContent', description: 'Get text content from a specific page', parameters: ['pagePath'] },
        { name: 'getPageImages', description: 'Get all images from a page, including those within Experience Fragments', parameters: ['pagePath'] },
        { name: 'updateImagePath', description: 'Update the image path for an image component and verify the update', parameters: ['componentPath', 'newImagePath'] },
        { name: 'getPageContent', description: 'Get all content from a page including Experience Fragments and Content Fragments', parameters: ['pagePath'] },
        { name: 'listPages', description: 'List all pages under a site root', parameters: ['siteRoot', 'depth', 'limit'] },
        { name: 'getNodeContent', description: 'Legacy: Get JCR node content', parameters: ['path', 'depth'] },
        { name: 'listChildren', description: 'Legacy: List child nodes', parameters: ['path'] },
        { name: 'getPageProperties', description: 'Get page properties', parameters: ['pagePath'] },
        { name: 'searchContent', description: 'Search content using Query Builder', parameters: ['type', 'fulltext', 'path', 'limit'] },
        { name: 'executeJCRQuery', description: 'Execute JCR query', parameters: ['query', 'limit'] },
        { name: 'getAssetMetadata', description: 'Get asset metadata', parameters: ['assetPath'] },
        { name: 'getStatus', description: 'Get workflow status by ID', parameters: ['workflowId'] },
        { name: 'listMethods', description: 'Get list of available MCP methods', parameters: [] },
        { name: 'enhancedPageSearch', description: 'Intelligent page search with comprehensive fallback strategies and cross-section search', parameters: ['searchTerm', 'basePath', 'includeAlternateLocales'] },
        { name: 'createPage', description: 'Create a new page in AEM', parameters: ['parentPath', 'title', 'template', 'name', 'properties'] },
        { name: 'deletePage', description: 'Delete a page from AEM', parameters: ['pagePath', 'force'] },
        { name: 'createComponent', description: 'Create a new component on a page', parameters: ['pagePath', 'componentType', 'resourceType', 'properties', 'name'] },
        { name: 'deleteComponent', description: 'Delete a component from AEM', parameters: ['componentPath', 'force'] },
        { name: 'unpublishContent', description: 'Unpublish content from the publish environment', parameters: ['contentPaths', 'unpublishTree'] },
        { name: 'activatePage', description: 'Activate (publish) a single page', parameters: ['pagePath', 'activateTree'] },
        { name: 'deactivatePage', description: 'Deactivate (unpublish) a single page', parameters: ['pagePath', 'deactivateTree'] },
        { name: 'uploadAsset', description: 'Upload a new asset to AEM DAM', parameters: ['parentPath', 'fileName', 'fileContent', 'mimeType', 'metadata'] },
        { name: 'updateAsset', description: 'Update an existing asset in AEM DAM', parameters: ['assetPath', 'metadata', 'fileContent', 'mimeType'] },
        { name: 'deleteAsset', description: 'Delete an asset from AEM DAM', parameters: ['assetPath', 'force'] },
        { name: 'getTemplates', description: 'Get available page templates', parameters: ['sitePath'] },
        { name: 'getTemplateStructure', description: 'Get detailed structure of a specific template', parameters: ['templatePath'] },
        { name: 'bulkUpdateComponents', description: 'Update multiple components in a single operation with validation and rollback support', parameters: ['updates', 'validateFirst', 'continueOnError'] },
        { name: 'startWorkflow', description: 'Start a new workflow instance', parameters: ['model', 'payloadPath', 'title', 'comment'] },
        { name: 'listActiveWorkflows', description: 'List all currently running workflow instances', parameters: ['limit'] },
        { name: 'completeWorkflowStep', description: 'Complete a workflow step', parameters: ['workflowId', 'stepName', 'comment'] },
        { name: 'cancelWorkflow', description: 'Cancel a workflow instance', parameters: ['workflowId', 'reason'] },
        { name: 'suspendWorkflow', description: 'Suspend a workflow instance', parameters: ['workflowId', 'reason'] },
        { name: 'resumeWorkflow', description: 'Resume a suspended workflow instance', parameters: ['workflowId'] },
        { name: 'getWorkflowModels', description: 'Get all available workflow models', parameters: [] },
        { name: 'getVersionHistory', description: 'Get version history for a content path', parameters: ['path'] },
        { name: 'createVersion', description: 'Create a new version of content', parameters: ['path', 'label', 'comment'] },
        { name: 'restoreVersion', description: 'Restore content to a specific version', parameters: ['path', 'versionName'] },
        { name: 'compareVersions', description: 'Compare two versions of content', parameters: ['path', 'version1', 'version2'] },
        { name: 'deleteVersion', description: 'Delete a specific version', parameters: ['path', 'versionName'] },
      ];
    }
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it 'gets' data, implying a read-only operation, but doesn't disclose behavioral traits like whether it requires authentication, returns structured data, has rate limits, or if it's idempotent. This leaves significant gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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 of a tool that retrieves system-level data, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'MCP methods' entails (e.g., if it returns tool names, metadata, or capabilities) or the format of the returned list, leaving the agent with insufficient context.

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?

With 0 parameters and 100% schema description coverage, the schema fully documents the lack of inputs. The description doesn't add parameter details, but since there are no parameters, a baseline of 4 is appropriate as no compensation is needed.

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 verb ('Get') and resource ('list of available MCP methods'), making the purpose understandable. However, it doesn't distinguish itself from potential siblings like 'getStatus' or 'getTemplates' that also retrieve system information, missing full differentiation.

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?

No guidance is provided on when to use this tool versus alternatives. With many sibling tools for retrieving various data (e.g., 'getStatus', 'fetchSites', 'listPages'), the description lacks context on its specific use case, such as for discovering server capabilities or debugging.

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/indrasishbanerjee/aem-mcp-server'

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