ottoport 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ottoport",
3
3
  "description": "One API for every model. Call chat, image, video, speech and music models through the OttoPort gateway — as MCP tools, slash commands, or the bundled CLI.",
4
- "version": "1.5.0",
4
+ "version": "1.5.1",
5
5
  "author": {
6
6
  "name": "LITBOX LLC",
7
7
  "email": "support@ottoport.ai"
package/cli/ottoport.mjs CHANGED
@@ -92,6 +92,7 @@ async function cmdModel(id, flags) {
92
92
  console.log(`${m.id} — ${m.display_name} [${m.modality}, ${m.owned_by}]`);
93
93
  if (m.description) console.log(m.description);
94
94
  if (m.credits_display) console.log(`rate: ${m.credits_display}`);
95
+ if (m.pricing_display) console.log(`price: ${m.pricing_display}`);
95
96
  console.log(`endpoint: ${m.endpoint}`);
96
97
  const caps = m.capabilities;
97
98
  if (caps?.modes) {
@@ -17,6 +17,6 @@ Argument (may be empty — then list everything): `$1`
17
17
  - Nothing → list everything, grouped by modality, and keep it to the models
18
18
  worth choosing between rather than every row.
19
19
 
20
- Rates are in credits the unit the account's balance is kept in — so quote
21
- them as the tool returns them and never convert to a currency. Never invent a
20
+ Rates come in credits (`credits_display`, the unit the ledger bills in) and in USD (`pricing_display`, what the balance shows) — so quote
21
+ whichever the person asked for, as the tool returns it, without converting yourself. Never invent a
22
22
  model id, a mode, or a resolution the tool did not return.
package/mcp/server.mjs CHANGED
@@ -83,7 +83,7 @@ async function describeModel(id) {
83
83
  const lines = [
84
84
  `${m.id} — ${m.display_name} [${m.modality}, ${m.owned_by}]`,
85
85
  ...(m.description ? [m.description] : []),
86
- ...(m.credits_display ? [`Rate: ${m.credits_display}`] : []),
86
+ ...(m.credits_display ? [`Rate: ${m.credits_display}${m.pricing_display ? ` (${m.pricing_display})` : ""}`] : []),
87
87
  `Endpoint: ${m.endpoint}`,
88
88
  ];
89
89
  if (caps?.modes) {
@@ -123,7 +123,7 @@ async function listModels({ modality, model } = {}) {
123
123
  // unit is spelled out here.
124
124
  return data
125
125
  .map((m) => {
126
- const rate = m.credits_display ? ` · ${m.credits_display}` : "";
126
+ const rate = m.credits_display ? ` · ${m.credits_display}${m.pricing_display ? ` (${m.pricing_display})` : ""}` : "";
127
127
  const what = m.description ? ` — ${m.description}` : "";
128
128
  return `${m.id} [${m.modality}, ${m.owned_by}]${what}${rate}${accepts(m.capabilities)}`;
129
129
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ottoport",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "Claude Code plugin, CLI and MCP server for OttoPort — one OpenAI-compatible API for every LLM, image, video, and speech model.",
5
5
  "homepage": "https://ottoport.ai",
6
6
  "license": "MIT",
@@ -14,7 +14,7 @@ and do not call the HTTP API, when a tool covers the job:
14
14
 
15
15
  | Tool | For |
16
16
  | --- | --- |
17
- | `ottoport_list_models` | The catalog: what each model is for, and its rate in credits. Filter with `modality`, or pass `model` for ONE model in full — its modes, its resolution tiers with prices, and every parameter it reads. |
17
+ | `ottoport_list_models` | The catalog: what each model is for, and its rate in credits and USD. Filter with `modality`, or pass `model` for ONE model in full — its modes, its resolution tiers with prices, and every parameter it reads. |
18
18
  | `ottoport_chat` | `prompt`, plus optional `model`, `system`, `temperature`, `max_tokens`. |
19
19
  | `ottoport_generate_image` | `prompt`, plus optional `model`, `size` or `resolution`, `aspect_ratio`, `n`, `seed`, `image_url` (one reference), `reference_image_urls` (several). Layer decomposition too: `model` `qwen-image-layered` or `seedream-5.0-layers` with `image_url` alone (prompt optional, `num_layers` on Qwen) returns one URL per RGBA layer. |
20
20
  | `ottoport_generate_video` | `prompt`, plus optional `model`, `duration`, `resolution`, `aspect_ratio`, `seed`, `image_url` (first frame), `last_frame_url`, `reference_image_urls`. |
@@ -76,9 +76,9 @@ sensible default.
76
76
  | music | `suno-v5` | `lyria-2` |
77
77
 
78
78
  Never invent a model id. Call `ottoport_list_models` when unsure — the catalog
79
- changes, and a wrong id is a failed billable call. Rates come back in credits,
80
- the unit the account balance is kept in; quote them as given rather than
81
- converting to a currency.
79
+ changes, and a wrong id is a failed billable call. Rates come back in credits (the unit the ledger
80
+ bills in) and in USD (the unit the balance shows); quote whichever is asked for
81
+ as given rather than converting yourself.
82
82
 
83
83
  ## What comes back
84
84