{
  "display_name": "Xero MCP Server",
  "repository": {
    "type": "git",
    "url": "https://github.com/XeroAPI/xero-mcp-server"
  },
  "homepage": "https://github.com/XeroAPI/xero-mcp-server",
  "author": {
    "name": "XeroAPI"
  },
  "license": "MIT",
  "tags": [
    "xero",
    "accounting",
    "mcp",
    "oauth2"
  ],
  "arguments": {
    "XERO_CLIENT_ID": {
      "description": "Your Xero API client ID from your developer account",
      "required": true,
      "example": "your_client_id_here"
    },
    "XERO_CLIENT_SECRET": {
      "description": "Your Xero API client secret from your developer account",
      "required": true,
      "example": "your_client_secret_here"
    }
  },
  "installations": {
    "npm": {
      "type": "npm",
      "command": "npx",
      "args": [
        "-y",
        "@xeroapi/xero-mcp-server@latest"
      ],
      "env": {
        "XERO_CLIENT_ID": "${XERO_CLIENT_ID}",
        "XERO_CLIENT_SECRET": "${XERO_CLIENT_SECRET}"
      },
      "description": "Run directly using npx"
    }
  },
  "examples": [
    {
      "title": "List Contacts",
      "description": "Retrieve a list of contacts from Xero",
      "prompt": "List all my Xero contacts"
    },
    {
      "title": "Create Invoice",
      "description": "Create a new invoice in Xero",
      "prompt": "Create a new invoice in Xero"
    },
    {
      "title": "List Accounts",
      "description": "Retrieve a list of accounts from Xero",
      "prompt": "Show me my chart of accounts in Xero"
    }
  ],
  "name": "xero-mcp-server",
  "description": "This is a Model Context Protocol (MCP) server implementation for Xero. It provides a bridge between the MCP protocol and Xero's API, allowing for standardized access to Xero's accounting and business features.",
  "categories": [
    "Finance"
  ],
  "tools": [
    {
      "name": "list-contacts",
      "description": "List all contacts in Xero. This includes Suppliers and Customers.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "list-invoices",
      "description": "List invoices in Xero. This includes Draft, Submitted, and Paid invoices.   Ask the user if they want to see invoices for a specific contact,   invoice number, or to see all invoices before running.   Ask the user if they want the next page of invoices after running this tool   if 10 invoices are returned.   If they want the next page, call this tool again with the next page number   and the contact or invoice number if one was provided in the previous call.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "number"
          },
          "contactIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "invoiceNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If provided, invoice line items will also be returned"
          }
        },
        "required": [
          "page"
        ]
      }
    },
    {
      "name": "create-contact",
      "description": "Create a contact in Xero. When a contact is created, a deep link to the contact in Xero is returned.  This deep link can be used to view the contact in Xero directly.  This link should be displayed to the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "phone": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      }
    },
    {
      "name": "create-invoice",
      "description": "Create an invoice in Xero. When an invoice is created, a deep link to the invoice in Xero is returned.  This deep link can be used to view the invoice in Xero directly.  This link should be displayed to the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "string"
          },
          "lineItems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                },
                "unitAmount": {
                  "type": "number"
                },
                "accountCode": {
                  "type": "string"
                },
                "taxType": {
                  "type": "string"
                }
              },
              "required": [
                "description",
                "quantity",
                "unitAmount",
                "accountCode",
                "taxType"
              ],
              "additionalProperties": false
            }
          },
          "reference": {
            "type": "string"
          }
        },
        "required": [
          "contactId",
          "lineItems"
        ]
      }
    },
    {
      "name": "list-accounts",
      "description": "Lists all accounts in Xero. Use this tool to get the account codes and names to be used when creating invoices in Xero",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "list-tax-rates",
      "description": "Lists all tax rates in Xero. Use this tool to get the tax rates to be used when creating invoices in Xero",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "list-quotes",
      "description": "List all quotes in Xero. \n  Ask the user if they want to see quotes for a specific contact before running. \n  Ask the user if they want the next page of quotes after running this tool if 10 quotes are returned. \n  If they do, call this tool again with the page number and the contact provided in the previous call.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "number"
          },
          "contactId": {
            "type": "string"
          }
        },
        "required": [
          "page"
        ]
      }
    },
    {
      "name": "create-quote",
      "description": "Create a quote in Xero. When a quote is created, a deep link to the quote in Xero is returned.  This deep link can be used to view the quote in Xero directly.  This link should be displayed to the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "string"
          },
          "lineItems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                },
                "unitAmount": {
                  "type": "number"
                },
                "accountCode": {
                  "type": "string"
                },
                "taxType": {
                  "type": "string"
                }
              },
              "required": [
                "description",
                "quantity",
                "unitAmount",
                "accountCode",
                "taxType"
              ],
              "additionalProperties": false
            }
          },
          "reference": {
            "type": "string"
          },
          "quoteNumber": {
            "type": "string"
          },
          "terms": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          }
        },
        "required": [
          "contactId",
          "lineItems"
        ]
      }
    },
    {
      "name": "update-contact",
      "description": "Update a contact in Xero. When a contact is updated, a deep link to the contact in Xero is returned.  This deep link can be used to view the contact in Xero directly.  This link should be displayed to the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "phone": {
            "type": "string"
          },
          "address": {
            "type": "object",
            "properties": {
              "addressLine1": {
                "type": "string"
              },
              "addressLine2": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "region": {
                "type": "string"
              },
              "postalCode": {
                "type": "string"
              },
              "country": {
                "type": "string"
              }
            },
            "required": [
              "addressLine1"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "contactId",
          "name"
        ]
      }
    },
    {
      "name": "update-invoice",
      "description": "Update an invoice in Xero. Only works on draft invoices.  All line items must be provided. Any line items not provided will be removed. Including existing line items.  Do not modify line items that have not been specified by the user. When an invoice is updated, a deep link to the invoice in Xero is returned.  This deep link can be used to view the contact in Xero directly.  This link should be displayed to the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string"
          },
          "lineItems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                },
                "unitAmount": {
                  "type": "number"
                },
                "accountCode": {
                  "type": "string"
                },
                "taxType": {
                  "type": "string"
                }
              },
              "required": [
                "description",
                "quantity",
                "unitAmount",
                "accountCode",
                "taxType"
              ],
              "additionalProperties": false
            },
            "description": "All line items must be provided. Any line items not provided will be removed. Including existing line items.       Do not modify line items that have not been specified by the user"
          },
          "reference": {
            "type": "string"
          },
          "dueDate": {
            "type": "string"
          }
        },
        "required": [
          "invoiceId"
        ]
      }
    },
    {
      "name": "list-credit-notes",
      "description": "List credit notes in Xero. \n  Ask the user if they want to see credit notes for a specific contact,\n  or to see all credit notes before running. \n  Ask the user if they want the next page of credit notes after running this tool \n  if 10 credit notes are returned. \n  If they want the next page, call this tool again with the next page number \n  and the contact if one was provided in the previous call.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "number"
          },
          "contactId": {
            "type": "string"
          }
        },
        "required": [
          "page"
        ]
      }
    },
    {
      "name": "create-credit-note",
      "description": "Create a credit note in Xero. When a credit note is created, a deep link to the credit note in Xero is returned.  This deep link can be used to view the credit note in Xero directly.  This link should be displayed to the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "string"
          },
          "lineItems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                },
                "unitAmount": {
                  "type": "number"
                },
                "accountCode": {
                  "type": "string"
                },
                "taxType": {
                  "type": "string"
                }
              },
              "required": [
                "description",
                "quantity",
                "unitAmount",
                "accountCode",
                "taxType"
              ],
              "additionalProperties": false
            }
          },
          "reference": {
            "type": "string"
          }
        },
        "required": [
          "contactId",
          "lineItems"
        ]
      }
    }
  ],
  "prompts": [],
  "resources": [],
  "is_official": true
}
