ExpenseOnDemand MCP by usefulapi

Read exports, payroll totals and users; add, update or deactivate employees in ExpenseOnDemand.

¿Debería usar esto?

Calidad y seguridad

C
Calidad de la descripción
100%
Integridad del esquema
65%
Calidad de los nombres
67%
Riesgo de envenenamiento
0%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (18)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringen expenseondemand_list_expense_categories
  • MEDIUMTool description contains suspicious base64-like encoded stringen expenseondemand_list_customers
  • MEDIUMTool description contains suspicious base64-like encoded stringen expenseondemand_add_customer
  • MEDIUMTool description contains suspicious base64-like encoded stringen expenseondemand_update_customer
  • MEDIUMTool description contains suspicious base64-like encoded stringen expenseondemand_list_cost_centres
  • MEDIUMTool description contains suspicious base64-like encoded stringen expenseondemand_add_cost_centre
  • MEDIUMTool description contains suspicious base64-like encoded stringen expenseondemand_update_cost_centre
  • LOWTool 'expenseondemand_export_accounting' name length outside 3-30 rangeen expenseondemand_export_accounting
  • LOWTool 'expenseondemand_get_payroll_export' name length outside 3-30 rangeen expenseondemand_get_payroll_export

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,600Tokens (definiciones de herramientas)
~1.2 KBTamaño de respuesta típico
Impacto significativo en la atención (2.03% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "expenseondemand": {
      "url": "https://expenseondemand.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://expenseondemand.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (15)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢expenseondemand_export_accounting(exportReportId, exportType, fromDate, toDate, expenseCategoryFilter, ...)

Fetch approved expense data for an accounting integration, filtered by report, date range, category, claimant, cost centre, grade and payment type. Reads data only; the POST carries the filter body. Accounting API: POST /accounting/api/AccountingExport.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "exportReportId": {
      "description": "Export report id (one the organisation has; see expenseondemand_list_export_templates).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "exportType": {
      "description": "1 = new items, 2 = previously exported items.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2
    },
    "fromDate": {
      "description": "Start of the expense submission date range.",
      "type": "string"
    },
    "toDate": {
      "description": "End of the expense submission date range.",
      "type": "string"
    },
    "expenseCategoryFilter": {
      "description": "Expense category ids (list of ids; leave out for no filter).",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "claimantFilter": {
      "description": "Claimant ids (list of ids; leave out for no filter).",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "costCenterFilter": {
      "description": "Cost centre ids (list of ids; leave out for no filter).",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "claimantTypeFilter": {
      "description": "Claimant type ids (list of ids; leave out for no filter).",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "gradeFilter": {
      "description": "Grade ids (list of ids; leave out for no filter).",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "paymentTypeFilter": {
      "description": "Payment type ids (list of ids; leave out for no filter).",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢expenseondemand_get_payroll_export

Get the total approved expense amount per employee for payroll: name, email, expense count and total amount. Accounting API: GET /accounting/api/PayrollExport.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢expenseondemand_list_export_templates

List the export report types configured for the subscription, with their report ids and fields. Use a reportId as exportReportId in expenseondemand_export_accounting. Meta API: GET /meta/api/GetExportTemplates.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢expenseondemand_list_expense_categories

List the expense categories of the subscription with id, name, active flag and base category id. Meta API: GET /meta/api/GetExpenseCategoriesForOrganisation.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢expenseondemand_list_grades

List the employee grades of the subscription with id, name and active flag. Meta API: GET /meta/api/GetGradesForOrganisation.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢expenseondemand_list_customers

List the customers of the subscription with id, name, codes and active flag. Customer API: GET /customer/api/GetCustomersForOrganisation.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴expenseondemand_add_customer(name, code, code2, isActive)

Add a customer to the subscription. The id is generated by ExpenseOnDemand. Creates a new record each call. Customer API: POST /customer/api/AddCustomerForSubscription.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Customer name.",
      "type": "string"
    },
    "code": {
      "description": "Customer code 1.",
      "type": "string"
    },
    "code2": {
      "description": "Customer code 2.",
      "type": "string"
    },
    "isActive": {
      "description": "Whether the customer is active.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴expenseondemand_update_customer(id, name, code, code2, isActive)

Update an existing customer by id. Send every field you want to keep: the vendor may clear fields you leave out, so read the record first with expenseondemand_list_customers. Customer API: POST /customer/api/UpdateCustomerForSubscription.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Id of the customer to update (from expenseondemand_list_customers)."
    },
    "name": {
      "description": "Customer name.",
      "type": "string"
    },
    "code": {
      "description": "Customer code 1.",
      "type": "string"
    },
    "code2": {
      "description": "Customer code 2.",
      "type": "string"
    },
    "isActive": {
      "description": "Whether the customer is active.",
      "type": "boolean"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢expenseondemand_list_cost_centres

List the cost centres of the subscription with id, name, codes and active flag. Cost Centre API: GET /costCentre/api/GetCostCentresForOrganisation.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴expenseondemand_add_cost_centre(name, code, code2, isActive)

Add a cost centre to the subscription. The id is generated by ExpenseOnDemand. Creates a new record each call. Cost Centre API: POST /costCentre/api/AddCostCentreForSubscription.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Cost centre name.",
      "type": "string"
    },
    "code": {
      "description": "Cost centre code 1.",
      "type": "string"
    },
    "code2": {
      "description": "Cost centre code 2.",
      "type": "string"
    },
    "isActive": {
      "description": "Whether the cost centre is active.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴expenseondemand_update_cost_centre(id, name, code, code2, isActive)

Update an existing cost centre by id. Send every field you want to keep: the vendor may clear fields you leave out, so read the record first with expenseondemand_list_cost_centres. Cost Centre API: POST /costCentre/api/UpdateCostCentreForSubscription.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Id of the cost centre to update (from expenseondemand_list_cost_centres)."
    },
    "name": {
      "description": "Cost centre name.",
      "type": "string"
    },
    "code": {
      "description": "Cost centre code 1.",
      "type": "string"
    },
    "code2": {
      "description": "Cost centre code 2.",
      "type": "string"
    },
    "isActive": {
      "description": "Whether the cost centre is active.",
      "type": "boolean"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢expenseondemand_list_users

List the users (employees) of the subscription with email, name, status (1 Active, 2 Inactive, 3 NotInvited, 4 Pending, 5 Deleted), role and approver email. Users API: GET /users/api/GetUsersForOrganisation.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴expenseondemand_add_employee(email, firstName, lastName, employeeId, employeeId2, ...)

Add an employee to the subscription. ExpenseOnDemand treats the new employee as invited. Creates a record each call, so check expenseondemand_list_users first. Users API: POST /users/api/AddEmployee.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email ID of the employee."
    },
    "firstName": {
      "type": "string",
      "description": "First name of the employee."
    },
    "lastName": {
      "type": "string",
      "description": "Last name of the employee."
    },
    "employeeId": {
      "type": "string",
      "description": "Employee ID 1 (your HR or payroll id)."
    },
    "employeeId2": {
      "description": "Employee ID 2 (optional).",
      "type": "string"
    },
    "employeeId3": {
      "description": "Employee ID 3 (optional).",
      "type": "string"
    },
    "employeeId4": {
      "description": "Employee ID 4 (optional).",
      "type": "string"
    },
    "employeeRole": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3,
      "description": "Role: 1 = Claimant, 2 = Approver, 3 = Finance Manager."
    },
    "approverEmail": {
      "description": "Email of the approver assigned to this employee.",
      "type": "string"
    }
  },
  "required": [
    "email",
    "firstName",
    "lastName",
    "employeeId",
    "employeeRole"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴expenseondemand_update_employee(email, firstName, lastName, employeeId, employeeId2, ...)

Update an existing employee, identified by email. Send every field you want to keep: the vendor may clear fields you leave out, so read the record first with expenseondemand_list_users. Users API: POST /users/api/UpdateEmployee.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email ID of the employee."
    },
    "firstName": {
      "type": "string",
      "description": "First name of the employee."
    },
    "lastName": {
      "type": "string",
      "description": "Last name of the employee."
    },
    "employeeId": {
      "type": "string",
      "description": "Employee ID 1 (your HR or payroll id)."
    },
    "employeeId2": {
      "description": "Employee ID 2 (optional).",
      "type": "string"
    },
    "employeeId3": {
      "description": "Employee ID 3 (optional).",
      "type": "string"
    },
    "employeeId4": {
      "description": "Employee ID 4 (optional).",
      "type": "string"
    },
    "employeeRole": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3,
      "description": "Role: 1 = Claimant, 2 = Approver, 3 = Finance Manager."
    },
    "approverEmail": {
      "description": "Email of the approver assigned to this employee.",
      "type": "string"
    }
  },
  "required": [
    "email",
    "firstName",
    "lastName",
    "employeeId",
    "employeeRole"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴expenseondemand_deactivate_employee(email)

Deactivate an employee by email, so they can no longer submit or approve expenses. Users API: POST /users/api/DeactivateEmployee.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email ID of the employee to deactivate."
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada15 herramientas