FreeAgent MCP by usefulapi
Read FreeAgent contacts, invoices, bills, banking and reports; add contacts, draft invoices, time.
我該用這個嗎
品質與安全性
發現項目(1)
- LOW在 freeagent_list_bank_transactions 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"freeagent": {
"url": "https://freeagent.usefulapi.io/mcp"
}
}
}遠端端點
https://freeagent.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(20)
🟢freeagent_get_company
Fetch the FreeAgent company these credentials belong to — name, type (e.g. UkLimitedCompany), currency, start date and VAT registration status. A cheap way to confirm the setup works. FreeAgent: GET /v2/company.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_get_current_user
Fetch the FreeAgent user the token acts as, including their URL (needed for freeagent_create_timeslip) and permission level. FreeAgent: GET /v2/users/me.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_get_tax_timeline
List upcoming tax deadlines and amounts due — VAT returns, corporation tax, self assessment and so on. FreeAgent: GET /v2/company/tax_timeline.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_contacts(view, sort, updated_since, page, per_page)
List contacts (clients and suppliers), with their account balance. FreeAgent: GET /v2/contacts.
輸入結構描述
{
"type": "object",
"properties": {
"view": {
"description": "Filter (default active). open_clients = clients with unpaid invoices.",
"type": "string",
"enum": [
"all",
"active",
"clients",
"suppliers",
"active_projects",
"completed_projects",
"open_clients",
"open_suppliers",
"hidden"
]
},
"sort": {
"description": "Sort order; a leading - means descending.",
"type": "string",
"enum": [
"name",
"-name",
"created_at",
"-created_at",
"updated_at",
"-updated_at"
]
},
"updated_since": {
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z.",
"type": "string"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_get_contact(contact)
Fetch a single contact by id or URL. FreeAgent: GET /v2/contacts/:id.
輸入結構描述
{
"type": "object",
"properties": {
"contact": {
"type": "string",
"description": "The contact's numeric id or full FreeAgent URL."
}
},
"required": [
"contact"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_invoices(view, sort, contact, project, updated_since, ...)
List sales invoices, optionally for one contact or project, filtered by status. FreeAgent: GET /v2/invoices.
輸入結構描述
{
"type": "object",
"properties": {
"view": {
"description": "Filter: all, recent_open_or_overdue, open, overdue, open_or_overdue, draft, paid, scheduled_to_email, thank_you_emails, reminder_emails, or last_N_months (e.g. last_3_months).",
"type": "string",
"pattern": "^(all|recent_open_or_overdue|open|overdue|open_or_overdue|draft|paid|scheduled_to_email|thank_you_emails|reminder_emails|last_\\d+_months)$"
},
"sort": {
"description": "Sort order (default created_at); a leading - means descending.",
"type": "string",
"enum": [
"created_at",
"-created_at",
"updated_at",
"-updated_at"
]
},
"contact": {
"description": "Only for this contact — its numeric id or full FreeAgent URL.",
"type": "string"
},
"project": {
"description": "Only for this project — its numeric id or full FreeAgent URL.",
"type": "string"
},
"updated_since": {
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z.",
"type": "string"
},
"nested_invoice_items": {
"description": "Include each invoice's line items.",
"type": "boolean"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_get_invoice(invoice)
Fetch a single invoice by id or URL, with its line items, totals, due and paid values. FreeAgent: GET /v2/invoices/:id.
輸入結構描述
{
"type": "object",
"properties": {
"invoice": {
"type": "string",
"description": "The invoice's numeric id or full FreeAgent URL."
}
},
"required": [
"invoice"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_bills(view, from_date, to_date, updated_since, contact, ...)
List supplier bills (purchases), optionally by date range, contact or project, filtered by status. FreeAgent: GET /v2/bills.
輸入結構描述
{
"type": "object",
"properties": {
"view": {
"description": "Filter by status.",
"type": "string",
"enum": [
"all",
"open",
"overdue",
"open_or_overdue",
"open_or_overdue_payments",
"open_or_overdue_refunds",
"paid",
"recurring",
"hire_purchase",
"cis"
]
},
"from_date": {
"description": "Bills dated on or after (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to_date": {
"description": "Bills dated on or before (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updated_since": {
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z.",
"type": "string"
},
"contact": {
"description": "Only for this contact — its numeric id or full FreeAgent URL.",
"type": "string"
},
"project": {
"description": "Only for this project — its numeric id or full FreeAgent URL.",
"type": "string"
},
"nested_bill_items": {
"description": "Include each bill's line items.",
"type": "boolean"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_expenses(view, from_date, to_date, updated_since, project, ...)
List expense claims (out-of-pocket spending and mileage), optionally by date range or project. FreeAgent: GET /v2/expenses.
輸入結構描述
{
"type": "object",
"properties": {
"view": {
"description": "recent or recurring expenses.",
"type": "string",
"enum": [
"recent",
"recurring"
]
},
"from_date": {
"description": "Expenses dated on or after (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to_date": {
"description": "Expenses dated on or before (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updated_since": {
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z.",
"type": "string"
},
"project": {
"description": "Only for this project — its numeric id or full FreeAgent URL.",
"type": "string"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_bank_accounts(view)
List bank, credit-card and PayPal accounts with their current balances. Use an account's URL with freeagent_list_bank_transactions. FreeAgent: GET /v2/bank_accounts.
輸入結構描述
{
"type": "object",
"properties": {
"view": {
"description": "Only one kind of account.",
"type": "string",
"enum": [
"standard_bank_accounts",
"credit_card_accounts",
"paypal_accounts"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_bank_transactions(bank_account, view, from_date, to_date, updated_since, ...)
List the transactions on one bank account, e.g. view=unexplained for what still needs reconciling. FreeAgent: GET /v2/bank_transactions?bank_account=….
輸入結構描述
{
"type": "object",
"properties": {
"bank_account": {
"type": "string",
"description": "The bank account's numeric id or full FreeAgent URL."
},
"view": {
"description": "Filter (default all). unexplained = not yet reconciled.",
"type": "string",
"enum": [
"all",
"unexplained",
"explained",
"manual",
"imported",
"marked_for_review"
]
},
"from_date": {
"description": "Transactions dated on or after (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to_date": {
"description": "Transactions dated on or before (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updated_since": {
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z.",
"type": "string"
},
"last_uploaded": {
"description": "Only transactions from the latest statement upload.",
"type": "boolean"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"bank_account"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_projects(view, sort, contact, nested, page, ...)
List projects, optionally for one contact. FreeAgent: GET /v2/projects.
輸入結構描述
{
"type": "object",
"properties": {
"view": {
"description": "Filter by status.",
"type": "string",
"enum": [
"active",
"completed",
"cancelled",
"hidden"
]
},
"sort": {
"description": "Sort order; a leading - means descending.",
"type": "string",
"enum": [
"name",
"-name",
"contact_name",
"-contact_name",
"contact_display_name",
"-contact_display_name",
"created_at",
"-created_at",
"updated_at",
"-updated_at"
]
},
"contact": {
"description": "Only for this contact — its numeric id or full FreeAgent URL.",
"type": "string"
},
"nested": {
"description": "Embed the related contact instead of its URL.",
"type": "boolean"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_tasks(project, view, sort, updated_since, page, ...)
List project tasks with their billing rates, optionally for one project. A task's URL is needed for freeagent_create_timeslip. FreeAgent: GET /v2/tasks.
輸入結構描述
{
"type": "object",
"properties": {
"project": {
"description": "Only for this project — its numeric id or full FreeAgent URL.",
"type": "string"
},
"view": {
"description": "Filter by status (default all).",
"type": "string",
"enum": [
"all",
"active",
"completed",
"hidden"
]
},
"sort": {
"description": "Sort order (default name).",
"type": "string",
"enum": [
"name",
"project",
"billing_rate",
"created_at",
"updated_at"
]
},
"updated_since": {
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z.",
"type": "string"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_list_timeslips(from_date, to_date, updated_since, view, user, ...)
List logged time, optionally by date range, user, task or project; view=unbilled for time not yet invoiced. FreeAgent: GET /v2/timeslips.
輸入結構描述
{
"type": "object",
"properties": {
"from_date": {
"description": "Timeslips dated on or after (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to_date": {
"description": "Timeslips dated on or before (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updated_since": {
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z.",
"type": "string"
},
"view": {
"description": "Filter (default all).",
"type": "string",
"enum": [
"all",
"unbilled",
"running"
]
},
"user": {
"description": "Only for this user — its numeric id or full FreeAgent URL.",
"type": "string"
},
"task": {
"description": "Only for this task — its numeric id or full FreeAgent URL.",
"type": "string"
},
"project": {
"description": "Only for this project — its numeric id or full FreeAgent URL.",
"type": "string"
},
"nested": {
"description": "Embed related user, task and project instead of URLs.",
"type": "boolean"
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Items per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_get_profit_and_loss(from_date, to_date, accounting_period)
Profit and loss summary — income, expenses, operating and retained profit — for a date range or an accounting period (defaults to the current year to date). FreeAgent: GET /v2/accounting/profit_and_loss/summary.
輸入結構描述
{
"type": "object",
"properties": {
"from_date": {
"description": "Period start (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to_date": {
"description": "Period end (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"accounting_period": {
"description": "An accounting year instead of dates, e.g. 2025/26.",
"type": "string",
"pattern": "^\\d{4}\\/\\d{2}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢freeagent_get_balance_sheet(as_at_date)
Balance sheet — capital and current assets, liabilities and owners' equity — as at a date (default today). FreeAgent: GET /v2/accounting/balance_sheet.
輸入結構描述
{
"type": "object",
"properties": {
"as_at_date": {
"description": "Balance sheet date (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴freeagent_create_contact(first_name, last_name, organisation_name, email, billing_email, ...)
Create a client or supplier contact. Give either organisation_name, or first_name and last_name. FreeAgent: POST /v2/contacts.
輸入結構描述
{
"type": "object",
"properties": {
"first_name": {
"description": "Contact first name.",
"type": "string"
},
"last_name": {
"description": "Contact last name.",
"type": "string"
},
"organisation_name": {
"description": "Organisation / company name.",
"type": "string"
},
"email": {
"description": "Email address.",
"type": "string"
},
"billing_email": {
"description": "Email address invoices are sent to.",
"type": "string"
},
"phone_number": {
"description": "Phone number.",
"type": "string"
},
"mobile": {
"description": "Mobile number.",
"type": "string"
},
"address1": {
"description": "Address line 1.",
"type": "string"
},
"address2": {
"description": "Address line 2.",
"type": "string"
},
"address3": {
"description": "Address line 3.",
"type": "string"
},
"town": {
"description": "Town or city.",
"type": "string"
},
"region": {
"description": "Region / county.",
"type": "string"
},
"postcode": {
"description": "Postcode.",
"type": "string"
},
"country": {
"description": "Country name, e.g. United Kingdom.",
"type": "string"
},
"contact_name_on_invoices": {
"description": "Show the contact's name on invoices.",
"type": "boolean"
},
"default_payment_terms_in_days": {
"description": "Default payment terms for invoices to this contact.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"locale": {
"description": "Invoice language locale, e.g. en.",
"type": "string"
},
"charge_sales_tax": {
"description": "Whether to charge VAT/sales tax.",
"type": "string",
"enum": [
"Auto",
"Always",
"Never"
]
},
"sales_tax_registration_number": {
"description": "The contact's VAT registration number.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴freeagent_update_contact(contact, first_name, last_name, organisation_name, email, ...)
Update fields on an existing contact; only the fields you pass change. status=Hidden hides it (reversible with Active). FreeAgent: PUT /v2/contacts/:id.
輸入結構描述
{
"type": "object",
"properties": {
"contact": {
"type": "string",
"description": "The contact's numeric id or full FreeAgent URL."
},
"first_name": {
"description": "Contact first name.",
"type": "string"
},
"last_name": {
"description": "Contact last name.",
"type": "string"
},
"organisation_name": {
"description": "Organisation / company name.",
"type": "string"
},
"email": {
"description": "Email address.",
"type": "string"
},
"billing_email": {
"description": "Email address invoices are sent to.",
"type": "string"
},
"phone_number": {
"description": "Phone number.",
"type": "string"
},
"mobile": {
"description": "Mobile number.",
"type": "string"
},
"address1": {
"description": "Address line 1.",
"type": "string"
},
"address2": {
"description": "Address line 2.",
"type": "string"
},
"address3": {
"description": "Address line 3.",
"type": "string"
},
"town": {
"description": "Town or city.",
"type": "string"
},
"region": {
"description": "Region / county.",
"type": "string"
},
"postcode": {
"description": "Postcode.",
"type": "string"
},
"country": {
"description": "Country name, e.g. United Kingdom.",
"type": "string"
},
"contact_name_on_invoices": {
"description": "Show the contact's name on invoices.",
"type": "boolean"
},
"default_payment_terms_in_days": {
"description": "Default payment terms for invoices to this contact.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"locale": {
"description": "Invoice language locale, e.g. en.",
"type": "string"
},
"charge_sales_tax": {
"description": "Whether to charge VAT/sales tax.",
"type": "string",
"enum": [
"Auto",
"Always",
"Never"
]
},
"sales_tax_registration_number": {
"description": "The contact's VAT registration number.",
"type": "string"
},
"status": {
"description": "Hide or unhide the contact.",
"type": "string",
"enum": [
"Active",
"Hidden"
]
}
},
"required": [
"contact"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴freeagent_create_draft_invoice(contact, dated_on, payment_terms_in_days, due_on, reference, ...)
Create a sales invoice in DRAFT status. Nothing is sent to the customer and nothing is posted as income until it is marked sent in FreeAgent; a draft can be edited or discarded there. FreeAgent: POST /v2/invoices.
輸入結構描述
{
"type": "object",
"properties": {
"contact": {
"type": "string",
"description": "The contact being invoiced's numeric id or full FreeAgent URL."
},
"dated_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Invoice date (YYYY-MM-DD)."
},
"payment_terms_in_days": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Payment terms in days; 0 = due on receipt."
},
"due_on": {
"description": "Explicit due date, if not derived from payment terms (YYYY-MM-DD).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"reference": {
"description": "Invoice reference/number; omit to use the next in sequence.",
"type": "string"
},
"currency": {
"description": "ISO currency code, e.g. GBP (defaults to the company currency).",
"type": "string",
"minLength": 3,
"maxLength": 3
},
"exchange_rate": {
"description": "Exchange rate for a foreign-currency invoice.",
"type": "number",
"exclusiveMinimum": 0
},
"project": {
"description": "The project's numeric id or full FreeAgent URL.",
"type": "string"
},
"po_reference": {
"description": "The customer's purchase-order reference.",
"type": "string"
},
"comments": {
"description": "Comments printed on the invoice.",
"type": "string"
},
"discount_percent": {
"description": "Whole-invoice discount percentage.",
"type": "number",
"minimum": 0,
"maximum": 100
},
"invoice_items": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Line description."
},
"item_type": {
"description": "Unit type of the line (e.g. Hours, Days, Services, Products).",
"type": "string",
"enum": [
"Hours",
"Days",
"Weeks",
"Months",
"Years",
"Products",
"Services",
"Training",
"Expenses",
"Comment",
"Bills",
"Discount",
"Credit",
"VAT",
"Stock"
]
},
"quantity": {
"description": "Quantity (default 0).",
"type": "number"
},
"price": {
"description": "Unit price, in the invoice currency (required for non time-based items).",
"type": "number"
},
"sales_tax_rate": {
"description": "VAT rate percentage for this line, e.g. 20.",
"type": "number",
"minimum": 0
}
},
"required": [
"description"
]
},
"description": "The invoice lines."
}
},
"required": [
"contact",
"dated_on",
"payment_terms_in_days",
"invoice_items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴freeagent_create_timeslip(user, project, task, dated_on, hours, ...)
Log time against a project task for a user. Get the user from freeagent_get_current_user and the task from freeagent_list_tasks. Editable or removable in FreeAgent afterwards. FreeAgent: POST /v2/timeslips.
輸入結構描述
{
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The user's numeric id or full FreeAgent URL."
},
"project": {
"type": "string",
"description": "The project's numeric id or full FreeAgent URL."
},
"task": {
"type": "string",
"description": "The task's numeric id or full FreeAgent URL."
},
"dated_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Day the work was done (YYYY-MM-DD)."
},
"hours": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 24,
"description": "Hours worked, e.g. 1.5."
},
"comment": {
"description": "What the time was spent on.",
"type": "string"
}
},
"required": [
"user",
"project",
"task",
"dated_on",
"hours"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據