ExpenseIn MCP by usefulapi
Read expenses, invoices, receipts and card transactions, and add expenses or notes in ExpenseIn.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (4)
- LOWen expensein_list_expenses_for_approval
- LOWen expensein_list_card_transactions
- LOWen expensein_list_purchase_requests
- LOWen expensein_get_server_change_counter
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
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": {
"expensein": {
"url": "https://expensein.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://expensein.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (21)
🟢expensein_list_expenses(user_id, expense_type, expense_status, expense_date_from, expense_date_to, ...)
List expenses with optional filters by user, type, status, and Unix-second date ranges (expense, submitted, approved). Returns the full filtered set. ExpenseIn API: GET /1.0/expenses.
Esquema de entrada
{
"type": "object",
"properties": {
"user_id": {
"description": "Only expenses of this user id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"expense_type": {
"description": "Expense type.",
"type": "string",
"enum": [
"purchase",
"mileage",
"time",
"mileageLog"
]
},
"expense_status": {
"description": "Approval status.",
"type": "string",
"enum": [
"draft",
"awaitingApproval",
"rejected",
"approved"
]
},
"expense_date_from": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"expense_date_to": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"submitted_date_from": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"submitted_date_to": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"approved_date_from": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"approved_date_to": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_get_expense(expense_id)
Get one expense by id. ExpenseIn API: GET /1.0/expenses/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"expense_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The expense id (from expensein_list_expenses)."
}
},
"required": [
"expense_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_expenses_for_approval(status, approver_user_id, from, to)
List expenses awaiting, approved or rejected by approval. 'from' and 'to' (Unix seconds) filter approved or rejected expenses only. ExpenseIn API: GET /1.0/approval/expenses/{awaiting|approved|rejected}.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"awaiting",
"approved",
"rejected"
],
"description": "Which approval queue to read."
},
"approver_user_id": {
"description": "Only expenses routed to this approver user id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"from": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"to": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
}
},
"required": [
"status"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_invoices(reference, invoice_type, invoice_status, supplier_id, approver_id, ...)
List supplier invoices and credit notes, with filters by status, supplier, approver and date. Returns the full filtered set. ExpenseIn API: GET /1.0/invoices.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"invoice_type": {
"description": "Invoice or credit note.",
"type": "string",
"enum": [
"invoice",
"creditNote"
]
},
"invoice_status": {
"description": "Approval status.",
"type": "string",
"enum": [
"draft",
"awaitingApproval",
"approved",
"rejected"
]
},
"supplier_id": {
"description": "Only invoices from this supplier id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"approver_id": {
"description": "Only invoices routed to this approver user id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"complete": {
"description": "true = complete, false = not complete.",
"type": "boolean"
},
"invoice_date_from": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"invoice_date_to": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_get_invoice(invoice_id)
Get one invoice by id. ExpenseIn API: GET /1.0/invoices/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The invoice id (from expensein_list_invoices)."
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴expensein_add_invoice_note(invoice_id, note)
Add a free-text note to an invoice. This adds a new note each time, so do not repeat the call. ExpenseIn API: POST /1.0/invoices/{id}/note.
Esquema de entrada
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The invoice id to annotate."
},
"note": {
"type": "string",
"minLength": 1,
"description": "The note text."
}
},
"required": [
"invoice_id",
"note"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_receipts(user_id, expense_id, from_date, to_date, purchase_method_id, ...)
List receipts with optional filters by user, expense, date range and whether they are attached to an expense. ExpenseIn API: GET /1.0/receipts.
Esquema de entrada
{
"type": "object",
"properties": {
"user_id": {
"description": "Only receipts of this user id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"expense_id": {
"description": "Only receipts attached to this expense id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"from_date": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"to_date": {
"description": "Unix time in seconds (UTC).",
"type": "number",
"minimum": 0
},
"purchase_method_id": {
"description": "Only receipts paid with this purchase method id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"is_attached": {
"description": "true = attached to an expense, false = not attached.",
"type": "boolean"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_get_receipt(receipt_id)
Get one receipt by id. ExpenseIn API: GET /1.0/receipts/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"receipt_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The receipt id (from expensein_list_receipts)."
}
},
"required": [
"receipt_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_users(reference, email, search_term, include_leavers, include_deleted, ...)
List standard users, with filters by reference, e-mail, or a search term. ExpenseIn API: GET /1.0/users.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"email": {
"description": "Only the user with this e-mail address.",
"type": "string"
},
"search_term": {
"description": "Match names or e-mail addresses that contain this text.",
"type": "string"
},
"include_leavers": {
"description": "Include users who have left.",
"type": "boolean"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_get_user(user_id)
Get one standard user by id. ExpenseIn API: GET /1.0/users/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The user id (from expensein_list_users)."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_categories(reference, include_deleted, last_server_change_counter)
List expense categories and what each applies to (purchase, mileage, time, invoicing), with visibility and default tax rate. ExpenseIn API: GET /1.0/categories. Also the cheapest call to test an API key.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_projects(reference, include_deleted, last_server_change_counter)
List projects. ExpenseIn API: GET /1.0/projects.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_departments(reference, include_deleted, last_server_change_counter)
List departments. ExpenseIn API: GET /1.0/departments.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_suppliers(reference, search_term, include_deleted)
List suppliers. ExpenseIn API: GET /1.0/suppliers.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"search_term": {
"description": "Match supplier names that contain this text.",
"type": "string"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_merchants(reference, include_deleted, last_server_change_counter)
List merchants. ExpenseIn API: GET /1.0/merchants.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_tax_rates(reference, include_deleted, last_server_change_counter)
List tax rates. ExpenseIn API: GET /1.0/taxrates.
Esquema de entrada
{
"type": "object",
"properties": {
"reference": {
"description": "Filter by the record's reference code.",
"type": "string"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"last_server_change_counter": {
"description": "Sync counter from expensein_get_server_change_counter. Returns only records changed since then; 0 for a first full sync.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_policies
List the expense policies on the account. ExpenseIn API: GET /1.0/policies.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_card_transactions(from, to, cardholder_id, search_term)
List expense-card transactions, filtered by Unix-second date range, cardholder id or a search term. Returns the full filtered set. ExpenseIn API: GET /1.0/cardtransactions.
Esquema de entrada
{
"type": "object",
"properties": {
"from": {
"description": "Start of the transaction date range (Unix seconds, UTC).",
"type": "number",
"minimum": 0
},
"to": {
"description": "End of the transaction date range (Unix seconds, UTC).",
"type": "number",
"minimum": 0
},
"cardholder_id": {
"description": "Only transactions of this cardholder id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"search_term": {
"description": "Match merchant or description text.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_list_purchase_requests(owner_id, status)
List purchase requests, filtered by owner user id and status. ExpenseIn API: GET /1.0/purchaserequests.
Esquema de entrada
{
"type": "object",
"properties": {
"owner_id": {
"description": "Only requests owned by this user id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"description": "Request status.",
"type": "string",
"enum": [
"draft",
"awaitingApproval",
"approved",
"rejected",
"accepted",
"closed"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢expensein_get_server_change_counter
Get the current server change counter. Save it after a sync, then pass it as last_server_change_counter next time to read only changes. ExpenseIn API: GET /1.0/serverchangecounter.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴expensein_create_expense(type, expense_date, user_id, description, notes, ...)
Create a new expense for a user. Each call creates another expense, so do not repeat it. ExpenseIn API: POST /1.0/expenses.
Esquema de entrada
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"purchase",
"mileage",
"time",
"mileageLog"
],
"description": "Expense type."
},
"expense_date": {
"type": "number",
"minimum": 0,
"description": "Date of the expense (Unix seconds, UTC)."
},
"user_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The user id the expense belongs to (from expensein_list_users)."
},
"description": {
"type": "string",
"minLength": 1,
"description": "Short description of the expense."
},
"notes": {
"description": "Longer notes.",
"type": "string"
},
"category_id": {
"description": "Category id (from expensein_list_categories).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"project_id": {
"description": "Project id (from expensein_list_projects).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"department_id": {
"description": "Department id (from expensein_list_departments).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tax_rate_id": {
"description": "Tax rate id (from expensein_list_tax_rates).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"tax_amount": {
"description": "Tax amount in the account currency.",
"type": "number"
},
"is_billable": {
"description": "Whether the expense is billable to a client.",
"type": "boolean"
}
},
"required": [
"type",
"expense_date",
"user_id",
"description"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia