Hiveage MCP by usefulapi
Manage Hiveage clients, invoices, estimates and payments; send invoices and record payments.
Should I use this
Quality & Safety
Findings (5)
- LOWin hiveage_list_connection_invoices
- LOWin hiveage_list_connection_estimates
- LOWin hiveage_list_connection_recurring_invoices
- LOWin hiveage_list_recurring_invoices
- LOWin hiveage_list_recurring_invoice_invoices
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"hiveage": {
"url": "https://hiveage.usefulapi.io/mcp"
}
}
}Remote endpoints
https://hiveage.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (28)
🟢hiveage_list_connections(page, per_page, order)
List connections: the companies, clients and vendors in the account's network, sorted by name. Each has a hash_key (used by other tools) and a numeric id (used as connection_id when creating invoices). Hiveage: GET /network.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
},
"order": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_get_connection(hash_key)
Get one connection (client, vendor or company) by hash_key. Hiveage: GET /network/{hash_key}.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_connection_invoices(hash_key, page, per_page)
List the invoices of one connection (client), by date. Hiveage: GET /network/{hash_key}/invoices.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_connection_estimates(hash_key, page, per_page)
List the estimates of one connection (client). Hiveage: GET /network/{hash_key}/estimates.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_connection_recurring_invoices(hash_key, page, per_page)
List the recurring invoice profiles of one connection (client). Hiveage: GET /network/{hash_key}/recurring_invoices.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_contacts(hash_key, page, per_page, order)
List the contacts (people with an email address for sending statements) of a connection. Hiveage: GET /network/{hash_key}/contacts.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
},
"order": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_get_contact(hash_key, id)
Get one contact of a connection by its numeric id. Hiveage: GET /network/{hash_key}/contacts/{id}.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The contact id."
}
},
"required": [
"hash_key",
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_invoices(page, per_page, order)
List invoices (state draft, viewed, sent, paid or partial) with totals, sorted by date. Hiveage: GET /invs.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
},
"order": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_get_invoice(hash_key)
Get one invoice by hash_key, with its line items, taxes, discounts and shipping. Hiveage: GET /invs/{hash_key}.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_estimates(page, per_page, order)
List estimates (quotes), sorted by date. Hiveage: GET /estm.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
},
"order": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_get_estimate(hash_key)
Get one estimate by hash_key, with its line items. Hiveage: GET /estm/{hash_key}.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the estimate (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_recurring_invoices(page, per_page)
List recurring invoice profiles (interval, next billing date, occurrences). Hiveage: GET /rinv.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_get_recurring_invoice(hash_key)
Get one recurring invoice profile by hash_key. Hiveage: GET /rinv/{hash_key}.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the recurring invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_recurring_invoice_invoices(hash_key, page, per_page)
List the invoices a recurring invoice profile has generated. Hiveage: GET /rinv/{hash_key}/invoices.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the recurring invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_payments(hash_key, page, per_page)
List the payments entered on an invoice. Hiveage: GET /invs/{hash_key}/payments.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
}
},
"required": [
"hash_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_get_payment(hash_key, id)
Get one payment of an invoice by its numeric id. Hiveage: GET /invs/{hash_key}/payments/{id}.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The payment id."
}
},
"required": [
"hash_key",
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hiveage_list_categories(kind, page, per_page, order)
List the saved line-item templates: kind items (saved items with price and unit), expenses, tasks (with rate) or trips (with rate). Hiveage: GET /categories/{kind}.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"items",
"expenses",
"tasks",
"trips"
],
"description": "Which saved list to read."
},
"page": {
"description": "Page number, starting at 1.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page: 20 (default), 60 or 100.",
"anyOf": [
{
"type": "number",
"const": 20
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 100
}
]
},
"order": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"required": [
"kind"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡hiveage_create_connection(category, name, first_name, last_name, business_email, ...)
WRITE: create a new connection (client, vendor or company) in the account. For an organization give `name`; for an individual give first_name and last_name. Hiveage: POST /network.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"organization",
"individual"
],
"description": "organization (use name) or individual (use first_name and last_name)."
},
"name": {
"description": "Organization name (organization only).",
"type": "string"
},
"first_name": {
"description": "First name (individual only).",
"type": "string"
},
"last_name": {
"description": "Last name (individual only).",
"type": "string"
},
"business_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Business email."
},
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"description": "ISO currency code, for example USD."
},
"language": {
"description": "Language code, default en-us (also en-uk, zh, da, nl, de, et, fil, fr, hi, it, ja, ko, ms, pt-br, ru, si, es).",
"type": "string"
},
"address": {
"type": "string"
},
"city": {
"type": "string"
},
"state_name": {
"type": "string"
},
"zip_code": {
"type": "string"
},
"country": {
"type": "string"
},
"phone": {
"type": "string"
},
"fax": {
"type": "string"
},
"website_url": {
"type": "string"
},
"primary_contact_first_name": {
"type": "string"
},
"primary_contact_last_name": {
"type": "string"
}
},
"required": [
"category",
"business_email",
"currency"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡hiveage_create_contact(hash_key, first_name, last_name, email, mobile, ...)
WRITE: add a contact (name and email, used when sending statements) to a connection. Hiveage: POST /network/{hash_key}/contacts.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"first_name": {
"type": "string",
"minLength": 1
},
"last_name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"mobile": {
"type": "string"
},
"phone": {
"type": "string"
}
},
"required": [
"hash_key",
"first_name",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hiveage_update_contact(hash_key, id, first_name, last_name, email, ...)
WRITE: change fields of a contact (only the fields you pass are sent). Hiveage: PUT /network/{hash_key}/contacts/{id}.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the connection (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The contact id."
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"mobile": {
"type": "string"
},
"phone": {
"type": "string"
}
},
"required": [
"hash_key",
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡hiveage_create_invoice(connection_id, statement_no, date, due_date, summary, ...)
WRITE: create an invoice (starts as a draft; nothing is emailed) for a connection. statement_no must be unique. connection_id is the numeric `id` from hiveage_list_connections. Hiveage: POST /invs.
Input Schema
{
"type": "object",
"properties": {
"connection_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The numeric id (not the hash_key) of the connection to bill."
},
"statement_no": {
"type": "string",
"minLength": 1,
"description": "Unique invoice number, for example IN-001."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Invoice date, YYYY-MM-DD."
},
"due_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Due date, YYYY-MM-DD."
},
"summary": {
"type": "string"
},
"note": {
"type": "string"
},
"po_number": {
"type": "string"
},
"payment_options": {
"description": "Accepted payment methods.",
"type": "array",
"items": {
"type": "string",
"enum": [
"cash",
"check",
"bank_transfer",
"paypal"
]
}
},
"allow_partial_payments": {
"type": "boolean"
},
"send_receipts_automatically": {
"type": "boolean"
},
"send_reminders": {
"type": "boolean"
},
"items": {
"description": "Item lines (description, price, quantity).",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string",
"description": "Line description."
},
"price": {
"description": "Unit price.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"quantity": {
"description": "Quantity.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"unit": {
"description": "Unit label such as \"hourly\".",
"type": "string"
}
},
"required": [
"description",
"price",
"quantity"
]
}
},
"expenses": {
"description": "Expense lines.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string"
},
"amount": {
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
}
},
"required": [
"description",
"amount"
]
}
},
"tasks": {
"description": "Time task lines.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string"
},
"duration": {
"description": "Duration in minutes.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"rate": {
"description": "Rate per hour.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
}
},
"required": [
"description",
"duration",
"rate"
]
}
},
"trips": {
"description": "Mileage lines.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string"
},
"distance": {
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"rate": {
"description": "Rate per distance unit.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
}
},
"required": [
"description",
"distance",
"rate"
]
}
},
"taxes": {
"description": "Taxes added to the sub total.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name, for example \"VAT\"."
},
"combined_amount_percent": {
"type": "string",
"description": "Fixed or percentage value, for example \"5.00\" or \"5.25%\"."
},
"percentage": {
"description": "true if the value is a percentage.",
"type": "boolean"
}
},
"required": [
"name",
"combined_amount_percent"
]
}
},
"discounts": {
"description": "Discounts applied to the sub total.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name, for example \"VAT\"."
},
"combined_amount_percent": {
"type": "string",
"description": "Fixed or percentage value, for example \"5.00\" or \"5.25%\"."
},
"percentage": {
"description": "true if the value is a percentage.",
"type": "boolean"
}
},
"required": [
"name",
"combined_amount_percent"
]
}
},
"shipping_amounts": {
"description": "Shipping charges.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name, for example \"VAT\"."
},
"combined_amount_percent": {
"type": "string",
"description": "Fixed or percentage value, for example \"5.00\" or \"5.25%\"."
},
"percentage": {
"description": "true if the value is a percentage.",
"type": "boolean"
}
},
"required": [
"name",
"combined_amount_percent"
]
}
}
},
"required": [
"connection_id",
"statement_no",
"date",
"due_date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡hiveage_create_estimate(connection_id, statement_no, date, expire_date, summary, ...)
WRITE: create an estimate (quote; starts as a draft, nothing is emailed) for a connection. statement_no must be unique. Hiveage: POST /estm.
Input Schema
{
"type": "object",
"properties": {
"connection_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The numeric id (not the hash_key) of the connection."
},
"statement_no": {
"type": "string",
"minLength": 1,
"description": "Unique estimate number, for example EST-001."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Estimate date, YYYY-MM-DD."
},
"expire_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Expiry date, YYYY-MM-DD."
},
"summary": {
"type": "string"
},
"note": {
"type": "string"
},
"send_reminders": {
"type": "boolean"
},
"items": {
"description": "Item lines (description, price, quantity).",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string",
"description": "Line description."
},
"price": {
"description": "Unit price.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"quantity": {
"description": "Quantity.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"unit": {
"description": "Unit label such as \"hourly\".",
"type": "string"
}
},
"required": [
"description",
"price",
"quantity"
]
}
},
"expenses": {
"description": "Expense lines.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string"
},
"amount": {
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
}
},
"required": [
"description",
"amount"
]
}
},
"tasks": {
"description": "Time task lines.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string"
},
"duration": {
"description": "Duration in minutes.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"rate": {
"description": "Rate per hour.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
}
},
"required": [
"description",
"duration",
"rate"
]
}
},
"trips": {
"description": "Mileage lines.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": {
"type": "string"
},
"distance": {
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"rate": {
"description": "Rate per distance unit.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
}
},
"required": [
"description",
"distance",
"rate"
]
}
},
"taxes": {
"description": "Taxes added to the sub total.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name, for example \"VAT\"."
},
"combined_amount_percent": {
"type": "string",
"description": "Fixed or percentage value, for example \"5.00\" or \"5.25%\"."
},
"percentage": {
"description": "true if the value is a percentage.",
"type": "boolean"
}
},
"required": [
"name",
"combined_amount_percent"
]
}
},
"discounts": {
"description": "Discounts applied to the sub total.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name, for example \"VAT\"."
},
"combined_amount_percent": {
"type": "string",
"description": "Fixed or percentage value, for example \"5.00\" or \"5.25%\"."
},
"percentage": {
"description": "true if the value is a percentage.",
"type": "boolean"
}
},
"required": [
"name",
"combined_amount_percent"
]
}
},
"shipping_amounts": {
"description": "Shipping charges.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name, for example \"VAT\"."
},
"combined_amount_percent": {
"type": "string",
"description": "Fixed or percentage value, for example \"5.00\" or \"5.25%\"."
},
"percentage": {
"description": "true if the value is a percentage.",
"type": "boolean"
}
},
"required": [
"name",
"combined_amount_percent"
]
}
}
},
"required": [
"connection_id",
"statement_no",
"date",
"expire_date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hiveage_record_payment(hash_key, amount, payment_method, date, details)
WRITE: enter a payment received on an invoice (changes its paid and due totals). Offline payments (cash, check, bank_transfer) are saved as unrealized until marked realized. Hiveage: POST /invs/{hash_key}/payments.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"amount": {
"description": "Payment amount, for example 10.00.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"payment_method": {
"type": "string",
"enum": [
"cash",
"check",
"other",
"bank_transfer",
"google_wallet",
"wepay",
"twocheckout",
"paypal",
"paypal_pro",
"braintree",
"authorizenet",
"stripe"
],
"description": "How the invoice was paid."
},
"date": {
"description": "Date received, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"details": {
"description": "Payment description.",
"type": "string"
}
},
"required": [
"hash_key",
"amount",
"payment_method"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hiveage_mark_payment_realized(hash_key, id)
WRITE: mark an offline (unrealized) payment as realized, so it counts as received. Hiveage: POST /invs/{hash_key}/payments/{id}/mark_as_realized.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The payment id."
}
},
"required": [
"hash_key",
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡hiveage_create_saved_item(name, price, description, unit)
WRITE: save a reusable line item (name, price, unit) for statements. Hiveage: POST /categories/items.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"price": {
"description": "Price, for example 150.00.",
"anyOf": [
{
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
},
{
"type": "number"
}
]
},
"description": {
"type": "string"
},
"unit": {
"description": "Unit label such as \"hourly\".",
"type": "string"
}
},
"required": [
"name",
"price"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hiveage_send_invoice(hash_key, confirm, recipients, blind_copies, subject, ...)
WRITE, SENDS EMAIL: email an invoice to the client (the default invoice template to the connection's contacts, or a custom recipient/subject/message). Cannot be undone. Hiveage: POST /invs/{hash_key}/deliver.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: this emails real people from the Hiveage account."
},
"recipients": {
"description": "Custom TO addresses (all of recipients, subject and message are then needed). Omit for the default template and the connection's contacts.",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
}
},
"required": [
"name",
"email"
]
}
},
"blind_copies": {
"description": "BCC addresses (custom delivery only).",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
}
},
"required": [
"name",
"email"
]
}
},
"subject": {
"description": "Email subject (custom delivery only).",
"type": "string"
},
"message": {
"description": "Email body (custom delivery only).",
"type": "string"
},
"attachment": {
"description": "Attach the PDF (custom delivery only).",
"type": "boolean"
}
},
"required": [
"hash_key",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hiveage_send_invoice_reminder(hash_key, confirm, recipients, blind_copies, subject, ...)
WRITE, SENDS EMAIL: email a payment reminder for an invoice (default reminder template, or custom). Cannot be undone. Hiveage: POST /invs/{hash_key}/reminder.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the invoice (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: this emails real people from the Hiveage account."
},
"recipients": {
"description": "Custom TO addresses (all of recipients, subject and message are then needed). Omit for the default template and the connection's contacts.",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
}
},
"required": [
"name",
"email"
]
}
},
"blind_copies": {
"description": "BCC addresses (custom delivery only).",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
}
},
"required": [
"name",
"email"
]
}
},
"subject": {
"description": "Email subject (custom delivery only).",
"type": "string"
},
"message": {
"description": "Email body (custom delivery only).",
"type": "string"
},
"attachment": {
"description": "Attach the PDF (custom delivery only).",
"type": "boolean"
}
},
"required": [
"hash_key",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hiveage_send_estimate(hash_key, confirm, recipients, blind_copies, subject, ...)
WRITE, SENDS EMAIL: email an estimate to the client (default template, or custom). Cannot be undone. Hiveage: POST /estm/{hash_key}/deliver.
Input Schema
{
"type": "object",
"properties": {
"hash_key": {
"type": "string",
"minLength": 1,
"description": "The hash_key of the estimate (a short string such as \"bCbFYNj3RFM2uQ\"), not its numeric id."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: this emails real people from the Hiveage account."
},
"recipients": {
"description": "Custom TO addresses (all of recipients, subject and message are then needed). Omit for the default template and the connection's contacts.",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
}
},
"required": [
"name",
"email"
]
}
},
"blind_copies": {
"description": "BCC addresses (custom delivery only).",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
}
},
"required": [
"name",
"email"
]
}
},
"subject": {
"description": "Email subject (custom delivery only).",
"type": "string"
},
"message": {
"description": "Email body (custom delivery only).",
"type": "string"
},
"attachment": {
"description": "Attach the PDF (custom delivery only).",
"type": "boolean"
}
},
"required": [
"hash_key",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence