numeral
Calculate sales tax & VAT, record transactions and refunds, manage products and customers.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen numeral_list_transaction_refunds
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"numeral": {
"url": "https://numeral.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://numeral.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (11)
🟢numeral_ping
Health check — verifies the API key works and reports the environment (test/prod), api_version, and server timestamp. Numeral: GET /tax/ping.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢numeral_calculate_tax(customer, order_details, origin_address, metadata)
Calculate sales tax / VAT for an order — a STATELESS quote that persists nothing (record it later with numeral_create_transaction using the returned calculation id). Returns per-jurisdiction rates, total_tax_amount, and totals. Provide a customer address and one or more line items (each needs reference_product_id OR product_category). Amounts are in the currency's smallest unit (cents). Numeral: POST /tax/calculations.
Esquema de entrada
{
"type": "object",
"properties": {
"customer": {
"type": "object",
"properties": {
"id": {
"description": "A Numeral customer id (cus_...) for order tracking / exemptions.",
"type": "string"
},
"address": {
"type": "object",
"properties": {
"address_line_1": {
"type": "string",
"description": "Street address, line 1."
},
"address_line_2": {
"description": "Street address, line 2 (optional).",
"type": "string"
},
"address_city": {
"type": "string",
"description": "City."
},
"address_province": {
"type": "string",
"description": "State/province/region — a valid 2-letter ISO 3166-2 subdivision code (e.g. \"CA\")."
},
"address_postal_code": {
"type": "string",
"description": "Postal/ZIP code."
},
"address_country": {
"type": "string",
"description": "Country — a valid ISO 3166-1 alpha-2 code (e.g. \"US\")."
},
"address_type": {
"type": "string",
"enum": [
"shipping",
"billing"
],
"description": "Address type: \"shipping\" for physical goods, \"billing\" for software/digital goods."
}
},
"required": [
"address_line_1",
"address_city",
"address_province",
"address_postal_code",
"address_country",
"address_type"
],
"description": "Customer address (required)."
}
},
"required": [
"address"
],
"description": "Customer details — address is required."
},
"order_details": {
"type": "object",
"properties": {
"customer_currency_code": {
"type": "string",
"description": "Currency code. For API version 2024-09-01: \"USD\" or \"CAD\"."
},
"tax_included_in_amount": {
"type": "boolean",
"description": "Do the line-item amounts already include tax? Typically false for North America."
},
"line_items": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "Line-item price in the currency's SMALLEST unit (e.g. USD 2000 = $20.00). Tax is calculated against this."
},
"quantity": {
"type": "number",
"description": "Quantity of this product being sold."
},
"reference_product_id": {
"description": "Your product id (required if no product_category).",
"type": "string"
},
"product_category": {
"description": "A tax category from Numeral's taxonomy, e.g. \"GENERAL_MERCHANDISE\", \"SAAS_GENERAL\" (required if no reference_product_id).",
"type": "string"
},
"fallback_product_category": {
"description": "Fallback tax category used when reference_product_id has no matching product in Numeral.",
"type": "string"
},
"reference_line_item_id": {
"description": "Your line-item id (optional; for record keeping).",
"type": "string"
}
},
"required": [
"amount",
"quantity"
]
},
"description": "Order line items (one per product type)."
}
},
"required": [
"customer_currency_code",
"tax_included_in_amount",
"line_items"
],
"description": "Order details."
},
"origin_address": {
"description": "The address a product ships from. Optional on 2024-09-01; required on API version 2025-05-12+.",
"type": "object",
"properties": {
"address_line_1": {
"type": "string",
"description": "Street address, line 1."
},
"address_line_2": {
"description": "Street address, line 2 (optional).",
"type": "string"
},
"address_city": {
"type": "string",
"description": "City."
},
"address_province": {
"type": "string",
"description": "State/province/region — a valid 2-letter ISO 3166-2 subdivision code (e.g. \"CA\")."
},
"address_postal_code": {
"type": "string",
"description": "Postal/ZIP code."
},
"address_country": {
"type": "string",
"description": "Country — a valid ISO 3166-1 alpha-2 code (e.g. \"US\")."
}
},
"required": [
"address_line_1",
"address_city",
"address_province",
"address_postal_code",
"address_country"
]
},
"metadata": {
"description": "Arbitrary string key/value metadata.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"customer",
"order_details"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢numeral_get_transaction(transaction_id)
Get a recorded transaction by its Numeral id (tr_...). Returns the transaction with its line items, currencies, and metadata. Numeral: GET /tax/transactions/{transaction_id}.
Esquema de entrada
{
"type": "object",
"properties": {
"transaction_id": {
"type": "string",
"description": "The Numeral transaction id (tr_...)."
}
},
"required": [
"transaction_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢numeral_list_transaction_refunds(transaction_id)
List all refunds recorded against a transaction. Returns {refunds:[...]}. Numeral: GET /tax/transactions/{transaction_id}/refunds.
Esquema de entrada
{
"type": "object",
"properties": {
"transaction_id": {
"type": "string",
"description": "The Numeral transaction id (tr_...)."
}
},
"required": [
"transaction_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢numeral_list_products(cursor)
List your Numeral products (up to 50 per page), each with its reference id, name, and product_category. Use `cursor` (the last_product_id from a previous page) to paginate; has_more indicates more pages. Numeral: GET /tax/products.
Esquema de entrada
{
"type": "object",
"properties": {
"cursor": {
"description": "Pagination cursor — pass the last_product_id from the previous page.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢numeral_get_product(reference_product_id)
Get a single product by its reference_product_id (your id). Returns the product's name, product_category, and timestamps. Numeral: GET /tax/products/{reference_product_id}.
Esquema de entrada
{
"type": "object",
"properties": {
"reference_product_id": {
"type": "string",
"description": "Your product id (the reference_product_id used when the product was created)."
}
},
"required": [
"reference_product_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢numeral_get_customer(customer_id, id_type)
Get a customer by id. By default `customer_id` is the Numeral id (cus_...); set id_type to "reference" to look up by your own reference_customer_id. Returns name, email, and tax-exempt status. Numeral: GET /tax/customers/{customer_id}.
Esquema de entrada
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"description": "The customer id — a Numeral id (cus_...) by default, or your reference id when id_type=\"reference\"."
},
"id_type": {
"description": "Which id space `customer_id` is in (default: numeral).",
"type": "string",
"enum": [
"numeral",
"reference"
]
}
},
"required": [
"customer_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴numeral_create_transaction(calculation_id, reference_order_id, transaction_processed_at, metadata)
RECORDS a completed sale as a transaction — this WRITES a live tax/compliance record used for filings. Supply the `calculation_id` returned by numeral_calculate_tax and your `reference_order_id`. Numeral: POST /tax/transactions.
Esquema de entrada
{
"type": "object",
"properties": {
"calculation_id": {
"type": "string",
"description": "The calculation id returned by numeral_calculate_tax."
},
"reference_order_id": {
"type": "string",
"description": "Your order id for this sale (used for record keeping / dedupe)."
},
"transaction_processed_at": {
"description": "Unix timestamp (SECONDS) the sale was processed. Defaults to now if omitted.",
"type": "number"
},
"metadata": {
"description": "Arbitrary string key/value metadata.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"calculation_id",
"reference_order_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴numeral_create_refund(transaction_id, type, refund_processed_at, line_items)
RECORDS a refund against a transaction — this WRITES a live tax/compliance record (adjusts tax owed). Use type="full" to refund the whole transaction, or type="partial" with line_items (each keyed by reference_product_id) for a partial refund. Numeral: POST /tax/refunds.
Esquema de entrada
{
"type": "object",
"properties": {
"transaction_id": {
"type": "string",
"description": "The transaction id (tr_...) to refund."
},
"type": {
"type": "string",
"enum": [
"full",
"partial"
],
"description": "\"full\" refunds the whole transaction; \"partial\" requires line_items."
},
"refund_processed_at": {
"description": "Unix timestamp (SECONDS) the refund was made. Defaults to now if omitted.",
"type": "number"
},
"line_items": {
"description": "Required for type=\"partial\": the line items to refund.",
"type": "array",
"items": {
"type": "object",
"properties": {
"reference_product_id": {
"type": "string",
"description": "Product id to apply the refund against (matches the original transaction line item)."
},
"reference_line_item_id": {
"description": "Your line-item id (optional; for reporting).",
"type": "string"
},
"sales_amount_refunded": {
"description": "Sale amount refunded for this line, in the currency's smallest unit (cents).",
"type": "number"
}
},
"required": [
"reference_product_id"
]
}
}
},
"required": [
"transaction_id",
"type"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴numeral_create_product(reference_product_id, reference_product_name, product_category)
CREATES (or upserts) a product with its tax category — this WRITES to your Numeral product catalog, which drives future tax calculations. Numeral: POST /tax/products.
Esquema de entrada
{
"type": "object",
"properties": {
"reference_product_id": {
"type": "string",
"description": "Your product id (used to reference this product in calculations)."
},
"reference_product_name": {
"type": "string",
"description": "Human-readable product name."
},
"product_category": {
"type": "string",
"description": "A tax category from Numeral's taxonomy, e.g. \"GENERAL_MERCHANDISE\", \"SAAS_GENERAL\"."
}
},
"required": [
"reference_product_id",
"reference_product_name",
"product_category"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴numeral_create_customer(email, name, is_tax_exempt, reference_customer_id)
CREATES a customer record — this WRITES to your Numeral customer list (used for order tracking and tax exemptions). Numeral: POST /tax/customers.
Esquema de entrada
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Customer email (required)."
},
"name": {
"description": "Customer name.",
"type": "string"
},
"is_tax_exempt": {
"description": "Whether this customer is tax exempt.",
"type": "boolean"
},
"reference_customer_id": {
"description": "Your own id for this customer (for reference-based lookups).",
"type": "string"
}
},
"required": [
"email"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Prompts recomendados
numeral_get_transactionnumeral_get_transactionnumeral_list_transaction_refundsnumeral_list_transaction_refundsnumeral_list_transaction_refundsnumeral_get_transactionComunidad
Evidencia