Skip to main content
Glama

xero_navigate

Select a Xero accounting domain to access specialized tools for managing contacts, invoices, payments, accounts, or financial reports.

Instructions

Navigate to a specific domain in Xero. Call this first to select which area you want to work with. After navigation, domain-specific tools will be available.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to navigate to: - contacts: Contact management - list, get, create, and search contacts (customers and suppliers) - invoices: Invoice management - list, get, create invoices and update their status - payments: Payment management - list, get, and create payments against invoices - accounts: Chart of accounts - list and view account details by type and class - reports: Financial reports - profit & loss, balance sheet, aged receivables, and aged payables

Implementation Reference

  • Tool definition and input schema for xero_navigate - defines the tool name, description, and the domain enum (contacts, invoices, payments, accounts, reports) with required 'domain' parameter
    const navigateTool: Tool = {
      name: "xero_navigate",
      description:
        "Navigate to a specific domain in Xero. Call this first to select which area you want to work with. After navigation, domain-specific tools will be available.",
      inputSchema: {
        type: "object",
        properties: {
          domain: {
            type: "string",
            enum: [
              "contacts",
              "invoices",
              "payments",
              "accounts",
              "reports",
            ],
            description: `The domain to navigate to:
    - contacts: ${domainDescriptions.contacts}
    - invoices: ${domainDescriptions.invoices}
    - payments: ${domainDescriptions.payments}
    - accounts: ${domainDescriptions.accounts}
    - reports: ${domainDescriptions.reports}`,
          },
        },
        required: ["domain"],
      },
    };
  • Tool handler logic for xero_navigate - updates the server state's currentDomain, retrieves domain-specific tools, and returns a message listing available tools for the selected domain
    if (name === "xero_navigate") {
      const { domain } = args as { domain: Domain };
      state.currentDomain = domain;
    
      const domainTools = getDomainTools(domain);
      const toolNames = domainTools.map((t) => t.name).join(", ");
    
      return {
        content: [
          {
            type: "text",
            text: `Navigated to ${domain} domain. Available tools: ${toolNames}`,
          },
        ],
      };
    }
  • src/index.ts:158-171 (registration)
    ListTools request handler that conditionally includes xero_navigate when currentDomain is null (at root level) and hides it when inside a domain
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      const tools: Tool[] = [];
    
      if (state.currentDomain === null) {
        // At root - show navigation tool only
        tools.push(navigateTool);
      } else {
        // In a domain - show domain tools plus back navigation
        tools.push(backTool);
        tools.push(...getDomainTools(state.currentDomain));
      }
    
      return { tools };
    });
  • src/index.ts:176-196 (registration)
    CallTool request handler that routes xero_navigate invocations through the name check on line 181 to execute the navigation logic
    server.setRequestHandler(CallToolRequestSchema, async (request) => {
      const { name, arguments: args } = request.params;
    
      try {
        // Handle navigation
        if (name === "xero_navigate") {
          const { domain } = args as { domain: Domain };
          state.currentDomain = domain;
    
          const domainTools = getDomainTools(domain);
          const toolNames = domainTools.map((t) => t.name).join(", ");
    
          return {
            content: [
              {
                type: "text",
                text: `Navigated to ${domain} domain. Available tools: ${toolNames}`,
              },
            ],
          };
        }
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/wyre-technology/xero-mcp'

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