ExpenseOnDemand MCP by usefulapi

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

Sollte ich dies verwenden

Qualität und Sicherheit

C
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
65%
Qualität der Benennung
67%
Risiko der Vergiftung
0%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (18)

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

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~2,600Tokens (Tool-Definitionen)
~1.2 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.03% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

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

Remote-Endpunkte

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

Was es kann

Tool-Inventar

Tools (15)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet15 Tools