ottoport 1.5.0 → 1.5.2

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.2",
5
5
  "author": {
6
6
  "name": "LITBOX LLC",
7
7
  "email": "support@ottoport.ai"
package/README.md CHANGED
@@ -104,8 +104,10 @@ generation is spent.
104
104
  - `OTTOPORT_API_KEY` — your `op-…` key. Export it from your shell profile: the
105
105
  MCP server reads the environment its host was launched in, so a key exported
106
106
  inside a running session arrives too late.
107
- - `OTTOPORT_BASE_URL` defaults to `https://ottoport.ai`; set it only to point
108
- at another deployment.
107
+ - The CLI always targets `https://ottoport.ai`. Use the explicit `--url` flag
108
+ only for local development or a self-hosted gateway.
109
+ - `OTTOPORT_BASE_URL` configures the MCP server only; it does not silently
110
+ redirect CLI traffic.
109
111
 
110
112
  ## Notes
111
113
 
package/cli/ottoport.mjs CHANGED
@@ -14,11 +14,12 @@
14
14
  //
15
15
  // Config (flags override env):
16
16
  // OTTOPORT_API_KEY your op-… key (or the dev OTTOPORT_KEY_SECRET)
17
- // OTTOPORT_BASE_URL gateway base URL (default http://localhost:3014)
17
+ // The public CLI always targets https://ottoport.ai unless --url is passed
18
+ // explicitly for local development or a self-hosted gateway.
18
19
 
19
20
  import { writeFile } from "node:fs/promises";
20
21
 
21
- const BASE = "http://localhost:3014";
22
+ const BASE = "https://ottoport.ai";
22
23
 
23
24
  // ── arg parsing ──────────────────────────────────────────────────────
24
25
  function parseArgs(argv) {
@@ -52,7 +53,7 @@ function last(value) {
52
53
  }
53
54
 
54
55
  function config(flags) {
55
- const baseUrl = (last(flags.url) || process.env.OTTOPORT_BASE_URL || process.env.NEXT_PUBLIC_APP_URL || BASE).replace(/\/+$/, "");
56
+ const baseUrl = (last(flags.url) || BASE).replace(/\/+$/, "");
56
57
  const apiKey = last(flags.key) || process.env.OTTOPORT_API_KEY || process.env.OTTOPORT_KEY_SECRET;
57
58
  return { baseUrl, apiKey };
58
59
  }
@@ -92,6 +93,7 @@ async function cmdModel(id, flags) {
92
93
  console.log(`${m.id} — ${m.display_name} [${m.modality}, ${m.owned_by}]`);
93
94
  if (m.description) console.log(m.description);
94
95
  if (m.credits_display) console.log(`rate: ${m.credits_display}`);
96
+ if (m.pricing_display) console.log(`price: ${m.pricing_display}`);
95
97
  console.log(`endpoint: ${m.endpoint}`);
96
98
  const caps = m.capabilities;
97
99
  if (caps?.modes) {
@@ -352,11 +354,11 @@ Usage:
352
354
  [--dry-run]
353
355
 
354
356
  Global flags:
355
- --url <base> gateway base URL (env OTTOPORT_BASE_URL)
357
+ --url <base> override https://ottoport.ai (local/self-hosted development)
356
358
  --key <key> OttoPort API key (env OTTOPORT_API_KEY)
357
359
 
358
360
  Examples:
359
- export OTTOPORT_API_KEY=op-... OTTOPORT_BASE_URL=https://ottoport.dev
361
+ export OTTOPORT_API_KEY=op-...
360
362
  ottoport models --modality image # prints what each one accepts
361
363
  ottoport models veo-3.1 # its modes, tiers, and every parameter
362
364
  ottoport chat "explain MCP in one line" --model claude-haiku-4.5
@@ -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,8 +1,12 @@
1
1
  {
2
2
  "name": "ottoport",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
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
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/Jet1217/OttoPort.git"
9
+ },
6
10
  "license": "MIT",
7
11
  "keywords": [
8
12
  "ai",
@@ -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
 
@@ -119,5 +119,6 @@ music live under `/api/v1/images/generations`, `/videos/generations`,
119
119
 
120
120
  - `OTTOPORT_API_KEY` — an `op-…` key, read from the environment the client was
121
121
  launched in. A key exported inside a running session arrives too late.
122
- - `OTTOPORT_BASE_URL` defaults to `https://ottoport.ai`; set it only to point
123
- at another deployment.
122
+ - The CLI always targets `https://ottoport.ai`; pass `--url` explicitly only
123
+ for local development or a self-hosted gateway.
124
+ - `OTTOPORT_BASE_URL` configures the MCP server only.