Get customer
orb_get_customerFetch a single customer by Orb customer id. Orb API: GET /customers/{customer_id}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | Orb customer id. |
orb_get_customerFetch a single customer by Orb customer id. Orb API: GET /customers/{customer_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | Orb customer id. |
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds the exact REST method (GET /customers/{customer_id}), which corroborates the read-only behavior. It does not describe not-found/error behavior or response shape, but for a simple read with annotations present, the added value is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the action and identifier are front-loaded, and the API endpoint provides useful corroborating context. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read operation with readOnlyHint=true and no output schema, the description supplies the essential facts: what it fetches, by which key, and via which endpoint. The only minor gap is unspecified behavior when the customer is not found, which is a small omission for an otherwise simple and well-covered tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents customer_id as 'Orb customer id.' The description's 'by Orb customer id' marginally adds meaning by contrasting with the external-id sibling lookup, but does not substantially exceed what the schema already states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch'), a distinct resource ('a single customer'), and the key identifier ('by Orb customer id'). This explicitly distinguishes it from siblings like orb_get_customer_by_external_id (different ID type), orb_list_customers (list vs single), and orb_create_customer/update_customer (mutations). The API endpoint reference reinforces the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by Orb customer id' gives clear context for when to invoke this tool: when the agent holds an Orb-native customer ID. Given the sibling orb_get_customer_by_external_id, this implicitly differentiates the lookup key. However, it does not explicitly name alternatives or state when-not-to-use, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.
Every tool name clearly specifies a distinct action and resource (e.g., list_subscriptions vs get_subscription). There is no ambiguity between tools as each targets a unique combination of verb and noun.
All tool names follow a consistent pattern: 'orb_<verb>_<resource>' in snake_case. This makes them predictable and easy to distinguish.
With 26 tools, the set covers many resources and operations for a billing platform. While slightly above typical range, each tool justifies its existence given the domain complexity.
The tool surface provides extensive read capabilities and basic customer CRUD, but lacks create/update/delete for most other resources (e.g., subscriptions, invoices) and missing operations like void or cancel. This creates notable gaps for full lifecycle management.