ExpenseIn MCP by usefulapi
Read expenses, invoices, receipts and card transactions, and add expenses or notes in ExpenseIn.
使うべきか
品質と安全性
検出事項(4)
- LOWexpensein_list_expenses_for_approval 内
- LOWexpensein_list_card_transactions 内
- LOWexpensein_list_purchase_requests 内
- LOWexpensein_get_server_change_counter 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"expensein": {
"url": "https://expensein.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://expensein.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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"
}コミュニティ
エビデンス