Hiveage MCP by usefulapi

Manage Hiveage clients, invoices, estimates and payments; send invoices and record payments.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
93%
Naming quality
76%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • LOWTool 'hiveage_list_connection_invoices' name length outside 3-30 rangein hiveage_list_connection_invoices
  • LOWTool 'hiveage_list_connection_estimates' name length outside 3-30 rangein hiveage_list_connection_estimates
  • LOWTool 'hiveage_list_connection_recurring_invoices' name length outside 3-30 rangein hiveage_list_connection_recurring_invoices
  • LOWTool 'hiveage_list_recurring_invoices' name length outside 3-30 rangein hiveage_list_recurring_invoices
  • LOWTool 'hiveage_list_recurring_invoice_invoices' name length outside 3-30 rangein hiveage_list_recurring_invoice_invoices

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~8,412Tokens (tool definitions)
~2.5 KBTypical response size
Significant attention impact (6.57% of 128k context)

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-http

What it can do

Tool inventory

Tools (28)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded28 tools