@meterapp/car-image-sdk 1.16.0 → 1.18.0

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
package/dist/mcp/index.js CHANGED
@@ -12,7 +12,7 @@ import { checkoutLinkSchema, helpQuerySchema, billingLinkResultSchema, helpResul
12
12
  */
13
13
  import * as z from "zod";
14
14
  import { isColor } from "../params.js";
15
- import { CATALOG, COLORS, CREDITS_PER_3D_MODEL, CREDITS_PER_DOLLAR, CREDITS_PER_IMAGE, DEFAULT_BASE_URL, FITS, FORMATS, FREE_CREDITS, IDEMPOTENCY_KEY_PATTERN, MAX_DIMENSION, MAX_PADDING_PERCENT, MIN_YEAR, MODEL_3D_FILE_KINDS, REFERRAL_SOURCES, REQUEST_FORMATS, REQUEST_KINDS, REQUEST_SORTS, REQUEST_STATUSES, SIZES, VEHICLE_ID_PATTERN, VIEWS, } from "../types.js";
15
+ import { CATALOG, CHECK_STATUSES, COLORS, CREDITS_PER_3D_MODEL, CREDITS_PER_DOLLAR, CREDITS_PER_IMAGE, DEFAULT_BASE_URL, FITS, FORMATS, FREE_CREDITS, IDEMPOTENCY_KEY_PATTERN, MAX_CHECK_VEHICLES, MAX_DIMENSION, MAX_PADDING_PERCENT, MIN_YEAR, MODEL_3D_FILE_KINDS, REFERRAL_SOURCES, REQUEST_FORMATS, REQUEST_KINDS, REQUEST_SORTS, REQUEST_STATUSES, SIZES, VEHICLE_ID_PATTERN, VIEWS, } from "../types.js";
16
16
  import { SDK_VERSION } from "../version.js";
17
17
  /** The 3D price as agents read it: "100 credits ($1.00)". */
18
18
  const MODEL_3D_PRICE = `${CREDITS_PER_3D_MODEL.toLocaleString("en-US")} credits ($${(CREDITS_PER_3D_MODEL / CREDITS_PER_DOLLAR).toFixed(2)})`;
@@ -31,50 +31,37 @@ export const MCP_SERVER_INFO = {
31
31
  websiteUrl: DEFAULT_BASE_URL,
32
32
  };
33
33
  /**
34
- * Which tools a server exposes. `core` is what an agent needs to find, render
35
- * and embed a car; the request board and the two "about you" tools live in
36
- * `all`, for hosts that opt in (`?toolset=all` on the remote URL,
37
- * `car-image mcp --toolset all` locally). Fewer, sharper tools cost less
38
- * context and make the right one easier to pick.
34
+ * Which tools a server exposes. `core`, the default, is what an agent needs to
35
+ * look a vehicle up, render it and watch the balance: the 2026-09-29 audit of
36
+ * the public surface found these seven carrying all of the MCP traffic. `all`
37
+ * adds make logos, 3D models, image options, the API reference, pricing, help
38
+ * and billing links, plus the tools that are served but kept out of the public
39
+ * reference ({@link MCP_UNLISTED_TOOLS}), for hosts that opt in (`?toolset=all`
40
+ * on the remote URL, `car-image mcp --toolset all` locally). Fewer, sharper
41
+ * tools cost less context and make the right one easier to pick. `all` lists
42
+ * the core tools first: tools/list order is what a host shows.
39
43
  */
40
44
  export const MCP_TOOLSETS = {
41
- core: [
42
- "get_car_image",
43
- "get_make_logo",
44
- "create_car_image_urls",
45
- "search_vehicles",
45
+ core: ["resolve_vehicle", "search_vehicles", "decode_vin", "check_vehicles", "get_car_image", "create_car_image_urls", "get_account"],
46
+ all: [
46
47
  "resolve_vehicle",
48
+ "search_vehicles",
47
49
  "decode_vin",
48
- "list_image_options",
49
- "get_account",
50
- "rate_image",
51
- "create_3d_model",
52
- "get_3d_model",
53
- "publish_3d_model",
54
- "describe_api",
55
- "get_pricing",
56
- "search_help",
57
- "create_checkout_link",
58
- "get_billing_link",
59
- ],
60
- all: [
50
+ "check_vehicles",
61
51
  "get_car_image",
62
- "get_make_logo",
63
52
  "create_car_image_urls",
64
- "search_vehicles",
65
- "resolve_vehicle",
66
- "decode_vin",
67
- "list_image_options",
68
53
  "get_account",
69
- "rate_image",
54
+ "get_make_logo",
70
55
  "create_3d_model",
71
56
  "get_3d_model",
72
57
  "publish_3d_model",
58
+ "list_image_options",
73
59
  "describe_api",
74
60
  "get_pricing",
75
61
  "search_help",
76
62
  "create_checkout_link",
77
63
  "get_billing_link",
64
+ "rate_image",
78
65
  "list_requests",
79
66
  "request_vehicle",
80
67
  "request_feature",
@@ -85,6 +72,33 @@ export const MCP_TOOLSETS = {
85
72
  "share_referral",
86
73
  ],
87
74
  };
75
+ /**
76
+ * Served on `all`, absent from the public reference since the 2026-09-30
77
+ * audit: image feedback (the dashboard rates images now), the request board
78
+ * and the two "about you" tools. The docs, both READMEs, the OpenAPI
79
+ * description and the plugin skills never name them
80
+ * (app/_lib/client-surface-contract.test.ts), and what the reference says
81
+ * `?toolset=all` adds is {@link MCP_DOCUMENTED_EXTRAS}.
82
+ */
83
+ export const MCP_UNLISTED_TOOLS = [
84
+ "rate_image",
85
+ "list_requests",
86
+ "request_vehicle",
87
+ "request_feature",
88
+ "get_request",
89
+ "upvote_request",
90
+ "comment_on_request",
91
+ "share_building",
92
+ "share_referral",
93
+ ];
94
+ /** The tools `?toolset=all` adds that the public reference documents: `all` minus `core` minus the unlisted ones. */
95
+ export const MCP_DOCUMENTED_EXTRAS = MCP_TOOLSETS.all.filter((tool) => !MCP_TOOLSETS.core.includes(tool) && !MCP_UNLISTED_TOOLS.includes(tool));
96
+ /**
97
+ * Entries one check_vehicles call takes. Its answer lands in the model's
98
+ * context, so it is far below the REST check's 2,000 (`MAX_CHECK_VEHICLES`):
99
+ * a longer list is work for code (`car-image check <file>`, `client.checkVehicles`).
100
+ */
101
+ export const MAX_MCP_CHECK_VEHICLES = 100;
88
102
  export const DEFAULT_MCP_TOOLSET = "core";
89
103
  export const MCP_TOOLSET_NAMES = Object.keys(MCP_TOOLSETS);
90
104
  export function isMcpToolset(value) {
@@ -100,46 +114,49 @@ export function isMcpToolset(value) {
100
114
  * after it is reference for hosts that pass everything.
101
115
  */
102
116
  export const MCP_INSTRUCTIONS_HEAD_LIMIT = 2048;
103
- const HEAD_MISSING = {
104
- all: "offer request_vehicle to have it added",
105
- core: `point the human to ${DEFAULT_BASE_URL}/requests?ref=mcp to ask for it`,
106
- };
117
+ /**
118
+ * The missing-vehicle rule, the same on every toolset: the request board's
119
+ * tools are served on `all` but out of the public reference, so the
120
+ * instructions no longer steer an agent to them.
121
+ */
122
+ const HEAD_MISSING = "tell the human the catalog does not carry it and stop";
123
+ /** The 3D cost rule, shown only where create_3d_model is a tool the host has. */
124
+ const HEAD_3D = `create_3d_model costs ${MODEL_3D_PRICE}, free once that vehicle/color is owned: confirm with the human before calling it. `;
125
+ function toolsetHas(toolset, tool) {
126
+ return MCP_TOOLSETS[toolset].includes(tool);
127
+ }
107
128
  /** The part of the instructions every host shows: what this is, the two steps, what it costs and when to stop. */
108
129
  export function mcpInstructionsHead(toolset = DEFAULT_MCP_TOOLSET) {
109
130
  return `Car Image API by Meter: studio vehicle renders from the open @meterapp/vehicle-db catalog, eight views, any paint color.
110
131
 
111
- First look the vehicle up: resolve_vehicle reads a year/make/model phrase and returns params.vehicle_id, view and color; search_vehicles browses; decode_vin reads a VIN. All are free. Do this even for a car you picked yourself: catalog names differ from familiar names. Include a year; if the human named none, choose one and say which. Reuse an id already in this conversation.
132
+ First look the vehicle up: resolve_vehicle reads a year/make/model phrase and returns params.vehicle_id, view and color; search_vehicles browses; decode_vin reads a VIN; check_vehicles checks a list of up to ${MAX_MCP_CHECK_VEHICLES} at once. All are free. Do this even for a car you picked yourself: catalog names differ from familiar names. Include a year; if the human named none, choose one and say which. Reuse an id already in this conversation.
112
133
 
113
134
  For an image in chat, call create_car_image_urls once with vehicle: "veh_…", view and color in images, ttl_seconds: 604800 and max_uses: 0. Paste each returned markdown image directly in the final reply, outside code fences, and state expiry. Reuse unexpired URLs. Leave renewal off unless requested. If inline images are unsupported, link the existing URL; do not make another paid call. Use get_car_image for explicit files or bytes, not before minting a URL for the same image. Pages, emails and documents also use signed URLs; never put keys in client code.
114
135
 
115
- If lookup confidence is low or the year differs from the request, ask before spending credits. If no match, ${HEAD_MISSING[toolset]}; never silently substitute a car.
136
+ If lookup confidence is low or the year differs from the request, ask before spending credits. If no match, ${HEAD_MISSING}; never silently substitute a car.
116
137
 
117
- Costs: ${CREDITS_PER_IMAGE} credit per image or signed URL; lookups are free. Confirm the count and cost before a batch the human did not size. create_3d_model costs ${MODEL_3D_PRICE}, free once that vehicle/color is owned: confirm with the human before calling it. On (402) stop and ask the human; never purchase credits autonomously and never change a plan.`;
138
+ Costs: ${CREDITS_PER_IMAGE} credit per image or signed URL; lookups are free. Confirm the count and cost before a batch the human did not size. ${toolsetHas(toolset, "create_3d_model") ? HEAD_3D : ""}On (402) stop and ask the human; never purchase credits autonomously and never change a plan.`;
118
139
  }
119
- const INSTRUCTIONS_REFERENCE = `Reference.
120
-
121
- Images: eight camera views (front, rear, both side profiles and all four three-quarter corners), any paint color (fifteen named presets or any hex such as #1a2b3c), PNG/WebP/JPG up to 1024 px, any width and height (fit contain|cover|inside), transparent or a solid background color. Every catalog vehicle has a stable id (veh_ followed by 13 characters) that search_vehicles, resolve_vehicle and decode_vin return and every image or 3D tool accepts as \`vehicle\` in place of make, model and year.
122
-
123
- Plans: a plan carries the license and a monthly allowance of credits (Free: ${FREE_CREDITS} credits once at signup, evaluation and personal projects, up to 100 distinct vehicles a month; Pro: $29/month, 25,000 credits a month, commercial license while active, 2,500 distinct vehicles a month; Business: $99/month, 150,000 credits a month, 15,000 distinct vehicles a month); every account, including Free, can buy credits at $1 per ${CREDITS_PER_DOLLAR.toLocaleString("en-US")} credits, and purchased credits never expire (get_account reports the plan in force as data.plan). create_car_image_urls charges 1 credit per URL when the URL is created; redemptions are free. create_3d_model is charged when the request is made, and billing.already_owned is true when it was free. search_vehicles, resolve_vehicle, decode_vin, list_image_options, get_account, rate_image, get_3d_model, publish_3d_model and describe_api are free.
124
-
125
- 3D models: for a textured 3D model (GLB, USDZ, FBX), call create_3d_model once the human has agreed to the cost, then poll get_3d_model every few seconds until status is ready and hand over files.<kind>.url; the first model of a vehicle takes 10–20 minutes; further colors take 1–2 minutes. To put a model on a web page, pass publish: true to create_3d_model (or call publish_3d_model later) and paste data.public.embed.html: a script tag and a <car-3d> element, hosted by Car Image, no key in the page; data.public.files are the key-free GLB, USDZ and poster URLs for any other viewer.
126
-
127
- Make logos: get_make_logo returns a catalog make logo inline for 1 credit per successful call, cached or generated. It accepts make and image transforms, with no vehicle selector, view or paint color. There is no signed logo URL: use car-image logo or client.getMakeLogo to download for a site. Inspect generated logos before use. Logos are third-party trademarks for referential display only; no license is granted and they sit outside every VehiclesDB indemnity. See ${DEFAULT_BASE_URL}/terms?ref=mcp#logos.
128
-
129
- Security: never place the API key in URLs, HTML, logs, screenshots or client-side code. Signed delivery URLs are the only thing that should ever reach a browser.
130
-
131
- Batches: before expanding views or colors, resolve each distinct vehicle once. On a vehicle 404, skip that vehicle across every view and color until its input or the catalog changes; never automatically substitute a suggestion. Image validation errors expose parameter and retryable: false.
132
-
133
- Money: on an insufficient-credits error (HTTP 402) the human buys credits at ${DEFAULT_BASE_URL}/dashboard?ref=mcp#billing or with \`car-image billing\`. A 402 with code plan_vehicle_limit means the request named more new distinct vehicles than the plan's monthly cap allows: tell the human the plan and the cap and stop; never subscribe to, change or cancel a plan autonomously. On a rate limit (HTTP 429) wait the number of seconds in retry_after before trying again; with code account_generation_cap the account has used its plan's share of today's render budget, cached images keep serving and new renders resume at reset_at (midnight UTC).
134
-
135
- Product support: use search_help for source-linked answers, terms, licensing, privacy and Enterprise questions. Search each distinct question separately and cite sources; never invent missing context or account-specific promises. Do not send full customer emails, personal data or secrets. Queries are privately recorded to improve articles. Use get_pricing for live prices. When the human asks to purchase, create_checkout_link prepares a link without charging; get_billing_link opens settings. The human completes any payment or account change in the browser. Never claim a link means payment succeeded.
136
-
137
- Quality: after a human judges a render, call rate_image (good/bad or 1-5) so future renders improve.`;
138
- const INSTRUCTIONS_REQUESTS = `Requests: when search_vehicles or resolve_vehicle finds no match for a vehicle the human needs, offer request_vehicle so it gets added (an existing open request for the same car is upvoted instead of duplicated); ideas for the API go through request_feature, and list_requests shows what others have asked for.`;
139
- const INSTRUCTIONS_CORE_ONLY = `Missing vehicles: when search_vehicles or resolve_vehicle finds no match for a vehicle the human needs, do not substitute another car; point the human to ${DEFAULT_BASE_URL}/requests?ref=mcp to ask for it (or connect with toolset=all for the request board tools).`;
140
- /** The server instructions for a toolset: the head every host shows, then the reference; `all` includes the request board paragraph. */
140
+ /** The tools that never cost a credit, named in the Plans paragraph for the toolset that has them. */
141
+ const FREE_TOOLS = ["search_vehicles", "resolve_vehicle", "decode_vin", "check_vehicles", "list_image_options", "get_account", "get_3d_model", "publish_3d_model", "describe_api"];
142
+ /** "a, b and c" */
143
+ function listed(names) {
144
+ return names.length > 1 ? `${names.slice(0, -1).join(", ")} and ${names[names.length - 1]}` : (names[0] ?? "");
145
+ }
146
+ const REFERENCE_BLOCKS = [
147
+ { needs: [], text: `Reference.\n\nImages: eight camera views (front, rear, both side profiles and all four three-quarter corners), any paint color (fifteen named presets or any hex such as #1a2b3c), PNG/WebP/JPG up to 1024 px, any width and height (fit contain|cover|inside), transparent or a solid background color. Every catalog vehicle has a stable id (veh_ followed by 13 characters) that search_vehicles, resolve_vehicle, decode_vin and check_vehicles return and every tool that names a vehicle accepts as \`vehicle\` in place of make, model and year.` },
148
+ { needs: [], text: (toolset) => `Plans: a plan carries the license and a monthly allowance of credits (Free: ${FREE_CREDITS} credits once at signup, evaluation and personal projects, up to 100 distinct vehicles a month; Pro: $29/month, 25,000 credits a month, commercial license while active, 2,500 distinct vehicles a month; Business: $99/month, 150,000 credits a month, 15,000 distinct vehicles a month); every account, including Free, can buy credits at $1 per ${CREDITS_PER_DOLLAR.toLocaleString("en-US")} credits, and purchased credits never expire (get_account reports the plan in force as data.plan). create_car_image_urls charges 1 credit per URL when the URL is created; redemptions are free. ${listed(FREE_TOOLS.filter((tool) => toolsetHas(toolset, tool)))} are free.` },
149
+ { needs: ["create_3d_model", "get_3d_model", "publish_3d_model"], text: `3D models: for a textured 3D model (GLB, USDZ, FBX), call create_3d_model once the human has agreed to the cost, then poll get_3d_model every few seconds until status is ready and hand over files.<kind>.url; the first model of a vehicle takes 10–20 minutes; further colors take 1–2 minutes. To put a model on a web page, pass publish: true to create_3d_model (or call publish_3d_model later) and paste data.public.embed.html: a script tag and a <car-3d> element, hosted by Car Image, no key in the page; data.public.files are the key-free GLB, USDZ and poster URLs for any other viewer. create_3d_model is charged when the request is made, and billing.already_owned is true when it was free.` },
150
+ { needs: ["get_make_logo"], text: `Make logos: get_make_logo returns a catalog make logo inline for 1 credit per successful call, cached or generated. It accepts make and image transforms, with no vehicle selector, view or paint color. There is no signed logo URL: use car-image logo or client.getMakeLogo to download for a site. Inspect generated logos before use. Logos are third-party trademarks for referential display only; no license is granted and they sit outside every VehiclesDB indemnity. See ${DEFAULT_BASE_URL}/terms?ref=mcp#logos.` },
151
+ { needs: [], text: `Security: never place the API key in URLs, HTML, logs, screenshots or client-side code. Signed delivery URLs are the only thing that should ever reach a browser.` },
152
+ { needs: [], text: `Batches: before expanding views or colors, look each distinct vehicle up once; check_vehicles takes a whole list (up to ${MAX_MCP_CHECK_VEHICLES} per call) and answers each as match, suggestion, miss or invalid. On a vehicle 404, skip that vehicle across every view and color until its input or the catalog changes; never automatically substitute a suggestion. Image validation errors expose parameter and retryable: false.` },
153
+ { needs: [], text: `Money: on an insufficient-credits error (HTTP 402) the human buys credits at ${DEFAULT_BASE_URL}/dashboard?ref=mcp#billing or with \`car-image billing\`. A 402 with code plan_vehicle_limit means the request named more new distinct vehicles than the plan's monthly cap allows: tell the human the plan and the cap and stop; never subscribe to, change or cancel a plan autonomously. On a rate limit (HTTP 429) wait the number of seconds in retry_after before trying again; with code account_generation_cap the account has used its plan's share of today's render budget, cached images keep serving and new renders resume at reset_at (midnight UTC).` },
154
+ { needs: ["search_help", "get_pricing", "create_checkout_link", "get_billing_link"], text: `Product support: use search_help for source-linked answers, terms, licensing, privacy and Enterprise questions. Search each distinct question separately and cite sources; never invent missing context or account-specific promises. Do not send full customer emails, personal data or secrets. Queries are privately recorded to improve articles. Use get_pricing for live prices. When the human asks to purchase, create_checkout_link prepares a link without charging; get_billing_link opens settings. The human completes any payment or account change in the browser. Never claim a link means payment succeeded.` },
155
+ ];
156
+ /** The server instructions for a toolset: the head every host shows, then the reference paragraphs whose tools the toolset has. */
141
157
  export function mcpInstructions(toolset = DEFAULT_MCP_TOOLSET) {
142
- return `${mcpInstructionsHead(toolset)}\n\n${INSTRUCTIONS_REFERENCE}\n\n${toolset === "all" ? INSTRUCTIONS_REQUESTS : INSTRUCTIONS_CORE_ONLY}`;
158
+ const paragraphs = REFERENCE_BLOCKS.filter((block) => block.needs.every((tool) => toolsetHas(toolset, tool))).map((block) => typeof block.text === "function" ? block.text(toolset) : block.text);
159
+ return [mcpInstructionsHead(toolset), ...paragraphs].join("\n\n");
143
160
  }
144
161
  /** Instructions for the full toolset; kept for callers that predate toolsets. */
145
162
  export const MCP_INSTRUCTIONS = mcpInstructions("all");
@@ -184,6 +201,18 @@ function namesOneVehicle(input) {
184
201
  : input.make !== undefined && input.model !== undefined && input.year !== undefined;
185
202
  }
186
203
  const ONE_VEHICLE = { message: "Give either vehicle (a veh_… id) or all of make, model and year" };
204
+ /**
205
+ * One entry of check_vehicles. Loose on purpose: the server answers an entry
206
+ * it cannot read as invalid, on its own, instead of the whole list being
207
+ * refused for one bad row.
208
+ */
209
+ const checkEntrySchema = z.object({
210
+ vehicle: z.string().max(40).optional().describe("A stored vehicle id (veh_…) to confirm. Omit make, model and year with it."),
211
+ make: z.string().max(120).optional().describe('Make as the list spells it, e.g. "Mazda".'),
212
+ model: z.string().max(120).optional().describe('Model as the list spells it, e.g. "MX-5 Miata". Send it as written: the check reads it by the image tools\' rules.'),
213
+ year: z.coerce.number().int().optional().describe("Model year, e.g. 2018."),
214
+ ref: z.coerce.string().max(200).optional().describe("Your id for the entry (a row, a SKU), echoed back with its answer."),
215
+ });
187
216
  export const imageInputSchema = z
188
217
  .object({
189
218
  ...vehicleFields,
@@ -293,6 +322,13 @@ export const MCP_TOOL_SCHEMAS = {
293
322
  year: z.coerce.number().int().min(MIN_YEAR).max(2100).optional().describe("Restrict results to one model year."),
294
323
  limit: z.coerce.number().int().min(1).max(25).default(10).describe("Maximum number of results (1-25)."),
295
324
  }),
325
+ check_vehicles: z.object({
326
+ vehicles: z
327
+ .array(checkEntrySchema)
328
+ .min(1)
329
+ .max(MAX_MCP_CHECK_VEHICLES)
330
+ .describe(`1 to ${MAX_MCP_CHECK_VEHICLES} vehicles, each {make, model, year} as the list spells them or {vehicle} for a stored id, with an optional ref echoed back.`),
331
+ }),
296
332
  resolve_vehicle: z.object({
297
333
  query: z
298
334
  .string()
@@ -495,6 +531,16 @@ export function readingTextArguments(schema) {
495
531
  * `describe_api` deliberately has none: its result *is* the reference prose, and
496
532
  * restating it as structured content would double the tokens of every call.
497
533
  */
534
+ /** A real catalog vehicle suggested for one that did not match (`VehicleSuggestion`). */
535
+ const vehicleSuggestionSchema = z.looseObject({
536
+ make: z.string(),
537
+ make_name: z.string(),
538
+ model: z.string().nullable(),
539
+ model_name: z.string().nullable(),
540
+ year: z.number().int(),
541
+ id: z.string().nullable(),
542
+ image_path: z.string().nullable(),
543
+ });
498
544
  /** The vehicle echoed back with an image: exactly what would render it again. */
499
545
  const vehicleDescriptorSchema = z.looseObject({
500
546
  /** Stable id of the catalog vehicle; null when the catalog cannot name one. */
@@ -715,6 +761,46 @@ export const MCP_TOOL_OUTPUT_SCHEMAS = {
715
761
  search_vehicles: z.looseObject({
716
762
  data: z.looseObject({ query: z.string(), results: z.array(vehicleMatchSchema) }),
717
763
  }),
764
+ check_vehicles: z.looseObject({
765
+ data: z.looseObject({
766
+ summary: z.looseObject({
767
+ total: z.number().int(),
768
+ match: z.number().int(),
769
+ suggestion: z.number().int(),
770
+ miss: z.number().int(),
771
+ invalid: z.number().int(),
772
+ /** Distinct vehicle ids among the matches. */
773
+ distinct_vehicles: z.number().int(),
774
+ }),
775
+ results: z.array(z.looseObject({
776
+ /** Position in `vehicles`. */
777
+ index: z.number().int(),
778
+ ref: z.string().optional(),
779
+ status: z.enum(CHECK_STATUSES),
780
+ /** For a match: the vehicle a render serves, with the id to render by. */
781
+ vehicle: z
782
+ .looseObject({
783
+ id: z.string(),
784
+ make: z.string(),
785
+ make_name: z.string(),
786
+ model: z.string(),
787
+ model_name: z.string(),
788
+ year: z.number().int(),
789
+ /** The rule that read the name: exact, or a looser one (alias, trim, fuzzy…). */
790
+ match: z.string(),
791
+ image_path: z.string(),
792
+ })
793
+ .nullable(),
794
+ /** make | model | year | vehicle: what the catalog lacks. */
795
+ reason: z.string().optional(),
796
+ /** Other vehicles close to the entry; never the same car. */
797
+ suggestions: z.array(vehicleSuggestionSchema).optional(),
798
+ search: z.string().optional(),
799
+ error: z.string().optional(),
800
+ })),
801
+ }),
802
+ request_id: z.string(),
803
+ }),
718
804
  resolve_vehicle: z.looseObject({
719
805
  data: z.looseObject({
720
806
  /** Ready to pass straight to get_car_image. */
@@ -940,6 +1026,23 @@ export function searchSummary(query, count) {
940
1026
  ? `${count} catalog match${count === 1 ? "" : "es"} for "${query}". Pass a model's vehicle id (id, or ids by year) as vehicle to get_car_image, create_car_image_urls or create_3d_model.`
941
1027
  : `No catalog match for "${query}". That is not yet a missing vehicle: try resolve_vehicle with the year, make and model, fewer words, or the manufacturer alone.`;
942
1028
  }
1029
+ /** The one-line summary both servers put above a vehicle check: the counts, then what to do with each kind of answer. */
1030
+ export function checkSummary(summary) {
1031
+ const plural = (count, one, many) => `${count} ${count === 1 ? one : many}`;
1032
+ const counts = [
1033
+ plural(summary.match, "match", "matches"),
1034
+ plural(summary.suggestion, "suggestion", "suggestions"),
1035
+ plural(summary.miss, "miss", "misses"),
1036
+ ...(summary.invalid ? [`${summary.invalid} invalid`] : []),
1037
+ ].join(", ");
1038
+ const next = [
1039
+ summary.match ? `Render each match by its vehicle.id (${plural(summary.distinct_vehicles, "distinct vehicle", "distinct vehicles")}).` : "",
1040
+ summary.suggestion ? "Each suggestion names other vehicles than the one listed: ask the human before using one." : "",
1041
+ summary.miss ? "Skip each miss in every view and color." : "",
1042
+ summary.invalid ? "Fix the invalid entries (error) and check them again." : "",
1043
+ ].filter(Boolean);
1044
+ return [`Checked ${plural(summary.total, "vehicle", "vehicles")}: ${counts}.`, ...next].join(" ");
1045
+ }
943
1046
  /** Presentation only: preserve URLs, expiry and billing without minting or fetching an image. */
944
1047
  export function withImageMarkdown(result) {
945
1048
  return {
@@ -1070,6 +1173,14 @@ export const MCP_TOOLS = {
1070
1173
  outputSchema: MCP_TOOL_OUTPUT_SCHEMAS.decode_vin,
1071
1174
  annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
1072
1175
  },
1176
+ check_vehicles: {
1177
+ name: "check_vehicles",
1178
+ title: "Check which vehicles the catalog carries",
1179
+ description: `Free. Check a list of up to ${MAX_MCP_CHECK_VEHICLES} vehicles in one call before rendering any: which ones the catalog carries and under which vehicle id. Send each as the list spells it ({make, model, year}) or as a stored id ({vehicle}), with an optional ref that is echoed back. Each entry is read exactly as get_car_image would read it and answered as match (vehicle.id is the id to store and render by; vehicle.match is exact, or the looser rule that read the name), suggestion (not in the catalog as named; suggestions are real vehicles close to it, such as the same model in its nearest year, which is another car: ask the human before using one), miss (nothing close: skip it in every view and color) or invalid (error says what to fix). Use it for a catalog, a spreadsheet or any list of more than a few cars, instead of one lookup or one paid render per car; summary counts each status and the distinct vehicles a backfill would render. A longer list is work for code: car-image check <file>, or client.checkVehicles, ${MAX_CHECK_VEHICLES.toLocaleString("en-US")} vehicles per request.`,
1180
+ inputSchema: MCP_TOOL_SCHEMAS.check_vehicles,
1181
+ outputSchema: MCP_TOOL_OUTPUT_SCHEMAS.check_vehicles,
1182
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
1183
+ },
1073
1184
  create_3d_model: {
1074
1185
  name: "create_3d_model",
1075
1186
  title: "Create a 3D model",
@@ -1264,6 +1375,19 @@ export const API_REFERENCE = [
1264
1375
  sdk: "client.vehicle('veh_395yw8tn73ff8')",
1265
1376
  cli: "car-image get --vehicle veh_395yw8tn73ff8",
1266
1377
  },
1378
+ {
1379
+ method: "POST",
1380
+ path: "/api/v1/vehicles/check",
1381
+ summary: "Check which of a list of vehicles the catalog carries, each read the way the image endpoints read it, and get the ids to render by.",
1382
+ auth: "bearer",
1383
+ credits: "free (10 checks a minute per account)",
1384
+ params: [`vehicles: 1-${MAX_CHECK_VEHICLES.toLocaleString("en-US")} entries, each {make, model, year} as your data spells them or {vehicle} (a stored id), plus an optional ref (string or number) echoed back; other fields are ignored`],
1385
+ returns: "{data:{summary:{total,match,suggestion,miss,invalid,distinct_vehicles}, results:[{index, ref?, status:match|suggestion|miss|invalid, vehicle:{id,make,make_name,model,model_name,year,match,image_path}|null, reason?:make|model|year|vehicle, suggestions?:[{make,make_name,model,model_name,year,id,image_path}], search?, error?}]}, request_id}",
1386
+ errors: [`400 not a list of vehicles, or more than ${MAX_CHECK_VEHICLES.toLocaleString("en-US")} entries`, "401", "413 body over 1 MiB", "429 more than 10 checks a minute (Retry-After)"],
1387
+ notes: "Store each match's vehicle.id and render by vehicle=<id> in every view and color. A suggestion is another vehicle (the same model in its nearest year, a related model): never substitute it silently. Skip a miss in every view and color, and check misses again after catalog releases. A bad entry is answered as invalid on its own; it never fails the list.",
1388
+ sdk: "client.checkVehicles([{ make, model, year, ref }, { vehicle }], { batchSize, onProgress }) (splits any length)",
1389
+ cli: "car-image check vehicles.csv --out checked.csv",
1390
+ },
1267
1391
  {
1268
1392
  method: "GET",
1269
1393
  path: "/api/v1/vin/{vin}",
@@ -1346,97 +1470,6 @@ export const API_REFERENCE = [
1346
1470
  sdk: "client.download3dModel(id, 'glb') // { bytes, contentType }",
1347
1471
  cli: "car-image 3d download <id> --format glb --out model.glb",
1348
1472
  },
1349
- {
1350
- method: "POST",
1351
- path: "/api/v1/feedback",
1352
- summary: "Rate a delivered image.",
1353
- auth: "bearer",
1354
- credits: "free",
1355
- params: ["request_id OR make, model, year (+ view, color as a preset or hex)", "rating 1-5 and/or verdict good|bad", "reason (optional)"],
1356
- returns: "201 {data:{...}, request_id}",
1357
- sdk: "client.feedback({ requestId, verdict: 'good' })",
1358
- cli: "car-image feedback --request-id <id> --good",
1359
- },
1360
- {
1361
- method: "GET",
1362
- path: "/api/v1/requests",
1363
- summary: "Public board of vehicle and feature requests (votes, comments, status).",
1364
- auth: "public",
1365
- credits: "free",
1366
- params: ["kind (vehicle|feature)", "status (open|planned|in_progress|done|declined; default: all but declined)", "sort (top|new; default top)", "limit (1-100; default 25)", "cursor (from next_cursor)"],
1367
- returns: "{data:[{id,kind,title,body,vehicle:{make,model,year}|null,status,votes,comments,author,url,created_at,updated_at,viewer?:{voted}}], next_cursor, request_id}. `viewer` appears when a key is sent.",
1368
- sdk: "client.listRequests({ kind: 'vehicle', sort: 'top' })",
1369
- cli: "car-image request list --kind vehicle",
1370
- },
1371
- {
1372
- method: "POST",
1373
- path: "/api/v1/requests",
1374
- summary: "Request a missing vehicle or a feature.",
1375
- auth: "bearer",
1376
- credits: "free (scope account:read)",
1377
- params: ["kind: vehicle -> make, model (required), year?, body?", "kind: feature -> title (required), body?"],
1378
- returns: "201 {data: request, deduplicated:false} or 200 {data, deduplicated:true} when an open vehicle request for the same make/model/year already existed (it was upvoted instead)",
1379
- notes: "The creator's own vote counts. A new request sends the requester one thank-you email; dedup hits, upvotes and comments never email.",
1380
- sdk: "client.createRequest({ kind: 'vehicle', make: 'Rivian', model: 'R1T', year: 2024 })",
1381
- cli: "car-image request vehicle --make Rivian --model R1T --year 2024",
1382
- },
1383
- {
1384
- method: "GET",
1385
- path: "/api/v1/requests/{id}",
1386
- summary: "One request with its comment thread.",
1387
- auth: "public",
1388
- credits: "free",
1389
- returns: "{data:{...request, comment_count, comments:[{id,request_id,body,author,created_at}]}, request_id}",
1390
- errors: ["404 unknown request"],
1391
- sdk: "client.getRequest(id)",
1392
- cli: "car-image request show <id>",
1393
- },
1394
- {
1395
- method: "POST",
1396
- path: "/api/v1/requests/{id}/votes",
1397
- summary: "Upvote a request (idempotent). DELETE removes the vote.",
1398
- auth: "bearer",
1399
- credits: "free (scope account:read)",
1400
- returns: "200 {data: request with viewer.voted, request_id}",
1401
- errors: ["404 unknown request"],
1402
- sdk: "client.voteRequest(id) / client.unvoteRequest(id)",
1403
- cli: "car-image request upvote <id>",
1404
- },
1405
- {
1406
- method: "POST",
1407
- path: "/api/v1/requests/{id}/comments",
1408
- summary: "Comment on a request; GET lists the thread (public).",
1409
- auth: "bearer",
1410
- credits: "free (scope account:read)",
1411
- params: ["body (1-1000 chars)"],
1412
- returns: "201 {data:{id,request_id,body,author,created_at}, request_id}",
1413
- errors: ["400 empty or long body", "404 unknown request", "429 too many comments"],
1414
- sdk: "client.commentOnRequest(id, body)",
1415
- cli: "car-image request comment <id> \"…\"",
1416
- },
1417
- {
1418
- method: "POST",
1419
- path: "/api/v1/account/building",
1420
- summary: "Tell us what you are building (private; overwrites).",
1421
- auth: "bearer",
1422
- credits: "free (scope account:read)",
1423
- params: ["building (1-2000 chars)"],
1424
- returns: "200 {data:{building, updated_at}, request_id}",
1425
- notes: "Never returned by any public endpoint. First answer earns one thank-you email.",
1426
- sdk: "client.shareBuilding('A dealer site…')",
1427
- cli: "car-image about building \"A dealer site…\"",
1428
- },
1429
- {
1430
- method: "POST",
1431
- path: "/api/v1/account/referral",
1432
- summary: "Tell us how you found us (private; overwrites).",
1433
- auth: "bearer",
1434
- credits: "free (scope account:read)",
1435
- params: [`source (${REFERRAL_SOURCES.join("|")})`, "detail (optional, <= 500 chars)"],
1436
- returns: "200 {data:{source, detail, updated_at}, request_id}",
1437
- sdk: "client.shareReferral({ source: 'github' })",
1438
- cli: "car-image about referral github --detail \"the vehicle-db README\"",
1439
- },
1440
1473
  {
1441
1474
  method: "GET",
1442
1475
  path: "/api/v1/account",