Orb MCP by usefulapi

Read Orb customers, subscriptions, invoices, usage and costs; create or update customers.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
94%
Naming quality
78%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'orb_get_customer_by_external_id' name length outside 3-30 rangein orb_get_customer_by_external_id
  • LOWTool 'orb_get_customer_credits_ledger' name length outside 3-30 rangein orb_get_customer_credits_ledger

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,826Tokens (tool definitions)
~1.2 KBTypical response size
Significant attention impact (2.99% 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": {
    "orb": {
      "url": "https://orb.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://orb.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (26)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded26 tools
verifiedversion not recorded26 tools
verifiedversion not recorded26 tools
failed observationversion not recordedβ€”
failed observationversion not recordedβ€”