Orb MCP by usefulapi
Read Orb customers, subscriptions, invoices, usage and costs; create or update customers.
Should I use this
Quality & Safety
Findings (2)
- LOWin orb_get_customer_by_external_id
- LOWin orb_get_customer_credits_ledger
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": {
"orb": {
"url": "https://orb.usefulapi.io/mcp"
}
}
}Remote endpoints
https://orb.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (26)
π’orb_ping
Health and auth check β verifies the API key works. Orb API: GET /ping.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_customers(limit, cursor)
List customers in the Orb account. Orb API: GET /customers.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_customer(customer_id)
Fetch a single customer by Orb customer id. Orb API: GET /customers/{customer_id}.
Input Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"description": "Orb customer id."
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_customer_by_external_id(external_customer_id)
Fetch a single customer by your external customer id. Orb API: GET /customers/external_customer_id/{external_customer_id}.
Input Schema
{
"type": "object",
"properties": {
"external_customer_id": {
"type": "string",
"description": "Your external customer id."
}
},
"required": [
"external_customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_customer_costs(customer_id, timeframe_start, timeframe_end, view_mode, group_by)
Get costs incurred by a customer over a timeframe. Orb API: GET /customers/{customer_id}/costs.
Input Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"description": "Orb customer id."
},
"timeframe_start": {
"description": "ISO-8601 datetime, inclusive start.",
"type": "string"
},
"timeframe_end": {
"description": "ISO-8601 datetime, exclusive end.",
"type": "string"
},
"view_mode": {
"description": "periodic or cumulative.",
"type": "string",
"enum": [
"periodic",
"cumulative"
]
},
"group_by": {
"description": "Price grouping key to break costs down by.",
"type": "string"
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_customer_credits(customer_id, currency, include_all_blocks)
Get a customer's credit balances by currency. Orb API: GET /customers/{customer_id}/credits.
Input Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"description": "Orb customer id."
},
"currency": {
"description": "Filter to a single currency.",
"type": "string"
},
"include_all_blocks": {
"description": "Include expired/depleted blocks too.",
"type": "boolean"
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_customer_credits_ledger(customer_id, limit, cursor, entry_type, currency)
Get the append-only credit ledger for a customer. Orb API: GET /customers/{customer_id}/credits/ledger.
Input Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"description": "Orb customer id."
},
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
},
"entry_type": {
"description": "Filter to a ledger entry type (e.g. increment, decrement, expiration_change).",
"type": "string"
},
"currency": {
"description": "Filter to a single currency.",
"type": "string"
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_plans(limit, cursor, status)
List plans configured in the Orb account. Orb API: GET /plans.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
},
"status": {
"description": "Filter by plan status.",
"type": "string",
"enum": [
"active",
"archived",
"draft"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_plan(plan_id)
Fetch a single plan by id. Orb API: GET /plans/{plan_id}.
Input Schema
{
"type": "object",
"properties": {
"plan_id": {
"type": "string",
"description": "Orb plan id."
}
},
"required": [
"plan_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_subscriptions(limit, cursor, customer_id, external_customer_id, status)
List subscriptions, optionally filtered by customer or status. Orb API: GET /subscriptions.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
},
"customer_id": {
"description": "Filter to an Orb customer id.",
"type": "string"
},
"external_customer_id": {
"description": "Filter to your external customer id.",
"type": "string"
},
"status": {
"description": "Filter by subscription status.",
"type": "string",
"enum": [
"active",
"ended",
"upcoming"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_subscription(subscription_id)
Fetch a single subscription by id. Orb API: GET /subscriptions/{subscription_id}.
Input Schema
{
"type": "object",
"properties": {
"subscription_id": {
"type": "string",
"description": "Orb subscription id."
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_subscription_costs(subscription_id, timeframe_start, timeframe_end, view_mode, group_by)
Get costs for a subscription over a timeframe. Orb API: GET /subscriptions/{subscription_id}/costs.
Input Schema
{
"type": "object",
"properties": {
"subscription_id": {
"type": "string",
"description": "Orb subscription id."
},
"timeframe_start": {
"description": "ISO-8601 datetime, inclusive start.",
"type": "string"
},
"timeframe_end": {
"description": "ISO-8601 datetime, exclusive end.",
"type": "string"
},
"view_mode": {
"description": "periodic or cumulative.",
"type": "string",
"enum": [
"periodic",
"cumulative"
]
},
"group_by": {
"description": "Price grouping key to break costs down by.",
"type": "string"
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_subscription_usage(subscription_id, timeframe_start, timeframe_end, granularity, group_by)
Get metered usage for a subscription over a timeframe. Orb API: GET /subscriptions/{subscription_id}/usage.
Input Schema
{
"type": "object",
"properties": {
"subscription_id": {
"type": "string",
"description": "Orb subscription id."
},
"timeframe_start": {
"description": "ISO-8601 datetime, inclusive start.",
"type": "string"
},
"timeframe_end": {
"description": "ISO-8601 datetime, exclusive end.",
"type": "string"
},
"granularity": {
"description": "Time granularity for buckets (e.g. day).",
"type": "string"
},
"group_by": {
"description": "Property to group usage by.",
"type": "string"
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_subscription_schedule(subscription_id, limit, cursor)
Get the plan-change schedule for a subscription. Orb API: GET /subscriptions/{subscription_id}/schedule.
Input Schema
{
"type": "object",
"properties": {
"subscription_id": {
"type": "string",
"description": "Orb subscription id."
},
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_invoices(limit, cursor, customer_id, external_customer_id, subscription_id, ...)
List invoices, optionally filtered by customer, subscription, or status. Orb API: GET /invoices.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
},
"customer_id": {
"description": "Filter to an Orb customer id.",
"type": "string"
},
"external_customer_id": {
"description": "Filter to your external customer id.",
"type": "string"
},
"subscription_id": {
"description": "Filter to a subscription id.",
"type": "string"
},
"status": {
"description": "Filter by invoice status (e.g. draft, issued, paid, void).",
"type": "string"
},
"date_type": {
"description": "Which date `due_date` filters on (e.g. due_date, invoice_date).",
"type": "string"
},
"due_date": {
"description": "ISO-8601 date filter.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_invoice(invoice_id)
Fetch a single invoice by id. Orb API: GET /invoices/{invoice_id}.
Input Schema
{
"type": "object",
"properties": {
"invoice_id": {
"type": "string",
"description": "Orb invoice id."
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_upcoming_invoice(subscription_id)
Preview the upcoming (draft) invoice for a subscription. Orb API: GET /invoices/upcoming.
Input Schema
{
"type": "object",
"properties": {
"subscription_id": {
"type": "string",
"description": "Orb subscription id."
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_items(limit, cursor)
List items (the things you bill for). Orb API: GET /items.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_item(item_id)
Fetch a single item by id. Orb API: GET /items/{item_id}.
Input Schema
{
"type": "object",
"properties": {
"item_id": {
"type": "string",
"description": "Orb item id."
}
},
"required": [
"item_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_prices(limit, cursor)
List prices configured in the Orb account. Orb API: GET /prices.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_get_price(price_id)
Fetch a single price by id. Orb API: GET /prices/{price_id}.
Input Schema
{
"type": "object",
"properties": {
"price_id": {
"type": "string",
"description": "Orb price id."
}
},
"required": [
"price_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_metrics(limit, cursor)
List billable metrics configured in the Orb account. Orb API: GET /metrics.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_coupons(limit, cursor, show_archived)
List coupons in the Orb account. Orb API: GET /coupons.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
},
"show_archived": {
"description": "Include archived coupons.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’orb_list_alerts(limit, cursor, customer_id, external_customer_id, subscription_id)
List usage/spend alerts, optionally filtered by customer or subscription. Orb API: GET /alerts.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items to return (1β100, default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Opaque pagination cursor (from pagination_metadata.next_cursor).",
"type": "string"
},
"customer_id": {
"description": "Filter to an Orb customer id.",
"type": "string"
},
"external_customer_id": {
"description": "Filter to your external customer id.",
"type": "string"
},
"subscription_id": {
"description": "Filter to a subscription id.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π΄orb_create_customer(name, email, external_customer_id, currency, timezone, ...)
Creates a new customer in Orb (additive). Requires name and a valid email. Orb API: POST /customers.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Customer display name (required)."
},
"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": "Customer billing email (required, must be a valid email)."
},
"external_customer_id": {
"description": "Your external id for this customer.",
"type": "string"
},
"currency": {
"description": "ISO-4217 currency code for this customer.",
"type": "string"
},
"timezone": {
"description": "IANA timezone (e.g. America/New_York).",
"type": "string"
},
"metadata": {
"description": "User-defined key/value metadata (stringβstring).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"payment_provider": {
"description": "External payment/invoicing provider.",
"type": "string",
"enum": [
"quickbooks",
"bill.com",
"stripe_charge",
"stripe_invoice",
"netsuite",
"adyen"
]
},
"payment_provider_id": {
"description": "Id of this customer in the external payment provider.",
"type": "string"
}
},
"required": [
"name",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π΄orb_update_customer(customer_id, name, email, external_customer_id, metadata, ...)
Updates an existing customer's details (reversible). Only provided fields are changed. Orb API: PUT /customers/{customer_id}.
Input Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"description": "Orb customer id (required)."
},
"name": {
"description": "New display name.",
"type": "string"
},
"email": {
"description": "New billing email (must be a valid 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,}$"
},
"external_customer_id": {
"description": "New external id.",
"type": "string"
},
"metadata": {
"description": "User-defined key/value metadata (stringβstring).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"currency": {
"description": "New ISO-4217 currency code.",
"type": "string"
},
"timezone": {
"description": "New IANA timezone.",
"type": "string"
},
"payment_provider": {
"description": "External payment/invoicing provider.",
"type": "string",
"enum": [
"quickbooks",
"bill.com",
"stripe_charge",
"stripe_invoice",
"netsuite",
"adyen"
]
},
"payment_provider_id": {
"description": "New id in the external payment provider.",
"type": "string"
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence