@bowmark/web 1.11.0 → 1.12.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.
@@ -5,8 +5,8 @@
5
5
  // rather than imported. An `import` or `export` at the top level of this file would
6
6
  // turn it into a module and every declaration below would stop being global.
7
7
  //
8
- // Manifest version: 54e3683692de6415062143d692a1ab30846dc38d8f5c9ba7c14182a3b3618f7d
9
- // 18 capabilities, 237 providers, 620 typed functions, 20 refused.
8
+ // Manifest version: 30acf97e882124423eecad144b20c278a6e81b46e839c2063822661efc063ea6
9
+ // 32 capabilities, 253 providers, 665 typed functions, 20 refused.
10
10
  // 51,715 family members, sharing 2 interface(s) — declared once and pointed at, never repeated per member.
11
11
  //
12
12
  // REFUSED — these functions are real and callable, and their declared arguments
@@ -36,6 +36,58 @@
36
36
 
37
37
 
38
38
 
39
+ declare namespace BowmarkCapability_cable_railing_quote {
40
+ // ── Cable railing design quote (materials & mounting options) — the unit's own declarations, verbatim ──
41
+ type CableRailingMaterial = {
42
+ slug: string
43
+ title: string
44
+ metal: boolean
45
+ defaultFinish: string | null
46
+ finishes: string[]
47
+ }
48
+ type CableRailingMountingStyle = {
49
+ slug: string
50
+ title: string
51
+ availableMaterials: string[]
52
+ }
53
+ type CableRailingPricing = {
54
+ automated: false // no source publishes an automated instant price — see 'how'
55
+ how: string // what actually produces a price (a human, after submission)
56
+ designAppUrl: string
57
+ }
58
+ type CableRailingDesignOptionsResult = {
59
+ materials: CableRailingMaterial[]
60
+ mountingStyles: CableRailingMountingStyle[]
61
+ pricing: CableRailingPricing
62
+ warnings: string[] // always present; empty when nothing was dropped
63
+ }
64
+
65
+ type CallOptions = {
66
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
67
+ // A provider slower than this is DROPPED from the results and
68
+ // NAMED in warnings — never silently absent
69
+ }
70
+
71
+ /**
72
+ * Returns the real material and mounting-style choices behind Viewrail's Victor cable-railing
73
+ * design app. There is no automated instant price to return alongside them — Victor prices a
74
+ * design by having a human review it after submission, and `pricing.how` says so rather than
75
+ * guessing a number.
76
+ */
77
+ interface Unit {
78
+ /**
79
+ * Lists Victor's real material families (304/316/2205 stainless, aluminum, wood-grain
80
+ * aluminum, …) and post-mounting styles (Surface Mount, Side Mount, Core Drill, …), each with
81
+ * which materials it's available in — the two choices Victor's own draw-and-quote flow asks
82
+ * first. `pricing.automated` is always `false`: no cable-railing site measured publishes an
83
+ * automated instant price (Victor's only pricing route is staff-only and 401s any
84
+ * unauthenticated call), so `pricing.how` names the real next step — draw the layout in Victor
85
+ * and submit it for a human-priced quote — instead of fabricating a number.
86
+ */
87
+ getDesignOptions(options?: CallOptions): Promise<CableRailingDesignOptionsResult>;
88
+ }
89
+ }
90
+
39
91
  declare namespace BowmarkCapability_cars {
40
92
  // ── Car hire — the unit's own declarations, verbatim ──
41
93
  type CarQuery = {
@@ -111,6 +163,216 @@ type CallOptions = {
111
163
  }
112
164
  }
113
165
 
166
+ declare namespace BowmarkCapability_coworking {
167
+ // ── Coworking space day passes — the unit's own declarations, verbatim ──
168
+ type CoworkingDayPass = {
169
+ venueName: string
170
+ address: string
171
+ workspaceName: string // the pass's own display name at its venue
172
+ category: string | null // e.g. "Coworking" — null when unreported
173
+ capacity: number | null
174
+ priceAmount: number
175
+ currency: string // ISO 4217, always "USD" today (US cities only)
176
+ bookingUrl: string // where to actually book — needs a signed-in account
177
+ latitude: number
178
+ longitude: number
179
+ rating: { average: number; count: number } | null
180
+ }
181
+ type FindDayPassesResult = {
182
+ city: string
183
+ state: string
184
+ dayPasses: CoworkingDayPass[] // [] when nothing is listed today — a real, complete answer
185
+ warnings: string[] // always present; empty when nothing was dropped
186
+ }
187
+
188
+ type CallOptions = {
189
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
190
+ // A provider slower than this is DROPPED from the results and
191
+ // NAMED in warnings — never silently absent
192
+ }
193
+
194
+ /**
195
+ * Finds single-day coworking passes in a US city — venue, price, capacity and a direct booking
196
+ * link, aggregated across WeWork, Industrious, Regus/Spaces and independent operators via
197
+ * LiquidSpace. No login, no booking (that needs a signed-in LiquidSpace account).
198
+ */
199
+ interface Unit {
200
+ /**
201
+ * Finds single-day coworking passes for a US city — `bowmark.coworking.findDayPasses("New
202
+ * York, NY")` or `{ city: "New York", state: "NY" }` — and reads each one's real, current
203
+ * price. Returns `dayPasses: []` when nothing is listed for that city today, a real, complete
204
+ * answer, not a failure. Each pass carries the venue name/address, the pass's own name and
205
+ * category, capacity, price, coordinates, rating and a direct `bookingUrl` — LiquidSpace's own
206
+ * page, since booking itself needs a signed-in LiquidSpace account and is out of scope here.
207
+ * US cities only.
208
+ */
209
+ findDayPasses(location: string | { city: string; state: string }, options?: CallOptions): Promise<FindDayPassesResult>;
210
+ }
211
+ }
212
+
213
+ declare namespace BowmarkCapability_custom_sofa_configurator {
214
+ // ── Custom sofa configurator (fabric selection, live pricing) — the unit's own declarations, verbatim ──
215
+ type CustomSofa = {
216
+ id: string; // "<source>:<nativeId>" — pass to getConfigurator/priceConfiguration
217
+ source: string; // "joybird" | "interiordefine"
218
+ brand: string;
219
+ name: string;
220
+ url: string;
221
+ basePrice: number; // whole dollars — see basePriceNote for what it means
222
+ basePriceNote: string;
223
+ }
224
+ type CustomSofaListResult = { sofas: CustomSofa[]; warnings: string[] }
225
+
226
+ type CustomSofaChoice = { key: string; label: string; priceDelta: number }
227
+ type CustomSofaOption = {
228
+ key: string; // pass as a SELECTIONS key: { [option.key]: choice.key }
229
+ title: string;
230
+ required: boolean;
231
+ choices: CustomSofaChoice[];
232
+ }
233
+ type CustomSofaConfigurator = {
234
+ id: string; source: string; brand: string; name: string; url: string;
235
+ basePrice: number; basePriceNote: string; options: CustomSofaOption[];
236
+ warnings: string[]; // always empty today — getConfigurator is a route to ONE maker
237
+ }
238
+
239
+ type CustomSofaPriceLine = { option: string; choice: string; priceDelta: number }
240
+ type CustomSofaPriceResult = {
241
+ id: string; source: string; brand: string;
242
+ total: number; // the maker's own live total for this configuration
243
+ breakdown: CustomSofaPriceLine[];
244
+ missingRequired: string[]; // total is a FLOOR while this is non-empty
245
+ unmatched: string[]; // selections that matched no real option/choice
246
+ url: string;
247
+ warnings: string[]; // always empty today — priceConfiguration is a route to ONE maker
248
+ }
249
+
250
+ type CallOptions = {
251
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
252
+ // A provider slower than this is DROPPED from the results and
253
+ // NAMED in warnings — never silently absent
254
+ }
255
+
256
+ /**
257
+ * Configure a real sofa or sectional — pick a fabric, wood stain or leg finish — and get the
258
+ * maker's own live price, across every maker whose site publishes a real configurator
259
+ * (Joybird, Interior Define). Not a researched estimate: the same total the maker's own
260
+ * customizer would show for that exact pick. No sofa named yet? Call listSofas() and
261
+ * configure/price the first result — that alone answers 'configure a sofa with fabric
262
+ * selection and live pricing' without asking the caller to pick one first.
263
+ */
264
+ interface Unit {
265
+ /**
266
+ * Lists configurable sofas/sectionals across every maker — Joybird's whole catalogue (filtered
267
+ * to sofas and sectionals) plus an Interior Define search (defaults to "sofa" when `query` is
268
+ * omitted). Each row's `id` is what getConfigurator and priceConfiguration take.
269
+ * `basePriceNote` says what the price actually means for that maker — Joybird does not charge
270
+ * per-fabric, so its price is the real total; Interior Define's is a floor. Throws only when
271
+ * NEITHER maker could be reached.
272
+ */
273
+ listSofas(query?: string): Promise<CustomSofaListResult>;
274
+
275
+ /**
276
+ * Reads one sofa's full configurator — every option slot (Fabric, Wood Stain, Color, Finish,
277
+ * Cushion Fill — the exact set varies by product and maker) with each choice's label and price
278
+ * delta. Each option's `key` and each choice's `key` are exactly what priceConfiguration takes
279
+ * back as a selection.
280
+ */
281
+ getConfigurator(id: string): Promise<CustomSofaConfigurator>;
282
+
283
+ /**
284
+ * Prices ONE exact configuration against the maker's own live customizer and returns the real
285
+ * total, a per-choice breakdown, which required slots are still unpicked (the total is a floor
286
+ * until they are), and a link to the maker's own page for it. `selections` is `{ [option.key]:
287
+ * choice.key }` using the keys getConfigurator(id) just returned for THIS sofa — never invent
288
+ * one.
289
+ */
290
+ priceConfiguration(id: string, selections: Record<string, string>): Promise<CustomSofaPriceResult>;
291
+ }
292
+ }
293
+
294
+ declare namespace BowmarkCapability_developer_api_key_signup {
295
+ // ── Developer API key signup — the unit's own declarations, verbatim ──
296
+ interface DeveloperApiKeySignupDetails {
297
+ organization: string
298
+ email: string
299
+ occupation?: string
300
+ }
301
+ interface DeveloperApiKeySignupResult {
302
+ service: string
303
+ apiKey: string
304
+ message: string
305
+ warnings: string[]
306
+ }
307
+
308
+ type CallOptions = {
309
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
310
+ // A provider slower than this is DROPPED from the results and
311
+ // NAMED in warnings — never silently absent
312
+ }
313
+
314
+ /**
315
+ * Actually RUNS a developer dashboard's signup flow and hands back a real, usable API key — no
316
+ * email verification, no CAPTCHA, for the dashboards this covers. Today: Alpha Vantage's free
317
+ * stock-data API. Call it directly; don't just describe the steps. If the caller gave no
318
+ * organization/email of their own, invent a placeholder — this is an instant, unverified
319
+ * free-tier signup, not an account tied to a real identity, so there is nothing to ask
320
+ * permission for. MAKE THE EMAIL UNIQUE PER CALL (see the worked example) — the dashboard
321
+ * dedupes by address, so a copied literal example email gets "Redundant origin" on the second
322
+ * and every later run.
323
+ */
324
+ interface Unit {
325
+ /**
326
+ * Signs up for a real API key on a developer dashboard — RUN this, don't just explain how —
327
+ * `bowmark.developer_api_key_signup.signUp("alphavantage", { organization: "Acme Corp", email:
328
+ * `qa-${Date.now()}@example.com` })`. `service` selects which dashboard (today: "alphavantage"
329
+ * only — THROWS naming the supported list otherwise, a caller-fixable error).
330
+ * `details.organization` and `details.email` are required; when the caller did not supply
331
+ * their own, invent placeholder-shaped ones like the example's — the signup is instant and
332
+ * unverified, so nothing is lost by not stopping to ask first. MAKE THE EMAIL UNIQUE EVERY
333
+ * CALL (e.g. embed `Date.now()`, as the example does) — the dashboard rejects a repeated
334
+ * address with "Redundant origin", so a literal copied example email fails on the second and
335
+ * every later run. `details.occupation` is optional and dashboard-specific. Returns the real
336
+ * key plus the dashboard's own confirmation sentence. `options.timeoutMs` sets the call budget
337
+ * (default 30000).
338
+ */
339
+ signUp(service: string, details: { organization: string, email: string, occupation?: string }, options?: CallOptions): Promise<DeveloperApiKeySignupResult>;
340
+ }
341
+ }
342
+
343
+ declare namespace BowmarkCapability_domain {
344
+ // ── Domain name availability check — the unit's own declarations, verbatim ──
345
+
346
+ interface DomainAvailabilityResult {
347
+ name: string // normalized: lowercased, no scheme, no "www."
348
+ available: boolean | null // true = free, false = registered, null = unknown
349
+ registrar: string | null
350
+ registeredAt: string | null // ISO 8601
351
+ expiresAt: string | null // ISO 8601
352
+ price: null // always null — see warnings
353
+ currency: null
354
+ source: string // "rdap"
355
+ warnings: string[]
356
+ }
357
+
358
+ /**
359
+ * Checks whether a domain name is registered — and, when it is, who holds it and when it
360
+ * expires — straight off RDAP, the IANA-standardized WHOIS successor. No key, no browser.
361
+ * Price is currently always unknown; see the result's warnings.
362
+ */
363
+ interface Unit {
364
+ /**
365
+ * Looks up a domain name (e.g. "example.com") against its authoritative RDAP server and
366
+ * reports whether it is registered, plus the registrar and registration/expiration dates when
367
+ * it is. `available: null` means the TLD publishes no RDAP service (rare) or the registry
368
+ * answered something unparseable — check `warnings`. `price`/`currency` are always `null`: no
369
+ * keyed registrar pricing source is configured, and `warnings` says so on every call rather
370
+ * than guessing a number.
371
+ */
372
+ checkAvailability(name: string): Promise<DomainAvailabilityResult>;
373
+ }
374
+ }
375
+
114
376
  declare namespace BowmarkCapability_email {
115
377
  // ── Email (work addresses & domains) — the unit's own declarations, verbatim ──
116
378
  // One candidate email domain for a company. Nulls mean "the source does not
@@ -361,6 +623,52 @@ type FlightStatusResult = {
361
623
  }
362
624
  }
363
625
 
626
+ declare namespace BowmarkCapability_game_soundtrack_composer_credits {
627
+ // ── Video game soundtrack composer credits — the unit's own declarations, verbatim ──
628
+
629
+ interface SoundtrackMatch {
630
+ releaseGroupId: string
631
+ title: string
632
+ composer: string
633
+ firstReleaseDate: string
634
+ disambiguation: string
635
+ }
636
+
637
+ interface SoundtrackCredits {
638
+ releaseGroupId: string
639
+ title: string
640
+ composer: string
641
+ firstReleaseDate: string
642
+ disambiguation: string
643
+ relations: { role: string, artist: string }[]
644
+ warnings: string[]
645
+ }
646
+
647
+ interface SoundtrackSearchResult {
648
+ query: string
649
+ matches: SoundtrackMatch[]
650
+ warnings: string[]
651
+ }
652
+
653
+ /**
654
+ * Looks up a video game's soundtrack release and who composed it, via MusicBrainz's own
655
+ * release-group database.
656
+ */
657
+ interface Unit {
658
+ /**
659
+ * Searches MusicBrainz for soundtrack releases matching a game title and returns each match's
660
+ * composer credit and release-group id.
661
+ */
662
+ search(gameTitle: string): Promise<SoundtrackSearchResult>;
663
+
664
+ /**
665
+ * Looks up one soundtrack release-group by id (from search()) and returns its full
666
+ * composer/artist credits.
667
+ */
668
+ getCredits(releaseGroupId: string): Promise<SoundtrackCredits>;
669
+ }
670
+ }
671
+
364
672
  declare namespace BowmarkCapability_git_commit_history {
365
673
  // ── Git commit history — the unit's own declarations, verbatim ──
366
674
  interface Commit {
@@ -416,6 +724,58 @@ type CallOptions = {
416
724
  }
417
725
  }
418
726
 
727
+ declare namespace BowmarkCapability_git_release_notes {
728
+ // ── Git release notes — the unit's own declarations, verbatim ──
729
+ interface Release {
730
+ tag: string // the repo's own tag, e.g. "v7.0.2"
731
+ name: string // display name, falls back to the tag when blank
732
+ draft: boolean
733
+ prerelease: boolean
734
+ createdAt: string // ISO 8601
735
+ publishedAt: string | null // ISO 8601, null for a draft never published
736
+ notes: string // the release notes text, in the host's own markdown
737
+ url: string // the release's own page on the host
738
+ }
739
+ interface ReleaseNotesOptions {
740
+ limit?: number // 1-100, default 30
741
+ page?: number // 1-based, for paging past limit
742
+ }
743
+ interface ReleaseNotesResult {
744
+ repo: string // resolved as "owner/repo", however it was passed
745
+ releases: Release[]
746
+ warnings: string[]
747
+ }
748
+
749
+ type CallOptions = {
750
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
751
+ // A provider slower than this is DROPPED from the results and
752
+ // NAMED in warnings — never silently absent
753
+ }
754
+
755
+ /**
756
+ * A git repository's own release notes — tag, name, dates and the release notes text for every
757
+ * release, newest first — from a GitHub URL or a bare owner/repo string. What a changelog or a
758
+ * "what's new" page is built from, in one call. No repo named yet? Call it on
759
+ * microsoft/TypeScript (a real, actively-released public repo) to show a caller the shape of
760
+ * the answer, rather than only asking which repo they meant.
761
+ */
762
+ interface Unit {
763
+ /**
764
+ * Returns a public GitHub repository's own release history — each release's tag, display name,
765
+ * draft/prerelease flags, created/published dates, its release notes text (`notes`) and its
766
+ * own page URL — newest first, GitHub's own order. `repo` takes either form: a full URL
767
+ * ("https://github.com/microsoft/TypeScript") or the bare "owner/repo" string. `options.limit`
768
+ * (1-100, default 30) and `options.page` page through history. THROWS a caller-fixable error
769
+ * for a string that is neither shape, or for an owner/repo GitHub does not have (a private
770
+ * repo also reads as not-found, unauthenticated). IF THE CALLER NAMED NO REPO: do not stop to
771
+ * ask — call this immediately with "microsoft/TypeScript" (a real, actively-released public
772
+ * repo) to show a real, live answer, and mention in your reply that a different repo can be
773
+ * named.
774
+ */
775
+ releaseNotes(repo: string, options?: ReleaseNotesOptions): Promise<ReleaseNotesResult>;
776
+ }
777
+ }
778
+
419
779
  declare namespace BowmarkCapability_hotels {
420
780
  // ── Hotels — the unit's own declarations, verbatim ──
421
781
  type HotelQuery = {
@@ -520,25 +880,26 @@ type CallOptions = {
520
880
  }
521
881
 
522
882
  /**
523
- * Real national-average installed-cost RANGES for a residential HVAC system, straight off a
524
- * manufacturer's own published cost guide — pick a system type ("Air Conditioners", "80%
525
- * Furnaces", "90% Furnaces", "Heat Pumps", "Low-Profile Heat Pumps", "Cold-Climate Heat Pumps"
526
- * or "Air Handlers") and get the real per-tier (Platinum/Gold/Silver) range, model name and
527
- * the source's own disclaimer. Not a bound quote for one home measured 2026-08-29 that no
528
- * national HVAC brand computes a per-configuration price online; every one sells through
529
- * independent dealers who set final price locally.
883
+ * Call bowmark.hvac.getCostEstimate(systemType) to pull a real, published installed-cost RANGE
884
+ * for a residential HVAC system straight off a manufacturer's own cost guide — pick a system
885
+ * type ("Air Conditioners", "80% Furnaces", "90% Furnaces", "Heat Pumps", "Low-Profile Heat
886
+ * Pumps", "Cold-Climate Heat Pumps" or "Air Handlers") and get back the real per-tier
887
+ * (Platinum/Gold/Silver) price range, model name and source URL. Always call it rather than
888
+ * answering from memory these are today's actual published figures. (It is a
889
+ * national-average range, not a bound quote for one address; every national HVAC brand sells
890
+ * through independent dealers who set final price locally — see `disclaimer`.)
530
891
  */
531
892
  interface Unit {
532
893
  /**
533
- * Reads a real, published national-average installed-cost range for one HVAC system type ("Air
534
- * Conditioners", "80% Furnaces", "90% Furnaces", "Heat Pumps", "Low-Profile Heat Pumps",
535
- * "Cold-Climate Heat Pumps" or "Air Handlers"), broken into the maker's three tiers
536
- * (Platinum/Gold/Silver) with a real model name and cost range per tier. THIS IS A PUBLISHED
537
- * ESTIMATE, NOT A BOUND QUOTE for one caller's home or ZIP no national HVAC brand computes
538
- * that online (measured 2026-08-29 across Trane, Carrier, Lennox, Rheem, American Standard and
539
- * Goodman), so this returns the closest honest real number: the manufacturer's own
540
- * national-average range, with its own disclaimer carried in `disclaimer`. THROWS when the
541
- * source could not be reached at all.
894
+ * Calls the manufacturer's own published cost-guide table and returns a real installed-cost
895
+ * range for one HVAC system type ("Air Conditioners", "80% Furnaces", "90% Furnaces", "Heat
896
+ * Pumps", "Low-Profile Heat Pumps", "Cold-Climate Heat Pumps" or "Air Handlers"), broken into
897
+ * the maker's three tiers (Platinum/Gold/Silver) with a real model name and cost range per
898
+ * tier. Call this instead of estimating from training datait returns today's actual
899
+ * published figures. (It is a national-average range, not a bound quote for one caller's home
900
+ * or ZIP no national HVAC brand computes that online, measured 2026-08-29 across Trane,
901
+ * Carrier, Lennox, Rheem, American Standard and Goodman; the source's own caveat is carried in
902
+ * `disclaimer`.) THROWS when the source could not be reached at all.
542
903
  */
543
904
  getCostEstimate(systemType: string, options?: CallOptions): Promise<HvacCostEstimateResult>;
544
905
  }
@@ -664,6 +1025,35 @@ type ReferralCarrierListResult = {
664
1025
  // out or failed
665
1026
  }
666
1027
 
1028
+ // getHomeQuotes: real homeowners premiums for one property, fanned out across
1029
+ // Insurify's marketplace and Progressive's HomeQuote Explorer panel. Both
1030
+ // price nothing without the caller's own identity.
1031
+ type HomeQuoteQuery = {
1032
+ identity: { firstName: string, lastName: string, dob: string, email: string, phone: string }
1033
+ address: string // street address, e.g. "686 Hamlet St"
1034
+ zip: string // 5-digit US ZIP
1035
+ city?: string // required TOGETHER WITH state to reach Progressive's panel
1036
+ state?: string // 2-letter state code, required together with city
1037
+ }
1038
+ type HomeQuote = {
1039
+ source: string // which panel this came from
1040
+ carrier: string
1041
+ package: string | null // Progressive's bundling tier; always null for Insurify
1042
+ annualPremium: number | null // whole-term premium normalized to 12 months
1043
+ monthlyPremium: number | null // always null on a Progressive row — it publishes none
1044
+ windHailIncluded: boolean | null // Progressive only; always null for Insurify
1045
+ quoteUrl: string | null // Insurify's own bindUrl; always null for Progressive
1046
+ }
1047
+ type DeclinedHomeCarrier = {
1048
+ source: string
1049
+ carrier: string // asked and refused to write the property — a real answer
1050
+ }
1051
+ type HomeQuoteResult = {
1052
+ quotes: HomeQuote[] // cheapest annualPremium first; nulls last
1053
+ declined: DeclinedHomeCarrier[]
1054
+ warnings: string[]
1055
+ }
1056
+
667
1057
  type CallOptions = {
668
1058
  timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
669
1059
  // A provider slower than this is DROPPED from the results and
@@ -673,8 +1063,10 @@ type CallOptions = {
673
1063
  /**
674
1064
  * Look up insurance carriers in the regulators' own national register — the NAIC company code,
675
1065
  * the legal entity behind a consumer brand, head-office contact details, and the states each
676
- * carrier is LICENSED to write in, which is not the same as where it is headquartered. Direct
677
- * API, no browser.
1066
+ * carrier is LICENSED to write in, which is not the same as where it is headquartered — and
1067
+ * get REAL home insurance quotes and rates for a specific property address from two
1068
+ * independent carrier panels (Insurify's marketplace, Progressive's HomeQuote Explorer).
1069
+ * Direct API, no browser.
678
1070
  */
679
1071
  interface Unit {
680
1072
  /**
@@ -757,6 +1149,122 @@ type CallOptions = {
757
1149
  * in it. `options.timeoutMs` sets the per-source budget (default 30000).
758
1150
  */
759
1151
  listReferralCarriers(query?: ReferralCarrierQuery, options?: CallOptions): Promise<ReferralCarrierListResult>;
1152
+
1153
+ /**
1154
+ * Returns REAL home insurance quotes — actual carrier premiums for one property address,
1155
+ * fanned out across two independent panels: Insurify's own marketplace and Progressive's
1156
+ * HomeQuote Explorer (itself a hand-off to a Bolt-run panel of outside carriers, so
1157
+ * "progressive" here still means several underwriters, not one). `{ identity, address: "686
1158
+ * Hamlet St", zip: "43215", city: "Columbus", state: "OH" }` — `identity` is the CALLER's OWN
1159
+ * `{ firstName, lastName, dob, email, phone }`, required because neither carrier prices a
1160
+ * property without one. `city` and `state` are each optional but REQUIRED TOGETHER to reach
1161
+ * Progressive's panel, which bootstraps off a full postal address; Insurify resolves both from
1162
+ * `zip` on its own and reaches every query this function accepts. Returns `quotes` sorted
1163
+ * CHEAPEST `annualPremium` FIRST (a row with no premium at all sorts last), each carrying
1164
+ * `source`, `carrier`, Progressive's bundling `package` tier (always null for Insurify, which
1165
+ * prices one plan per carrier), `annualPremium` normalized to a 12-month figure so a shorter
1166
+ * or longer term is still comparable, `monthlyPremium` (a carrier's own instalment figure when
1167
+ * it quoted one — always null on a Progressive row, since that panel publishes only the annual
1168
+ * premium per package), `windHailIncluded` (Progressive only), and `quoteUrl` (Insurify's own
1169
+ * `bindUrl` when it published one). `declined` names a carrier a panel asked and REFUSED to
1170
+ * write — a real answer distinct from "no price returned", and never merged into `quotes`.
1171
+ * `warnings` is always present: it names a source that timed out or failed, AND a source not
1172
+ * queried because the query lacked the input it needs (Progressive without `city`+`state`) —
1173
+ * read it before treating a short list as the whole market. When every source the query DID
1174
+ * reach for failed, this THROWS rather than returning an empty list, which would otherwise
1175
+ * read as "nobody would insure this property". `options.timeoutMs` sets the per-source budget
1176
+ * (default 30000).
1177
+ */
1178
+ getHomeQuotes(query: HomeQuoteQuery, options?: CallOptions): Promise<HomeQuoteResult>;
1179
+ }
1180
+ }
1181
+
1182
+ declare namespace BowmarkCapability_istanbul_schedules {
1183
+ // ── Istanbul attraction opening hours — the unit's own declarations, verbatim ──
1184
+ interface AttractionHoursResult {
1185
+ query: string
1186
+ name: string // the site's own display name for the match
1187
+ openingTime: string | null // "HH:MM"
1188
+ closingTime: string | null // "HH:MM"
1189
+ ticketOfficeClosingTime: string | null // "HH:MM" — often earlier than closingTime
1190
+ closedDays: string | null // the site's own wording, e.g. "Her gün açık"
1191
+ address: string | null
1192
+ phone: string | null
1193
+ email: string | null
1194
+ url: string
1195
+ warnings: string[]
1196
+ }
1197
+
1198
+ type CallOptions = {
1199
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
1200
+ // A provider slower than this is DROPPED from the results and
1201
+ // NAMED in warnings — never silently absent
1202
+ }
1203
+
1204
+ /**
1205
+ * Live opening/closing hours, ticket-office closing time and closed days for Istanbul museums
1206
+ * and archaeological sites — İstanbul Archaeological Museums, the Hagia Sophia History and
1207
+ * Experience Museum, Galata Tower Museum among them — read straight off muze.gov.tr (Turkey's
1208
+ * Ministry of Culture and Tourism). Call this for the attraction-hours part of any
1209
+ * Istanbul-schedules question, even one that also asks about ferries or shows: answer what it
1210
+ * returns, then say plainly that ferry timetables and show schedules aren't covered — no
1211
+ * reachable machine-readable source was found for either; see this unit's request file for
1212
+ * what was tried. Don't skip the call just because the question is broader than this unit's
1213
+ * scope.
1214
+ */
1215
+ interface Unit {
1216
+ /**
1217
+ * Matches `query` against muze.gov.tr's own museum/site listing (a substring match on the
1218
+ * site's own display name, e.g. "Galata Tower" or "Hagia Sophia") and returns that
1219
+ * attraction's opening/closing hours, ticket-office closing time and closed days. THROWS a
1220
+ * caller-fixable error naming the listing when nothing matches — the listing is a curated
1221
+ * highlight subset, not the whole ministry catalog.
1222
+ */
1223
+ attractionHours(query: string, options?: CallOptions): Promise<AttractionHoursResult>;
1224
+ }
1225
+ }
1226
+
1227
+ declare namespace BowmarkCapability_mcp_registry {
1228
+ // ── MCP Registry — the unit's own declarations, verbatim ──
1229
+ interface McpRegistryEntry {
1230
+ name: string;
1231
+ title: string | null;
1232
+ description: string;
1233
+ version: string;
1234
+ repositoryUrl: string | null;
1235
+ remoteUrl: string | null;
1236
+ status: string;
1237
+ }
1238
+
1239
+ interface McpRegistrySearchResult {
1240
+ servers: McpRegistryEntry[];
1241
+ warnings: string[];
1242
+ }
1243
+
1244
+ type CallOptions = {
1245
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
1246
+ // A provider slower than this is DROPPED from the results and
1247
+ // NAMED in warnings — never silently absent
1248
+ }
1249
+
1250
+ /**
1251
+ * Search or browse the official Model Context Protocol server registry — find a published MCP
1252
+ * server by name and get its install or connect URL.
1253
+ */
1254
+ interface Unit {
1255
+ /**
1256
+ * Lists or searches the official MCP server registry (registry.modelcontextprotocol.io) for
1257
+ * published Model Context Protocol servers. `query` substring-matches a server's registry name
1258
+ * — omit it to list the newest-published entries. Each row carries the server's registry name,
1259
+ * title, description, latest version, where to install it (`repositoryUrl`) or connect to it
1260
+ * if it's hosted (`remoteUrl`), and its registry status. This is how an agent answers 'is
1261
+ * there already an MCP server for X' before building one, or finds out what a directory
1262
+ * listing/submission for the MCP ecosystem's own registry actually looks like. `limit` caps
1263
+ * how many rows come back (default 30, max 100). THROWS if the registry cannot be reached —
1264
+ * one source, so there is no partial answer to hand back. `options.timeoutMs` sets the budget
1265
+ * (default 30000).
1266
+ */
1267
+ search(query?: string, limit?: number, options?: CallOptions): Promise<McpRegistrySearchResult>;
760
1268
  }
761
1269
  }
762
1270
 
@@ -921,6 +1429,96 @@ type ProductResult = {
921
1429
  }
922
1430
  }
923
1431
 
1432
+ declare namespace BowmarkCapability_phone_trade_in {
1433
+ // ── Phone trade-in value — the unit's own declarations, verbatim ──
1434
+ // The capability's own condition vocabulary — four tiers every buyback
1435
+ // comparison site groups devices into, whatever it calls them natively.
1436
+ type TradeInCondition = "like_new" | "good" | "fair" | "broken";
1437
+
1438
+ // One buyback vendor's live cash offer for the requested device.
1439
+ type TradeInQuote = {
1440
+ source: string // which source this quote came from, e.g. "sellcell"
1441
+ merchant: string // the buyback vendor's own name, e.g. "BuyBackBoss"
1442
+ price: { amount: number; currency: string } // integer minor units — cents
1443
+ paymentMethods: string[]
1444
+ paymentPeriod: string | null
1445
+ freeShipping: boolean
1446
+ }
1447
+ type PhoneTradeInEstimate = {
1448
+ model: string // the resolved device slug, e.g. "iphone-14-pro"
1449
+ storage: string
1450
+ condition: TradeInCondition
1451
+ quotes: TradeInQuote[] // every vendor's current offer, highest first
1452
+ warnings: string[] // always present; empty when nothing was dropped
1453
+ }
1454
+
1455
+ type CallOptions = {
1456
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
1457
+ // A provider slower than this is DROPPED from the results and
1458
+ // NAMED in warnings — never silently absent
1459
+ }
1460
+
1461
+ /**
1462
+ * Looks up the current buyback value of an iPhone — model, storage and condition — and returns
1463
+ * every vendor's live cash offer, highest first. Fans out across buyback comparison sources;
1464
+ * direct API, no browser.
1465
+ */
1466
+ interface Unit {
1467
+ /**
1468
+ * Looks up the current buyback value of an iPhone — `bowmark.phone_trade_in.estimate({ model:
1469
+ * "iPhone 14 Pro", storage: "256GB", condition: "good" })` — and returns every vendor's live
1470
+ * cash offer, highest first. `condition` is one of "like_new" | "good" | "fair" | "broken"
1471
+ * (also accepts everyday synonyms like "mint" or "cracked"); defaults to "good" when omitted.
1472
+ * A shorthand string carrying a storage token also works, e.g. `"iPhone 14 Pro 256GB"`. THROWS
1473
+ * on a non-iPhone model (this capability covers Apple devices only today) or a missing storage
1474
+ * capacity — never guesses a capacity, because a wrong guess would silently price the wrong
1475
+ * device. `warnings` is always present and names anything dropped, including a source that
1476
+ * timed out or failed. `options.timeoutMs` sets the per-source budget (default 30000).
1477
+ */
1478
+ estimate(query: { model: string; storage: string; condition?: string } | string, options?: CallOptions): Promise<PhoneTradeInEstimate>;
1479
+ }
1480
+ }
1481
+
1482
+ declare namespace BowmarkCapability_pricing {
1483
+ // ── Check whether a product page quotes a different price to different shoppers — the unit's own declarations, verbatim ──
1484
+ interface PersonalizationPersona {
1485
+ label: string
1486
+ device?: "desktop" | "mobile" // defaults to "desktop"
1487
+ }
1488
+ interface PersonaRead {
1489
+ persona: string
1490
+ status: number
1491
+ ok: boolean
1492
+ price: { amount: number; currency: string } | null // integer minor units
1493
+ display: string | null // price formatted for a reader, e.g. "$499.99" — quote THIS, not price.amount
1494
+ source: "ld+json" | "none"
1495
+ error: string | null
1496
+ }
1497
+ interface PersonalizationCheck {
1498
+ url: string
1499
+ requestedUrl: string
1500
+ reads: PersonaRead[]
1501
+ personalized: boolean | null // null when fewer than 2 personas produced a comparable price
1502
+ warnings: string[]
1503
+ }
1504
+
1505
+ /**
1506
+ * Given a product page's url, fetches it once per simulated shopper (desktop vs mobile, each a
1507
+ * fresh cookie-less visit) and reports whether the price they'd see differs — never geography,
1508
+ * loyalty status or browsing history, which no session it holds can simulate.
1509
+ */
1510
+ interface Unit {
1511
+ /**
1512
+ * Reads one product page's price once per persona (default: desktop + mobile, each a fresh
1513
+ * cookie-less visit) and reports whether the personas saw different prices. If the caller
1514
+ * hasn't named a page yet, DO NOT ask them for one first — CALL this function immediately with
1515
+ * the worked example URL below (a real, live product page) so the caller sees a genuine
1516
+ * comparison before you ask which page to check next.
1517
+ */
1518
+ checkPersonalization(url: string, personas?: PersonalizationPersona[]): Promise<PersonalizationCheck>;
1519
+ }
1520
+ }
1521
+
924
1522
  declare namespace BowmarkCapability_products {
925
1523
  // ── Check a product page's price and stock availability — the unit's own declarations, verbatim ──
926
1524
  interface ProductAvailability {
@@ -1344,20 +1942,21 @@ type CallOptions = {
1344
1942
  /**
1345
1943
  * Prices a domestic package across USPS and UPS for a ZIP-to-ZIP move, weight and optional
1346
1944
  * dimensions, and returns normalized quotes cheapest first — service name, price and transit
1347
- * days where the carrier states one. Direct APIs, no browser. Each caller brings their own
1348
- * USPS and/or UPS developer key; a carrier with no key attached is dropped and named in
1349
- * `warnings` rather than silently skipped.
1945
+ * days where the carrier states one. Direct JSON, no browser. USPS needs no key and always
1946
+ * quotes; UPS is BYOK, and a caller without a UPS developer key gets the USPS quotes plus a
1947
+ * `warnings` line naming what was dropped rather than a silent skip.
1350
1948
  */
1351
1949
  interface Unit {
1352
1950
  /**
1353
1951
  * Prices a domestic package — `{ fromZip: "20024", toZip: "10001", weightOz: 16 }` — across
1354
1952
  * every USPS and UPS service that quotes it, and returns `rates` cheapest first.
1355
- * `length`/`width`/`height` (inches) must be given together or omitted entirely. `warnings`
1356
- * names any carrier dropped for a timeout, an error, or a missing vendor key each caller
1357
- * brings their own USPS/UPS developer key; neither carrier is served off a fleet credential.
1358
- * THROWS `AllProvidersFailedError` when NEITHER carrier answered, because that is a different
1359
- * fact from "no service quotes this shipment" and only one of them means there truly is no
1360
- * rate. `options.timeoutMs` sets the per-carrier budget (default 30000).
1953
+ * `length`/`width`/`height` (inches) must be given together or omitted entirely. USPS needs no
1954
+ * API key. UPS is BYOK: bring your own UPS developer key or that leg is dropped and named in
1955
+ * `warnings` (it is never served off a fleet credential). `warnings` also names any carrier
1956
+ * dropped for a timeout or an error. THROWS `AllProvidersFailedError` when NEITHER carrier
1957
+ * answered, because that is a different fact from "no service quotes this shipment" and only
1958
+ * one of them means there truly is no rate. `options.timeoutMs` sets the per-carrier budget
1959
+ * (default 30000).
1361
1960
  */
1362
1961
  estimate(query: ShippingQuery, options?: CallOptions): Promise<ShippingEstimateResult>;
1363
1962
  }
@@ -1397,6 +1996,105 @@ interface TariffLookupResult {
1397
1996
  }
1398
1997
  }
1399
1998
 
1999
+ declare namespace BowmarkCapability_text_to_speech {
2000
+ // ── Text to speech — the unit's own declarations, verbatim ──
2001
+ interface SynthesizeOptions {
2002
+ voiceId?: string // an id cloneVoice returned, or the vendor's own default voice
2003
+ }
2004
+ interface SynthesizeResult {
2005
+ audioBase64: string // the synthesized audio, base64-encoded
2006
+ contentType: string // e.g. "audio/mpeg"
2007
+ voiceId: string
2008
+ warnings: string[]
2009
+ }
2010
+ interface CloneVoiceOptions {
2011
+ name: string
2012
+ sampleUrls: string[] // audio sample URLs to clone the voice from
2013
+ description?: string
2014
+ }
2015
+ interface CloneVoiceResult {
2016
+ voiceId: string // pass this as SynthesizeOptions.voiceId
2017
+ name: string
2018
+ requiresVerification: boolean
2019
+ warnings: string[]
2020
+ }
2021
+
2022
+ type CallOptions = {
2023
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
2024
+ // A provider slower than this is DROPPED from the results and
2025
+ // NAMED in warnings — never silently absent
2026
+ }
2027
+
2028
+ /**
2029
+ * Converts text into spoken audio, and clones a new voice from caller-supplied audio samples —
2030
+ * narration, dubbing, accessibility, IVR prompts. Requires the caller's own ElevenLabs API key
2031
+ * (BYOK) — see the 🔑 note on this unit.
2032
+ */
2033
+ interface Unit {
2034
+ /**
2035
+ * Converts `text` into spoken audio, base64-encoded, in an existing or previously-cloned voice
2036
+ * (`options.voiceId`, defaulting to a standard voice). Requires an API key — a caller with
2037
+ * none gets a refusal naming what to provide. Call `cloneVoice` first to speak in a specific
2038
+ * cloned voice, then pass the returned `voiceId` here.
2039
+ */
2040
+ synthesize(text: string, options?: SynthesizeOptions): Promise<SynthesizeResult>;
2041
+
2042
+ /**
2043
+ * Creates a new voice cloned from one or more audio sample URLs (`options.sampleUrls`) —
2044
+ * downloads each sample and uploads it to the vendor's cloning endpoint. Returns the new
2045
+ * voice's id, which `synthesize`'s `voiceId` then accepts.
2046
+ */
2047
+ cloneVoice(options: CloneVoiceOptions): Promise<CloneVoiceResult>;
2048
+ }
2049
+ }
2050
+
2051
+ declare namespace BowmarkCapability_theme_park_tickets {
2052
+ // ── Theme park tickets — the unit's own declarations, verbatim ──
2053
+ type TicketOption = {
2054
+ title: string // e.g. "Park Ticket", "2027 Gold Pass"
2055
+ subtitle: string | null
2056
+ priceAmount: number | null // parsed from the site's own price text; null when it didn't parse
2057
+ currency: string // ISO 4217, always "USD" today
2058
+ priceModifier: string | null // e.g. "/ea*", "per night" — null for a flat one-time price
2059
+ wasPriceAmount: number | null // the struck-through "was" price, same parsing — null when absent
2060
+ buyUrl: string | null // where to actually buy — a checkout flow is out of scope here
2061
+ }
2062
+ type ThemeParkTicketsResult = {
2063
+ park: string // the park name or slug the caller passed
2064
+ parkSlug: string
2065
+ parkTitle: string
2066
+ groupLabel: string // the site's own section label, e.g. "Daily Tickets"
2067
+ tickets: TicketOption[]
2068
+ warnings: string[] // always present; empty when nothing was dropped
2069
+ }
2070
+
2071
+ type CallOptions = {
2072
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
2073
+ // A provider slower than this is DROPPED from the results and
2074
+ // NAMED in warnings — never silently absent
2075
+ }
2076
+
2077
+ /**
2078
+ * Reads a Six Flags/Cedar Fair theme park's own ticket page and returns its current pass
2079
+ * prices — title, price, any "was" price and a buy link. Covers every park in the merged
2080
+ * portfolio (Six Flags Magic Mountain, Cedar Point, Kings Island, Knott's Berry Farm,
2081
+ * Carowinds and ~30 more) by name or sixflags.com slug. Disney, Universal and SeaWorld are not
2082
+ * covered yet. No login, no purchase.
2083
+ */
2084
+ interface Unit {
2085
+ /**
2086
+ * Looks up a Six Flags/Cedar Fair theme park by name (`"Cedar Point"`, `"Six Flags Magic
2087
+ * Mountain"`) or sixflags.com slug (`"cedarpoint"`, `"magicmountain"`) and reads its real,
2088
+ * current ticket/pass prices — `bowmark.theme_park_tickets.search("Cedar Point")` or `{ park:
2089
+ * "Cedar Point" }`. Each ticket carries its own title, subtitle, parsed price, any
2090
+ * struck-through "was" price and a buy link, exactly as the park's own site is publishing
2091
+ * today. Throws naming the closest matches when the park name does not resolve to one of the
2092
+ * ~33 parks in the covered portfolio.
2093
+ */
2094
+ search(park: string | { park: string }, options?: CallOptions): Promise<ThemeParkTicketsResult>;
2095
+ }
2096
+ }
2097
+
1400
2098
  declare namespace BowmarkCapability_weather {
1401
2099
  // ── Weather forecast for a place — the unit's own declarations, verbatim ──
1402
2100
 
@@ -1433,6 +2131,53 @@ interface ForecastResult {
1433
2131
  }
1434
2132
  }
1435
2133
 
2134
+ declare namespace BowmarkCapability_yoga_outfit_shopping {
2135
+ // ── Coordinated yoga outfit shopping — the unit's own declarations, verbatim ──
2136
+ interface YogaOutfitItem {
2137
+ source: string // "lululemon" | "beyondyoga" | "aloyoga"
2138
+ title: string
2139
+ url: string
2140
+ image: string | null // null when the leg carries none (lululemon's search rows never do)
2141
+ priceLow: number | null
2142
+ priceHigh: number | null
2143
+ currency: string | null // null when the leg doesn't publish one (lululemon's search door never does)
2144
+ inStock: boolean
2145
+ garmentType: string | null // the retailer's OWN published label, transcribed — null if the leg
2146
+ // doesn't publish one (lululemon never does; the Shopify legs' search
2147
+ // door doesn't either, only getProduct's REST door does)
2148
+ colorFamily: string | null // shared-colour evidence — null for lululemon
2149
+ fabrics: string[] // retailer-published fabric names — [] for lululemon
2150
+ }
2151
+ interface YogaOutfitSearchResult {
2152
+ items: YogaOutfitItem[]
2153
+ warnings: string[] // always present. Names a retailer that timed out or errored;
2154
+ // ALL THREE dead throws instead of returning an empty result
2155
+ }
2156
+ type CallOptions = {
2157
+ timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
2158
+ // A provider slower than this is DROPPED from the results and
2159
+ // NAMED in warnings — never silently absent
2160
+ }
2161
+
2162
+ /**
2163
+ * Search for a coordinated yoga outfit across lululemon, Beyond Yoga and Alo Yoga in one call
2164
+ * — one normalized row shape per product, with each retailer's own published garment type,
2165
+ * colour family and fabric names carried through so a caller can spot a plausible
2166
+ * top-and-bottom pair. Never a claim that any retailer sold two items as a set.
2167
+ */
2168
+ interface Unit {
2169
+ /**
2170
+ * Fans out one free-text query to lululemon, Beyond Yoga and Alo Yoga in parallel and returns
2171
+ * every match as one normalized row per product. `limit` (default 8, max 24) applies PER
2172
+ * RETAILER, so a caller asking for 5 gets up to 5 rows from EACH of the three, not 5 total. A
2173
+ * retailer that times out or errors is named in `warnings`, never silently absent; all three
2174
+ * failing throws `AllProvidersFailedError` instead of returning an empty result, which would
2175
+ * be indistinguishable from 'nobody sells this'.
2176
+ */
2177
+ search(query: string, options?: { limit?: number; timeoutMs?: number }): Promise<YogaOutfitSearchResult>;
2178
+ }
2179
+ }
2180
+
1436
2181
  declare namespace BowmarkProvider_aa {
1437
2182
  // ── American Airlines — the unit's own declarations, verbatim ──
1438
2183
  interface aaFlight {
@@ -1978,6 +2723,31 @@ interface AjmadisonSearchResult {
1978
2723
  }
1979
2724
  }
1980
2725
 
2726
+ declare namespace BowmarkProvider_alphavantage {
2727
+ // ── Alpha Vantage — the unit's own declarations, verbatim ──
2728
+ interface AlphavantageSignUpDetails {
2729
+ organization: string;
2730
+ email: string;
2731
+ occupation?: "Investor" | "Software Developer" | "Educator" | "Student" | "I am from the Trading Agents project on Github" | "Other";
2732
+ }
2733
+ interface AlphavantageSignUpResult {
2734
+ apiKey: string;
2735
+ message: string;
2736
+ }
2737
+
2738
+ /**
2739
+ * alphavantage.co's own free-tier signup — issues a real, usable stock-data API key instantly,
2740
+ * no email verification.
2741
+ */
2742
+ interface Unit {
2743
+ /**
2744
+ * Runs alphavantage.co's real signup flow and returns a genuine, immediately usable free-tier
2745
+ * stock-data API key — no email verification, no CAPTCHA.
2746
+ */
2747
+ signUp(details: { organization: string, email: string, occupation?: string }): Promise<AlphavantageSignUpResult>;
2748
+ }
2749
+ }
2750
+
1981
2751
  declare namespace BowmarkProvider_americanstandard {
1982
2752
  // ── American Standard Heating & Air Conditioning — the unit's own declarations, verbatim ──
1983
2753
  type AmericanStandardTierName = "Platinum" | "Gold" | "Silver";
@@ -2168,6 +2938,11 @@ interface AppleProductPage {
2168
2938
  url: string;
2169
2939
  products: AppleProduct[];
2170
2940
  }
2941
+ interface AppleTradeInEstimate {
2942
+ device: string;
2943
+ upToUsd: number;
2944
+ sourceUrl: string;
2945
+ }
2171
2946
 
2172
2947
  /** apple.com's own site search and product pages — no API, no login, no browser. */
2173
2948
  interface Unit {
@@ -2182,6 +2957,15 @@ interface AppleProductPage {
2182
2957
  * every schema.org Product block it publishes.
2183
2958
  */
2184
2959
  getProduct(urlOrPath: string): Promise<AppleProductPage>;
2960
+
2961
+ /**
2962
+ * Reads apple.com's own trade-in value table and returns the CEILING ("up to $X")
2963
+ * cash-or-credit estimate it publishes for one device — a human name ("iPhone 14 Pro") or the
2964
+ * slug `phone_trade_in` already normalizes to ("iphone-14-pro") both resolve. Apple publishes
2965
+ * ONE number per device, not a matrix by storage or condition: the value is Apple's advertised
2966
+ * best-case figure, not a quote for a specific unit's actual condition.
2967
+ */
2968
+ getTradeInEstimate(model: string): Promise<AppleTradeInEstimate>;
2185
2969
  }
2186
2970
  }
2187
2971
 
@@ -3011,6 +3795,47 @@ interface BaublebarCheckoutLink {
3011
3795
  }
3012
3796
  }
3013
3797
 
3798
+ declare namespace BowmarkProvider_bcparkscamping {
3799
+ // ── BC Parks Camping (Discover Camping) — the unit's own declarations, verbatim ──
3800
+ interface BcParksCampground {
3801
+ resourceLocationId: number;
3802
+ name: string;
3803
+ fullName: string;
3804
+ }
3805
+ interface BcParksSiteAvailability {
3806
+ resourceId: number;
3807
+ siteName: string | null;
3808
+ nightsRequested: number;
3809
+ nightsAvailable: number;
3810
+ fullyAvailable: boolean;
3811
+ }
3812
+ interface BcParksAvailabilityResult {
3813
+ resourceLocationId: number;
3814
+ startDate: string;
3815
+ endDate: string;
3816
+ nights: number;
3817
+ sites: BcParksSiteAvailability[];
3818
+ }
3819
+
3820
+ /**
3821
+ * camping.bcparks.ca's own reservation API (Discover Camping) — find a provincial park
3822
+ * campground by name, then read its real per-site, per-night availability for a stay.
3823
+ */
3824
+ interface Unit {
3825
+ /**
3826
+ * Given a free-text substring, returns every BC Parks campground whose short or full name
3827
+ * matches, with its resourceLocationId for checkAvailability.
3828
+ */
3829
+ searchCampgrounds(query: string): Promise<BcParksCampground[]>;
3830
+
3831
+ /**
3832
+ * Given a campground's resourceLocationId and a date range, returns each individual campsite's
3833
+ * real per-night availability for that stay.
3834
+ */
3835
+ checkAvailability(arg: { resourceLocationId: number, startDate: string, endDate: string }): Promise<BcParksAvailabilityResult>;
3836
+ }
3837
+ }
3838
+
3014
3839
  declare namespace BowmarkProvider_beatthebomb {
3015
3840
  // ── Beat The Bomb — the unit's own declarations, verbatim ──
3016
3841
  interface BeatthebombMission {
@@ -3076,6 +3901,31 @@ interface BeatthebombPriceQuote {
3076
3901
  }
3077
3902
  }
3078
3903
 
3904
+ declare namespace BowmarkProvider_bennington {
3905
+ // ── Bennington Marine — the unit's own declarations, verbatim ──
3906
+ interface BenningtonModel {
3907
+ slug: string;
3908
+ name: string;
3909
+ url: string;
3910
+ lengthOverall: string | null;
3911
+ beam: string | null;
3912
+ specText: string;
3913
+ }
3914
+
3915
+ /**
3916
+ * Bennington's pontoon/tritoon model catalog — length, beam and standard-feature specs read
3917
+ * off each model's own page (S, SX today).
3918
+ */
3919
+ interface Unit {
3920
+ /**
3921
+ * Lists Bennington's pontoon/tritoon model series with their published length overall, beam
3922
+ * and feature specs, read off each model's own page. Pass { model: "sx" } for one model, or
3923
+ * omit args for every known model.
3924
+ */
3925
+ search(args?: { model?: string }): Promise<{ models: BenningtonModel[]; warnings: string[] }>;
3926
+ }
3927
+ }
3928
+
3079
3929
  declare namespace BowmarkProvider_bestbuy {
3080
3930
  // ── Best Buy — the unit's own declarations, verbatim ──
3081
3931
  interface bestbuyProduct {
@@ -5944,6 +6794,32 @@ interface DeckedCabSideOptionResult {
5944
6794
  }
5945
6795
  }
5946
6796
 
6797
+ declare namespace BowmarkProvider_developersopenai {
6798
+ // ── OpenAI Developer Docs — the unit's own declarations, verbatim ──
6799
+ interface DevelopersOpenaiDocPage {
6800
+ path: string;
6801
+ title: string;
6802
+ canonicalUrl: string;
6803
+ body: string;
6804
+ }
6805
+
6806
+ /**
6807
+ * OpenAI's own developer documentation site. getDocPage reads one docs page (title, canonical
6808
+ * URL, full article text) by path — e.g. /api/docs/mcp for the remote MCP server / OAuth
6809
+ * connector guide.
6810
+ */
6811
+ interface Unit {
6812
+ /**
6813
+ * Reads one page of OpenAI's developer docs and returns its title, canonical URL and full
6814
+ * article text. Pass `path` (e.g. "/api/docs/mcp") to pick a page; omitting it defaults to
6815
+ * "/api/docs/mcp" — the guide for building a remote MCP server, connecting it to ChatGPT/the
6816
+ * API, and its OAuth-based auth section (see the "Handle authentication" and "Connect in
6817
+ * ChatGPT" sections of the returned body).
6818
+ */
6819
+ getDocPage(args?: object): Promise<DevelopersOpenaiDocPage>;
6820
+ }
6821
+ }
6822
+
5947
6823
  declare namespace BowmarkProvider_dice {
5948
6824
  // ── Dice — the unit's own declarations, verbatim ──
5949
6825
  interface DiceJobDetails {
@@ -6510,6 +7386,44 @@ interface ebayItem {
6510
7386
  }
6511
7387
  }
6512
7388
 
7389
+ declare namespace BowmarkProvider_elevenlabs {
7390
+ // ── ElevenLabs — the unit's own declarations, verbatim ──
7391
+ interface elevenlabsSynthesisResult {
7392
+ audioBase64: string;
7393
+ contentType: string;
7394
+ voiceId: string;
7395
+ }
7396
+ interface elevenlabsVoice {
7397
+ voiceId: string;
7398
+ name: string;
7399
+ requiresVerification: boolean;
7400
+ }
7401
+
7402
+ /**
7403
+ * ElevenLabs' own documented REST API (api.elevenlabs.io) — converts text into spoken audio in
7404
+ * an existing or newly-cloned voice, and clones a new voice from caller-supplied audio samples
7405
+ * (Instant Voice Cloning). Requires an ElevenLabs API key.
7406
+ */
7407
+ interface Unit {
7408
+ /**
7409
+ * Converts `text` into spoken audio via ElevenLabs' documented Text to Speech API, returning
7410
+ * it base64-encoded alongside the vendor's content type (MP3 by default). `voiceId` selects an
7411
+ * existing or previously-cloned ElevenLabs voice (default "21m00Tcm4TlvDq8ikWAM", ElevenLabs'
7412
+ * own "Rachel"); `modelId` selects the ElevenLabs model (default "eleven_multilingual_v2").
7413
+ * Requires an ElevenLabs API key — see this provider's `auth`.
7414
+ */
7415
+ synthesize(args: { text: string; voiceId?: string; modelId?: string }): Promise<elevenlabsSynthesisResult>;
7416
+
7417
+ /**
7418
+ * Creates a new ElevenLabs voice cloned from one or more caller-supplied audio sample URLs
7419
+ * (Instant Voice Cloning) — downloads each sample and uploads it to ElevenLabs' `voices/add`.
7420
+ * Returns the new voice's id, which `synthesize`'s `voiceId` then accepts. Requires an
7421
+ * ElevenLabs API key — see this provider's `auth`.
7422
+ */
7423
+ cloneVoice(args: { name: string; sampleUrls: string[]; description?: string }): Promise<elevenlabsVoice>;
7424
+ }
7425
+ }
7426
+
6513
7427
  declare namespace BowmarkProvider_embroker {
6514
7428
  // ── Embroker — the unit's own declarations, verbatim ──
6515
7429
  interface EmbrokerCoverageCatalog {
@@ -8410,10 +9324,29 @@ interface GithubListCommitsResult {
8410
9324
  commits: GithubCommit[];
8411
9325
  warnings: string[];
8412
9326
  }
9327
+ interface GithubRelease {
9328
+ tag: string;
9329
+ name: string;
9330
+ draft: boolean;
9331
+ prerelease: boolean;
9332
+ createdAt: string;
9333
+ publishedAt: string | null;
9334
+ notes: string;
9335
+ url: string;
9336
+ }
9337
+ interface GithubListReleasesOptions {
9338
+ per_page?: number;
9339
+ page?: number;
9340
+ }
9341
+ interface GithubListReleasesResult {
9342
+ releases: GithubRelease[];
9343
+ warnings: string[];
9344
+ }
8413
9345
 
8414
9346
  /**
8415
9347
  * GitHub's own REST API, keyless. Built: a public repo's commit log (sha, author, date,
8416
- * message), paged and windowed. Declared, not yet built: repo metadata (getRepo).
9348
+ * message), paged and windowed; a public repo's release history (tag, name, dates, release
9349
+ * notes text), paged. Declared, not yet built: repo metadata (getRepo).
8417
9350
  */
8418
9351
  interface Unit {
8419
9352
  /**
@@ -8428,6 +9361,19 @@ interface GithubListCommitsResult {
8428
9361
  * throw.
8429
9362
  */
8430
9363
  listCommits(owner: string, repo: string, options?: GithubListCommitsOptions): Promise<GithubListCommitsResult>;
9364
+
9365
+ /**
9366
+ * Returns a public repo's release history off GitHub's own unauthenticated REST releases
9367
+ * endpoint — each release's tag, name, draft/prerelease flags, created/published dates, its
9368
+ * release notes text (`notes`) and its own github.com URL. This is a project's own release
9369
+ * notes documentation — `listReleases("microsoft", "TypeScript")` returns the TypeScript
9370
+ * compiler's. `options.per_page` (GitHub's own 1-100 ceiling, default 30) and `options.page`
9371
+ * page through history, newest first (GitHub's own ordering). Unauthenticated calls are capped
9372
+ * at 60 requests/hour per IP, the same shared ceiling `listCommits` spends against. THROWS on
9373
+ * an unknown owner/repo (404) or a rate limit (403/429); a repo with no releases yet returns
9374
+ * `releases: []`, not a throw.
9375
+ */
9376
+ listReleases(owner: string, repo: string, options?: GithubListReleasesOptions): Promise<GithubListReleasesResult>;
8431
9377
  }
8432
9378
  }
8433
9379
 
@@ -10388,6 +11334,23 @@ interface IbuypowerBenchmark {
10388
11334
  games: Record<string, IbuypowerGameFps>; // keyed by the titles iBUYPOWER benchmarks
10389
11335
  }
10390
11336
 
11337
+ interface IbuypowerRecommendation {
11338
+ source: "prebuilt" | "configurator";
11339
+ slug: string;
11340
+ name: string;
11341
+ url: string;
11342
+ price: string | null;
11343
+ priceValue: number | null;
11344
+ timeSpyOverall: number | null; // null when the site has not benchmarked this pair
11345
+ scorePerDollar: number | null; // timeSpyOverall / priceValue — highest first
11346
+ inStock: boolean; // a configurator is always buildable to order
11347
+ }
11348
+
11349
+ interface IbuypowerRecommendArgs {
11350
+ budget_max: number; // the hard ceiling; nothing over it is returned
11351
+ use_case?: string; // accepted, does not change the ranking — see recommendGamingPc's summary
11352
+ }
11353
+
10391
11354
  /**
10392
11355
  * Gaming and workstation PCs from iBUYPOWER — the base configurators with their current
10393
11356
  * starting prices, every component option on one with its exact price difference, the RDY
@@ -10451,6 +11414,18 @@ interface IbuypowerBenchmark {
10451
11414
  * to the Time Spy score of a pair it does have.
10452
11415
  */
10453
11416
  getBenchmark(cpuBench: string, gpuBench: string): Promise<IbuypowerBenchmark | null>;
11417
+
11418
+ /**
11419
+ * Recommends buildable PCs at or under budget_max, drawn from BOTH product lines — in-stock
11420
+ * RDY prebuilts (their own listed Time Spy score) and base configurators at their stock
11421
+ * loadout (priced from getSystem, benchmarked from getBenchmark for the cheapest ~5 affordable
11422
+ * ones) — ranked by 3DMark Time Spy score per dollar, best first. `use_case` is accepted but
11423
+ * does not change the ranking: iBUYPOWER publishes only one axis of measured performance, and
11424
+ * every recommendation is already ranked on it. THROWS when nothing in stock or buildable fits
11425
+ * the budget. `warnings` names any configurator that stopped resolving mid-call; it is empty
11426
+ * on a healthy call.
11427
+ */
11428
+ recommendGamingPc(args: IbuypowerRecommendArgs): Promise<{ recommendations: IbuypowerRecommendation[]; warnings: string[] }>;
10454
11429
  }
10455
11430
  }
10456
11431
 
@@ -11635,6 +12610,42 @@ interface IsllcSearchCommunitiesResult {
11635
12610
  }
11636
12611
  }
11637
12612
 
12613
+ declare namespace BowmarkProvider_istanbulkart {
12614
+ // ── İstanbulkart — the unit's own declarations, verbatim ──
12615
+ interface IstanbulkartCardFee {
12616
+ cardTypeName: string; // the site's own Turkish label, e.g. "İstanbulkart"
12617
+ feeTRY: number | null;
12618
+ visaIssuanceFeeTRY: number | null;
12619
+ }
12620
+ interface IstanbulkartTouristPass {
12621
+ days: number; // 1, 3, 5, 7 or 15 on the table measured 2026-08-29
12622
+ priceTRY: number;
12623
+ }
12624
+
12625
+ /**
12626
+ * Istanbul public transit: İstanbulkart card purchase/personalization fees and the İstanbul
12627
+ * City Card tourist unlimited-ride pass tariffs, read from istanbulkart.istanbul's own
12628
+ * price-and-limits data.
12629
+ */
12630
+ interface Unit {
12631
+ /**
12632
+ * Reads the current İstanbulkart fee table — the purchase price of every card variant
12633
+ * (İstanbulkart, İstanbulkart Plus, the discounted/free variants, the limited-ride geç
12634
+ * tickets, SMS QR) plus each variant's personalization/visa-issuance fee, in TRY, straight off
12635
+ * istanbulkart.istanbul's own price-and-limits page.
12636
+ */
12637
+ getCardFees(): Promise<IstanbulkartCardFee[]>;
12638
+
12639
+ /**
12640
+ * Reads the İstanbul City Card tariff table — the 1/3/5/7/15-day unlimited-ride visitor pass
12641
+ * prices, in TRY, straight off istanbulkart.istanbul's own price-and-limits page. This is the
12642
+ * tourist unlimited-pass answer: İstanbul City Card is the İstanbulkart variant sold
12643
+ * specifically to visitors for unlimited transit over a fixed number of days.
12644
+ */
12645
+ getTouristPassFares(): Promise<IstanbulkartTouristPass[]>;
12646
+ }
12647
+ }
12648
+
11638
12649
  declare namespace BowmarkProvider_ivoryhomes {
11639
12650
  // ── Ivory Homes — the unit's own declarations, verbatim ──
11640
12651
  // Ivory Homes' OWN shapes — not a capability contract.
@@ -12300,6 +13311,15 @@ interface KompanSparePartsDocuments {
12300
13311
  * package" PDF URL.
12301
13312
  */
12302
13313
  getSparePartsDocuments(variantId: string, purchaseDate: string): Promise<KompanSparePartsDocuments>;
13314
+
13315
+ /**
13316
+ * A single call keyed by `product_no` that reports whether a playground product has spare
13317
+ * parts listed — the same search searchProduct() runs, reshaped to a one-argument object so a
13318
+ * caller does not need to know the two-step (search, then fetch documents per variant)
13319
+ * internal shape just to ask "does this product have spare parts". `found: false` is a real
13320
+ * answer, not an error.
13321
+ */
13322
+ searchPlaygroundSpareParts(args: { product_no: string; region?: KompanRegion }): Promise<KompanSearchResult>;
12303
13323
  }
12304
13324
  }
12305
13325
 
@@ -12887,6 +13907,42 @@ interface LiquiddeathLiveCart {
12887
13907
  }
12888
13908
  }
12889
13909
 
13910
+ declare namespace BowmarkProvider_liquidspace {
13911
+ // ── LiquidSpace — the unit's own declarations, verbatim ──
13912
+ interface LiquidspaceWorkspaceRow {
13913
+ venueName: string;
13914
+ venueAddress: string;
13915
+ workspaceName: string; // e.g. "Coworking Daypass"
13916
+ scenario: string | null; // LiquidSpace's own category label, e.g. "Coworking"
13917
+ capacity: number | null;
13918
+ priceAmount: string; // e.g. "$45"
13919
+ priceAmountValue: number;
13920
+ priceDescription: string; // "/day-pass" for every row this function returns
13921
+ bookingUrl: string; // this workspace's own LiquidSpace page
13922
+ latitude: number;
13923
+ longitude: number;
13924
+ averageRating: number | null;
13925
+ ratesCount: number | null;
13926
+ }
13927
+
13928
+ /**
13929
+ * LiquidSpace's own city-listing pages — day-pass coworking pricing and availability across
13930
+ * WeWork, Industrious, Regus/Spaces and independent operators in one place, read directly from
13931
+ * the site's own embedded listing data, no browser.
13932
+ */
13933
+ interface Unit {
13934
+ /**
13935
+ * Reads LiquidSpace's own city-listing page for `state` (a US state abbreviation, e.g. "NY")
13936
+ * and `city` (e.g. "New York") and returns every workspace priced as a single-day coworking
13937
+ * pass — venue name/address, the workspace's own display name and category, price, capacity,
13938
+ * coordinates and rating, plus a direct link to book it (booking itself needs a signed-in
13939
+ * LiquidSpace account and is out of scope). Returns `[]` when the city page carries no
13940
+ * day-pass inventory today — a real, complete answer, not a failure.
13941
+ */
13942
+ search(input: { city: string; state: string }): Promise<LiquidspaceWorkspaceRow[]>;
13943
+ }
13944
+ }
13945
+
12890
13946
  declare namespace BowmarkProvider_littlewordsproject {
12891
13947
  // ── Little Words Project — the unit's own declarations, verbatim ──
12892
13948
  interface LittleWordsProjectOption {
@@ -13649,6 +14705,37 @@ interface mailchimpPlanPricing {
13649
14705
  }
13650
14706
  }
13651
14707
 
14708
+ declare namespace BowmarkProvider_marketplace_visualstudio {
14709
+ // ── Visual Studio Code Marketplace — the unit's own declarations, verbatim ──
14710
+ interface marketplaceExtensionStats {
14711
+ extensionId: string;
14712
+ displayName: string;
14713
+ publisherDisplayName: string;
14714
+ shortDescription: string;
14715
+ version: string;
14716
+ lastUpdated: string;
14717
+ installCount: number;
14718
+ averageRating: number | null;
14719
+ ratingCount: number;
14720
+ }
14721
+
14722
+ /**
14723
+ * The VS Code Marketplace — look up one extension by its publisher.name id and get its install
14724
+ * count, rating and latest version, the numbers the extension's own Marketplace page shows.
14725
+ */
14726
+ interface Unit {
14727
+ /**
14728
+ * Looks up one VS Code extension by its "publisher.name" id — the id shown in the extension's
14729
+ * own Marketplace URL (e.g. "ms-python.python" for
14730
+ * marketplace.visualstudio.com/items?itemName=ms-python.python) and in `code
14731
+ * --list-extensions` — and returns its install count, average rating, rating count, latest
14732
+ * published version and when that version last updated. Throws if the id does not match any
14733
+ * published extension.
14734
+ */
14735
+ getExtensionStats(extensionId: string): Promise<marketplaceExtensionStats>;
14736
+ }
14737
+ }
14738
+
13652
14739
  declare namespace BowmarkProvider_marriott {
13653
14740
  // ── Marriott — the unit's own declarations, verbatim ──
13654
14741
  interface MarriottHotelListing {
@@ -13801,6 +14888,39 @@ interface mcdonaldsFindStoresResult {
13801
14888
  }
13802
14889
  }
13803
14890
 
14891
+ declare namespace BowmarkProvider_mcp_registry {
14892
+ // ── MCP Registry — the unit's own declarations, verbatim ──
14893
+ interface mcpRegistryEntry {
14894
+ name: string;
14895
+ title: string | null;
14896
+ description: string;
14897
+ version: string;
14898
+ repositoryUrl: string | null;
14899
+ remoteUrl: string | null;
14900
+ status: string;
14901
+ }
14902
+
14903
+ /**
14904
+ * The official Model Context Protocol server registry — search or browse published MCP servers
14905
+ * by name, and get each one's install/connect URL.
14906
+ */
14907
+ interface Unit {
14908
+ /**
14909
+ * Lists or searches the official MCP server registry (registry.modelcontextprotocol.io) — the
14910
+ * community-run directory of published Model Context Protocol servers, the same catalogue the
14911
+ * registry's own web UI browses. `query` substring-matches the registry NAME (e.g. "weather"
14912
+ * matches `ai.smithery/smithery-ai-national-weather-service`); omit it to list the
14913
+ * newest-published entries. Each row carries the registry name, an optional title, its
14914
+ * description, its latest published version, where to install it (`repositoryUrl`) or connect
14915
+ * to it if it's hosted (`remoteUrl`), and the registry's own status (`"active"`,
14916
+ * `"deprecated"`, …). `limit` caps how many rows come back (default 30, registry maximum 100)
14917
+ * — this is a flat list, not a paged walk, since a caller asking "is there an MCP server for
14918
+ * X" wants the top matches, not the whole registry.
14919
+ */
14920
+ search(query?: string, limit?: number): Promise<mcpRegistryEntry[]>;
14921
+ }
14922
+ }
14923
+
13804
14924
  declare namespace BowmarkProvider_medicalguardian {
13805
14925
  // ── Medical Guardian — the unit's own declarations, verbatim ──
13806
14926
  // Medical Guardian's OWN shapes — not a capability contract.
@@ -14576,6 +15696,57 @@ interface medicareGetPlanQuery {
14576
15696
  }
14577
15697
  }
14578
15698
 
15699
+ declare namespace BowmarkProvider_mergify {
15700
+ // ── Mergify — the unit's own declarations, verbatim ──
15701
+ interface mergifyBatch {
15702
+ id: string;
15703
+ name: string;
15704
+ statusCode: string;
15705
+ batchFilledSlots: number | null;
15706
+ maxBatchSlots: number | null;
15707
+ retries: number;
15708
+ maxRetries: number;
15709
+ startedAt: string | null;
15710
+ estimatedMergeAt: string | null;
15711
+ estimatedCiFinishAt: string | null;
15712
+ ciFinishedAt: string | null;
15713
+ queueRuleName: string;
15714
+ checksPassed: number;
15715
+ checksTotal: number;
15716
+ pullRequestNumbers: number[];
15717
+ }
15718
+ interface mergifyQueuedPull {
15719
+ number: number;
15720
+ title: string;
15721
+ url: string;
15722
+ author: string | null;
15723
+ queuedAt: string;
15724
+ priorityRuleName: string | null;
15725
+ estimatedMergeAt: string | null;
15726
+ }
15727
+ interface mergifyQueueStatus {
15728
+ batches: mergifyBatch[];
15729
+ waitingPullRequests: mergifyQueuedPull[];
15730
+ paused: boolean;
15731
+ pauseReason: string | null;
15732
+ }
15733
+
15734
+ /**
15735
+ * Mergify's own documented REST API (api.mergify.com) — the live state of a repo's merge
15736
+ * queue: active batches, their checks and estimated merge times, and every pull request still
15737
+ * waiting to be batched.
15738
+ */
15739
+ interface Unit {
15740
+ /**
15741
+ * The live state of a repo's Mergify merge queue via Mergify's documented REST API — every
15742
+ * active batch (status, checks-passed count, estimated merge/CI-finish times, and its pull
15743
+ * requests), every pull request still waiting to be batched, and whether the queue is paused.
15744
+ * Requires a Mergify Application Key or a GitHub token — see this provider's `auth`.
15745
+ */
15746
+ queueStatus(args: { owner: string; repo: string }): Promise<mergifyQueueStatus>;
15747
+ }
15748
+ }
15749
+
14579
15750
  declare namespace BowmarkProvider_microcenter {
14580
15751
  // ── Micro Center — the unit's own declarations, verbatim ──
14581
15752
  // Micro Center's OWN row shape — not the `pcparts` capability contract.
@@ -14692,6 +15863,37 @@ interface StoreShelfRoster {
14692
15863
  }
14693
15864
  }
14694
15865
 
15866
+ declare namespace BowmarkProvider_minimax {
15867
+ // ── MiniMax — the unit's own declarations, verbatim ──
15868
+ interface MinimaxDocIndexEntry {
15869
+ title: string;
15870
+ url: string;
15871
+ description: string | null;
15872
+ }
15873
+
15874
+ interface MinimaxDocPage {
15875
+ title: string;
15876
+ url: string;
15877
+ description: string | null;
15878
+ content: string;
15879
+ }
15880
+
15881
+ /**
15882
+ * MiniMax's own developer docs (platform.minimax.io) — resolves a topic against the site's own
15883
+ * machine-readable docs index and returns that page's title, url and full Markdown body.
15884
+ */
15885
+ interface Unit {
15886
+ /**
15887
+ * Reads MiniMax's own developer documentation (platform.minimax.io). topic is a free-text
15888
+ * description of what you want, e.g. "text generation", "voice clone", "mcp guide" or "prompt
15889
+ * caching" — it is matched against the site's own docs index (title and url), and the matched
15890
+ * page's full Markdown body is returned. Throws naming real page titles when nothing matches
15891
+ * closely enough.
15892
+ */
15893
+ getDocs(topic: string): Promise<MinimaxDocPage>;
15894
+ }
15895
+ }
15896
+
14695
15897
  declare namespace BowmarkProvider_minted {
14696
15898
  // ── Minted — the unit's own declarations, verbatim ──
14697
15899
  // Minted's OWN shapes — not a capability contract.
@@ -15109,6 +16311,46 @@ interface MossyoakCheckoutLink {
15109
16311
  * available — the error names the candidate or in-stock options so the caller can retry.
15110
16312
  */
15111
16313
  getMossyoakCheckoutLink(handle: string, variantTitleOrOptions: string, opts?: { quantity?: number }): Promise<MossyoakCheckoutLink>;
16314
+
16315
+ /**
16316
+ * Reads the same live catalogue listMossyoakProducts does and filters it by product type
16317
+ * ("vest", "jacket", …, matched case-insensitively against each product's own productType)
16318
+ * before applying the limit — so a caller asking for one category does not have to fetch and
16319
+ * filter the whole storefront themselves. In-stock products first, then by handle. `warnings`
16320
+ * names it when the requested productType matched nothing.
16321
+ */
16322
+ searchProducts(opts?: { productType?: string; limit?: number }): Promise<MossyoakCatalogue>;
16323
+ }
16324
+ }
16325
+
16326
+ declare namespace BowmarkProvider_muze_gov_tr {
16327
+ // ── muze.gov.tr — Turkey Ministry of Culture and Tourism museums portal — the unit's own declarations, verbatim ──
16328
+ interface MuzeVisitingHours {
16329
+ name: string;
16330
+ openingTime: string | null; // "HH:MM"
16331
+ closingTime: string | null; // "HH:MM"
16332
+ ticketOfficeClosingTime: string | null; // "HH:MM" — often earlier than closingTime
16333
+ closedDays: string | null; // the site's own Turkish wording, e.g. "Her gün açık"
16334
+ address: string | null;
16335
+ phone: string | null;
16336
+ email: string | null;
16337
+ url: string;
16338
+ }
16339
+
16340
+ /**
16341
+ * Turkey's Ministry of Culture and Tourism museums portal — opening/closing hours,
16342
+ * ticket-office closing time and closed days for the museums and archaeological sites it
16343
+ * publishes (İstanbul Archaeological Museums, Hagia Sophia History and Experience Museum,
16344
+ * Galata Tower Museum among them), read straight off the site's own listing and detail pages.
16345
+ */
16346
+ interface Unit {
16347
+ /**
16348
+ * Matches `query` against muze.gov.tr's own museum-highlight listing (a substring match on the
16349
+ * site's own display name, e.g. "Galata Tower" or "Hagia Sophia") and reads that museum's
16350
+ * opening/closing hours, ticket-office closing time and closed days straight off its detail
16351
+ * page.
16352
+ */
16353
+ getVisitingHours(query: string): Promise<MuzeVisitingHours>;
15112
16354
  }
15113
16355
  }
15114
16356
 
@@ -15628,6 +16870,14 @@ interface NvisioncentersSavingsResult {
15628
16870
  calculatorUrl: string;
15629
16871
  }
15630
16872
 
16873
+ interface NvisioncentersEstimateSavingsInput {
16874
+ age: number;
16875
+ glasses: number;
16876
+ glasses_cost: number;
16877
+ contacts: number;
16878
+ contacts_cost: number;
16879
+ }
16880
+
15631
16881
  type NvisioncentersAgeBracket = "Under 18" | "18-34" | "35-54" | "55+";
15632
16882
 
15633
16883
  interface NvisioncentersCandidacyInput {
@@ -15664,6 +16914,13 @@ interface NvisioncentersCandidacyResult {
15664
16914
  * and prior-consultation history but its logic never uses either).
15665
16915
  */
15666
16916
  checkLasikCandidacy(input: NvisioncentersCandidacyInput): Promise<NvisioncentersCandidacyResult>;
16917
+
16918
+ /**
16919
+ * Same calculation as calculateLasikSavings, taking the snake_case argument spelling
16920
+ * (glasses_cost, contacts_cost) a caller guessed instead of the provider's camelCase — an
16921
+ * alias, not a second calculator. Throws under the same condition calculateLasikSavings does.
16922
+ */
16923
+ estimateLasikSavings(input: NvisioncentersEstimateSavingsInput): Promise<NvisioncentersSavingsResult>;
15667
16924
  }
15668
16925
  }
15669
16926
 
@@ -16523,6 +17780,35 @@ interface PizzahutDealsForRender {
16523
17780
  }
16524
17781
  }
16525
17782
 
17783
+ declare namespace BowmarkProvider_poshmark {
17784
+ // ── Poshmark — the unit's own declarations, verbatim ──
17785
+ interface PoshmarkSupportArticle {
17786
+ url: string;
17787
+ text: string;
17788
+ }
17789
+
17790
+ /**
17791
+ * Poshmark's own support-center documentation (support.poshmark.com) for Bulk Upload — the
17792
+ * CSV/template format and the zip-of-photos requirements for sellers listing many items at
17793
+ * once.
17794
+ */
17795
+ interface Unit {
17796
+ /**
17797
+ * Reads Poshmark's own 'How to use Bulk Upload Templates' support article — required columns,
17798
+ * SKU rules, the .csv file requirement, Excel-version caveats — straight off
17799
+ * support.poshmark.com.
17800
+ */
17801
+ getBulkUploadTemplateGuide(): Promise<PoshmarkSupportArticle>;
17802
+
17803
+ /**
17804
+ * Reads Poshmark's own 'How to create a Zip file for Bulk Upload' support article — how to zip
17805
+ * listing photos on Windows/Mac and which image types Bulk Upload accepts — straight off
17806
+ * support.poshmark.com.
17807
+ */
17808
+ getZipFileGuide(): Promise<PoshmarkSupportArticle>;
17809
+ }
17810
+ }
17811
+
16526
17812
  declare namespace BowmarkProvider_positivegrid {
16527
17813
  // ── Positive Grid — the unit's own declarations, verbatim ──
16528
17814
  interface positivegridFindRetailersArgs {
@@ -17356,6 +18642,45 @@ interface ContainerRecipeDetails {
17356
18642
  }
17357
18643
  }
17358
18644
 
18645
+ declare namespace BowmarkProvider_proxmox {
18646
+ // ── Proxmox — the unit's own declarations, verbatim ──
18647
+ type ProxmoxProductSlug =
18648
+ | "proxmox-virtual-environment"
18649
+ | "proxmox-backup-server"
18650
+ | "proxmox-mail-gateway"
18651
+ | "proxmox-datacenter-manager";
18652
+
18653
+ interface ProxmoxIsoDownload {
18654
+ product: ProxmoxProductSlug;
18655
+ productName: string;
18656
+ title: string;
18657
+ version: string;
18658
+ fileSizeText: string;
18659
+ lastUpdated: string;
18660
+ sha256: string | null;
18661
+ downloadUrl: string;
18662
+ torrentUrl: string | null;
18663
+ pageUrl: string;
18664
+ }
18665
+
18666
+ /**
18667
+ * Open-source virtualization/backup/mail-security vendor. getIsoDownloads is live — the
18668
+ * current ISO installer(s) for any or all of Proxmox VE, Proxmox Backup Server, Proxmox Mail
18669
+ * Gateway and Proxmox Datacenter Manager, straight off proxmox.com's own downloads pages:
18670
+ * version, file size, last-updated date, SHA256 checksum, and the real enterprise.proxmox.com
18671
+ * download/torrent URLs.
18672
+ */
18673
+ interface Unit {
18674
+ /**
18675
+ * Gets the current ISO installer download(s) for one Proxmox product, or for all four when
18676
+ * `product` is omitted. Proxmox VE's own downloads page additionally lists its current arm64
18677
+ * build and three prior major versions (8.4-1, 7.4-1, 6.4-1) alongside the current amd64
18678
+ * release — every card the site publishes comes back, not just the newest one.
18679
+ */
18680
+ getIsoDownloads(product?: "proxmox-virtual-environment" | "proxmox-backup-server" | "proxmox-mail-gateway" | "proxmox-datacenter-manager"): Promise<ProxmoxIsoDownload[]>;
18681
+ }
18682
+ }
18683
+
17359
18684
  declare namespace BowmarkProvider_reddit {
17360
18685
  // ── Reddit — the unit's own declarations, verbatim ──
17361
18686
  interface RedditSearchPost {
@@ -18884,6 +20209,43 @@ interface SitmeanssitNearestLocationsResult {
18884
20209
  }
18885
20210
  }
18886
20211
 
20212
+ declare namespace BowmarkProvider_sixflags {
20213
+ // ── Six Flags — the unit's own declarations, verbatim ──
20214
+ interface SixFlagsPassRow {
20215
+ id: string | null;
20216
+ guestFacingTitle: string; // e.g. "Park Ticket", "2027 Gold Pass"
20217
+ subtitle: string | null;
20218
+ beforePriceText: string | null; // e.g. "Starting From", "Only"
20219
+ currentPrice: string; // the site's raw text, e.g. "$$55"
20220
+ currentPriceModifier: string | null; // e.g. "/ea*", "per night"
20221
+ strikethroughPrice: string | null; // the struck-through "was" price
20222
+ buyUrl: string | null;
20223
+ }
20224
+ interface SixFlagsTicketsResult {
20225
+ parkSlug: string;
20226
+ parkTitle: string;
20227
+ groupLabel: string; // e.g. "Daily Tickets"
20228
+ passes: SixFlagsPassRow[];
20229
+ }
20230
+
20231
+ /**
20232
+ * Reads a Six Flags/Cedar Fair park's own daily-tickets page — every park in the merged
20233
+ * portfolio (Six Flags Magic Mountain, Cedar Point, Kings Island, Knott's Berry Farm,
20234
+ * Carowinds and ~30 more) runs on one shared site — and returns its current ticket/pass cards
20235
+ * straight out of the page's own server-rendered data, no browser.
20236
+ */
20237
+ interface Unit {
20238
+ /**
20239
+ * Reads a Six Flags/Cedar Fair park's own daily-tickets page by its sixflags.com URL slug
20240
+ * (e.g. `"cedarpoint"`, `"greatadventure"`, `"magicmountain"`, `"knotts"`) and returns its
20241
+ * ticket/pass cards exactly as published today — title, subtitle, raw price text (the site
20242
+ * renders it as `"$$55"`, i.e. `"$" + "$55"`), any "was" price, and a buy/learn-more link.
20243
+ * Throws if the slug does not resolve to a real park page on the site.
20244
+ */
20245
+ getTickets(park: string): Promise<SixFlagsTicketsResult>;
20246
+ }
20247
+ }
20248
+
18887
20249
  declare namespace BowmarkProvider_smartsign {
18888
20250
  // ── SmartSign — the unit's own declarations, verbatim ──
18889
20251
  interface SmartsignSearchResult {
@@ -18960,6 +20322,60 @@ interface SmartwoolSockFinderResult {
18960
20322
  }
18961
20323
  }
18962
20324
 
20325
+ declare namespace BowmarkProvider_smithery {
20326
+ // ── Smithery — the unit's own declarations, verbatim ──
20327
+ interface SmitheryServer {
20328
+ id: string;
20329
+ qualifiedName: string;
20330
+ namespace: string | null;
20331
+ slug: string | null;
20332
+ displayName: string;
20333
+ description: string;
20334
+ iconUrl: string | null;
20335
+ verified: boolean;
20336
+ useCount: number;
20337
+ remote: boolean | null;
20338
+ isDeployed: boolean;
20339
+ createdAt: string;
20340
+ homepage: string;
20341
+ bySmithery: boolean;
20342
+ owner: string | null;
20343
+ score: number | null;
20344
+ }
20345
+ interface SmitherySearchOptions {
20346
+ page?: number;
20347
+ pageSize?: number;
20348
+ verified?: boolean;
20349
+ remote?: boolean;
20350
+ isDeployed?: boolean;
20351
+ namespace?: string;
20352
+ }
20353
+ interface SmitherySearchResult {
20354
+ servers: SmitheryServer[];
20355
+ pagination: { currentPage: number; pageSize: number; totalPages: number; totalCount: number };
20356
+ warnings: string[];
20357
+ }
20358
+
20359
+ /**
20360
+ * Smithery's own registry REST API, keyless. Built: full-text/semantic search over listed MCP
20361
+ * servers, returning each server's qualified name, description, verification status, deploy
20362
+ * status and use count.
20363
+ */
20364
+ interface Unit {
20365
+ /**
20366
+ * Full-text/semantic search over Smithery's public MCP server registry. Pass a qualified name
20367
+ * (e.g. "lama/demo-mcp"), a slug, or a keyword as `query` — a known qualified name resolves as
20368
+ * the top hit. Each returned server carries `verified` (Smithery's own verification badge),
20369
+ * `isDeployed`, `useCount`, `homepage` and `description`.
20370
+ * `options.verified`/`options.remote`/`options.isDeployed`/`options.namespace` filter the
20371
+ * search; `options.page`/`options.pageSize` page through results (Smithery's own default 10,
20372
+ * max 100 per page). THROWS on a non-2xx response (e.g. rate limiting); an empty `servers`
20373
+ * array is a legitimate answer for a query that matches nothing, not a throw.
20374
+ */
20375
+ search(query: string, options?: SmitherySearchOptions): Promise<SmitherySearchResult>;
20376
+ }
20377
+ }
20378
+
18963
20379
  declare namespace BowmarkProvider_solostove {
18964
20380
  // ── Solo Stove — the unit's own declarations, verbatim ──
18965
20381
  interface SolostoveBundleComponent {
@@ -19780,13 +21196,13 @@ interface tamarackidahoUnit {
19780
21196
  /**
19781
21197
  * Searches Tamarack Resort's own direct-managed lodging (the Lodge at Osprey Meadows, the
19782
21198
  * Village at Tamarack Resort, and Tamarack Homes and Cottages — not the golf tee-time flow, a
19783
- * different vendor) for a stay and party size. `arrivalDate`/`departureDate` are "MM/DD/YYYY"
19784
- * strings (the widget's own format), `adultCount` is required and positive, `childCount`
19785
- * defaults to 0. Returns every unit type Tamarack's own booking engine (Inntopia RTP)
19786
- * currently prices as AVAILABLE for that exact query — each with its supplier (property), unit
19787
- * name, and `totalPrice` in USD for the whole queried stay (not nightly) — genuinely computed
19788
- * per call, not a cached listing. An empty `units` array is a real answer: Tamarack has
19789
- * nothing available for that stay, not a failure.
21199
+ * different vendor) for a stay and party size. `arrivalDate`/`departureDate` are "YYYY-MM-DD"
21200
+ * strings (the site's own "MM/DD/YYYY" is accepted as well and echoed back unchanged),
21201
+ * `adultCount` is required and positive, `childCount` defaults to 0. Returns every unit type
21202
+ * Tamarack's own booking engine (Inntopia RTP) currently prices as AVAILABLE for that exact
21203
+ * query — each with its supplier (property), unit name, and `totalPrice` in USD for the whole
21204
+ * queried stay (not nightly) — genuinely computed per call, not a cached listing. An empty
21205
+ * `units` array is a real answer: Tamarack has nothing available for that stay, not a failure.
19790
21206
  */
19791
21207
  searchLodging(args: tamarackidahoSearchArgs): Promise<tamarackidahoSearchResult>;
19792
21208
  }
@@ -21308,25 +22724,28 @@ interface upsRatedShipment {
21308
22724
  declare namespace BowmarkProvider_usps {
21309
22725
  // ── USPS — the unit's own declarations, verbatim ──
21310
22726
  interface uspsRateOption {
21311
- sku: string;
22727
+ postageServiceId: number;
21312
22728
  description: string;
21313
- mailClass: string;
21314
22729
  price: number;
21315
- zone: string | null;
22730
+ commercialPrice: number | null;
22731
+ deliveryDay: string | null;
22732
+ flatRateBox: string | null;
21316
22733
  }
21317
22734
 
21318
22735
  /**
21319
- * USPS's own documented Domestic Prices v3 API (apis.usps.com) — prices a domestic package
21320
- * across USPS's Mail Classes for a ZIP-to-ZIP move, weight and optional dimensions, the same
21321
- * base-rate calculation usps.com's own postage calculator runs. No browser, no scraping.
22736
+ * USPS's own Retail Postage Price Calculator (postcalc.usps.com) — prices a domestic package
22737
+ * across every USPS Mail Service that quotes it for a ZIP-to-ZIP move, weight and optional
22738
+ * dimensions, and returns the counter price, the discounted Click-N-Ship price and USPS's own
22739
+ * delivery-commitment date. One keyless GET to the calculator's own JSON endpoint. No key, no
22740
+ * browser.
21322
22741
  */
21323
22742
  interface Unit {
21324
22743
  /**
21325
- * Prices a domestic package across every USPS Mail Class that quotes it, between two 5-digit
22744
+ * Prices a domestic package across every USPS Mail Service that quotes it, between two 5-digit
21326
22745
  * ZIP Codes, for a weight in ounces and optional length/width/height in inches (all three or
21327
- * none). Returns USPS's own base retail price per option the postage calculator's own
21328
- * numbers, not an estimate. Requires a USPS OAuth2 client-credentials token see this
21329
- * provider's `auth`.
22746
+ * none). Returns USPS's own retail counter price, its discounted Click-N-Ship price where one
22747
+ * exists, and its delivery-commitment date the Retail Postage Price Calculator's own
22748
+ * numbers. Needs no API key.
21330
22749
  */
21331
22750
  getRate(args: { fromZip: string; toZip: string; weightOz: number; length?: number; width?: number; height?: number }): Promise<uspsRateOption[]>;
21332
22751
  }
@@ -21544,20 +22963,21 @@ interface VillagerealtyobxQuote {
21544
22963
  * Searches Village Realty's own 900+ Outer Banks rental listings the way
21545
22964
  * villagerealtyobx.com/outer-banks-vacation-rentals does — filter by town (e.g. "Corolla",
21546
22965
  * "Nags Head"), exact bedroom count, amenities (e.g. "Private Pool", "Elevator"), and
21547
- * optionally a date range — returning each matching property's id, name, town, address,
21548
- * bedroom count, max guests and detail-page URL. Call getQuote with a result's propertyID for
21549
- * a real priced quote.
22966
+ * optionally a date range (`checkin`/`checkout` as `YYYY-MM-DD`) — returning each matching
22967
+ * property's id, name, town, address, bedroom count, max guests and detail-page URL. Call
22968
+ * getQuote with a result's propertyID for a real priced quote.
21550
22969
  */
21551
22970
  searchRentals(args?: { town?: string, bedrooms?: number, amenities?: string[], checkin?: string, checkout?: string, page?: number }): Promise<VillagerealtyobxListing[]>;
21552
22971
 
21553
22972
  /**
21554
22973
  * Gets a real-time price quote for one Village Realty property and date range — the exact
21555
22974
  * server-computed rent, taxes and total the rental detail page shows after picking dates, plus
21556
- * the book-now URL. `checkin`/`checkout` are `MM/DD/YYYY`. `available: false` is a genuine
21557
- * site answer (e.g. the dates fail the property's minimum-night-stay rule), not an error
21558
- * this is the flow ChatGPT itself cannot operate today: asked to price a Village Realty stay
21559
- * it answers "I can't complete the booking or take payment for you" and recommends competitor
21560
- * sites instead of quoting Village Realty's own live price.
22975
+ * the book-now URL. `checkin`/`checkout` are `YYYY-MM-DD` (the site's own `MM/DD/YYYY` is
22976
+ * accepted too, and whichever you pass is echoed back unchanged). `available: false` is a
22977
+ * genuine site answer (e.g. the dates fail the property's minimum-night-stay rule), not an
22978
+ * error this is the flow ChatGPT itself cannot operate today: asked to price a Village
22979
+ * Realty stay it answers "I can't complete the booking or take payment for you" and recommends
22980
+ * competitor sites instead of quoting Village Realty's own live price.
21561
22981
  */
21562
22982
  getQuote(args: { propertyID: string, checkin: string, checkout: string }): Promise<VillagerealtyobxQuote>;
21563
22983
  }
@@ -23253,6 +24673,7 @@ interface BowmarkProviders {
23253
24673
  abercrombie: BowmarkProvider_abercrombie.Unit;
23254
24674
  aiper: BowmarkProvider_aiper.Unit;
23255
24675
  ajmadison: BowmarkProvider_ajmadison.Unit;
24676
+ alphavantage: BowmarkProvider_alphavantage.Unit;
23256
24677
  americanstandard: BowmarkProvider_americanstandard.Unit;
23257
24678
  amramp: BowmarkProvider_amramp.Unit;
23258
24679
  ancientnutrition: BowmarkProvider_ancientnutrition.Unit;
@@ -23270,7 +24691,9 @@ interface BowmarkProviders {
23270
24691
  azure: BowmarkProvider_azure.Unit;
23271
24692
  barletta: BowmarkProvider_barletta.Unit;
23272
24693
  baublebar: BowmarkProvider_baublebar.Unit;
24694
+ bcparkscamping: BowmarkProvider_bcparkscamping.Unit;
23273
24695
  beatthebomb: BowmarkProvider_beatthebomb.Unit;
24696
+ bennington: BowmarkProvider_bennington.Unit;
23274
24697
  bestbuy: BowmarkProvider_bestbuy.Unit;
23275
24698
  bhphoto: BowmarkProvider_bhphoto.Unit;
23276
24699
  bigjoeforklifts: BowmarkProvider_bigjoeforklifts.Unit;
@@ -23310,12 +24733,14 @@ interface BowmarkProviders {
23310
24733
  davidsonhomes: BowmarkProvider_davidsonhomes.Unit;
23311
24734
  deangroup: BowmarkProvider_deangroup.Unit;
23312
24735
  decked: BowmarkProvider_decked.Unit;
24736
+ developersopenai: BowmarkProvider_developersopenai.Unit;
23313
24737
  dice: BowmarkProvider_dice.Unit;
23314
24738
  dickssportinggoods: BowmarkProvider_dickssportinggoods.Unit;
23315
24739
  dillards: BowmarkProvider_dillards.Unit;
23316
24740
  discounttire: BowmarkProvider_discounttire.Unit;
23317
24741
  disney: BowmarkProvider_disney.Unit;
23318
24742
  ebay: BowmarkProvider_ebay.Unit;
24743
+ elevenlabs: BowmarkProvider_elevenlabs.Unit;
23319
24744
  embroker: BowmarkProvider_embroker.Unit;
23320
24745
  eq3: BowmarkProvider_eq3.Unit;
23321
24746
  erieinsurance: BowmarkProvider_erieinsurance.Unit;
@@ -23363,6 +24788,7 @@ interface BowmarkProviders {
23363
24788
  interiordefine: BowmarkProvider_interiordefine.Unit;
23364
24789
  iproyal: BowmarkProvider_iproyal.Unit;
23365
24790
  islllc: BowmarkProvider_islllc.Unit;
24791
+ istanbulkart: BowmarkProvider_istanbulkart.Unit;
23366
24792
  ivoryhomes: BowmarkProvider_ivoryhomes.Unit;
23367
24793
  jennikayne: BowmarkProvider_jennikayne.Unit;
23368
24794
  joybird: BowmarkProvider_joybird.Unit;
@@ -23380,6 +24806,7 @@ interface BowmarkProviders {
23380
24806
  legacyhomesal: BowmarkProvider_legacyhomesal.Unit;
23381
24807
  linkedin: BowmarkProvider_linkedin.Unit;
23382
24808
  liquiddeath: BowmarkProvider_liquiddeath.Unit;
24809
+ liquidspace: BowmarkProvider_liquidspace.Unit;
23383
24810
  littlewordsproject: BowmarkProvider_littlewordsproject.Unit;
23384
24811
  lonelyplanet: BowmarkProvider_lonelyplanet.Unit;
23385
24812
  louvershop: BowmarkProvider_louvershop.Unit;
@@ -23388,16 +24815,21 @@ interface BowmarkProviders {
23388
24815
  lululemon: BowmarkProvider_lululemon.Unit;
23389
24816
  maidenhome: BowmarkProvider_maidenhome.Unit;
23390
24817
  mailchimp: BowmarkProvider_mailchimp.Unit;
24818
+ marketplace_visualstudio: BowmarkProvider_marketplace_visualstudio.Unit;
23391
24819
  marriott: BowmarkProvider_marriott.Unit;
23392
24820
  mcdonalds: BowmarkProvider_mcdonalds.Unit;
24821
+ mcp_registry: BowmarkProvider_mcp_registry.Unit;
23393
24822
  medicalguardian: BowmarkProvider_medicalguardian.Unit;
23394
24823
  medicare: BowmarkProvider_medicare.Unit;
24824
+ mergify: BowmarkProvider_mergify.Unit;
23395
24825
  microcenter: BowmarkProvider_microcenter.Unit;
24826
+ minimax: BowmarkProvider_minimax.Unit;
23396
24827
  minted: BowmarkProvider_minted.Unit;
23397
24828
  mixbook: BowmarkProvider_mixbook.Unit;
23398
24829
  modularclosets: BowmarkProvider_modularclosets.Unit;
23399
24830
  momondo: BowmarkProvider_momondo.Unit;
23400
24831
  mossyoak: BowmarkProvider_mossyoak.Unit;
24832
+ muze_gov_tr: BowmarkProvider_muze_gov_tr.Unit;
23401
24833
  naic: BowmarkProvider_naic.Unit;
23402
24834
  namecheap: BowmarkProvider_namecheap.Unit;
23403
24835
  nationalbusinessfurniture: BowmarkProvider_nationalbusinessfurniture.Unit;
@@ -23414,11 +24846,13 @@ interface BowmarkProviders {
23414
24846
  perennialsandsutherland: BowmarkProvider_perennialsandsutherland.Unit;
23415
24847
  pirateship: BowmarkProvider_pirateship.Unit;
23416
24848
  pizzahut: BowmarkProvider_pizzahut.Unit;
24849
+ poshmark: BowmarkProvider_poshmark.Unit;
23417
24850
  positivegrid: BowmarkProvider_positivegrid.Unit;
23418
24851
  premierbuildings: BowmarkProvider_premierbuildings.Unit;
23419
24852
  progressive: BowmarkProvider_progressive.Unit;
23420
24853
  prose: BowmarkProvider_prose.Unit;
23421
24854
  provenwinners: BowmarkProvider_provenwinners.Unit;
24855
+ proxmox: BowmarkProvider_proxmox.Unit;
23422
24856
  reddit: BowmarkProvider_reddit.Unit;
23423
24857
  reliancepartners: BowmarkProvider_reliancepartners.Unit;
23424
24858
  resy: BowmarkProvider_resy.Unit;
@@ -23439,8 +24873,10 @@ interface BowmarkProviders {
23439
24873
  sellcell: BowmarkProvider_sellcell.Unit;
23440
24874
  semihandmade: BowmarkProvider_semihandmade.Unit;
23441
24875
  sitmeanssit: BowmarkProvider_sitmeanssit.Unit;
24876
+ sixflags: BowmarkProvider_sixflags.Unit;
23442
24877
  smartsign: BowmarkProvider_smartsign.Unit;
23443
24878
  smartwool: BowmarkProvider_smartwool.Unit;
24879
+ smithery: BowmarkProvider_smithery.Unit;
23444
24880
  solostove: BowmarkProvider_solostove.Unit;
23445
24881
  soundcloud: BowmarkProvider_soundcloud.Unit;
23446
24882
  starlighthomes: BowmarkProvider_starlighthomes.Unit;
@@ -75209,15 +76645,26 @@ interface BowmarkProviders {
75209
76645
  * `run()` script, and the Proxy over HTTP in a caller's own process. They are
75210
76646
  * generated once precisely so those two cannot drift. */
75211
76647
  interface BowmarkLibrary {
76648
+ cable_railing_quote: BowmarkCapability_cable_railing_quote.Unit;
75212
76649
  cars: BowmarkCapability_cars.Unit;
76650
+ coworking: BowmarkCapability_coworking.Unit;
76651
+ custom_sofa_configurator: BowmarkCapability_custom_sofa_configurator.Unit;
76652
+ developer_api_key_signup: BowmarkCapability_developer_api_key_signup.Unit;
76653
+ domain: BowmarkCapability_domain.Unit;
75213
76654
  email: BowmarkCapability_email.Unit;
75214
76655
  flights: BowmarkCapability_flights.Unit;
76656
+ game_soundtrack_composer_credits: BowmarkCapability_game_soundtrack_composer_credits.Unit;
75215
76657
  git_commit_history: BowmarkCapability_git_commit_history.Unit;
76658
+ git_release_notes: BowmarkCapability_git_release_notes.Unit;
75216
76659
  hotels: BowmarkCapability_hotels.Unit;
75217
76660
  hvac: BowmarkCapability_hvac.Unit;
75218
76661
  insurance: BowmarkCapability_insurance.Unit;
76662
+ istanbul_schedules: BowmarkCapability_istanbul_schedules.Unit;
76663
+ mcp_registry: BowmarkCapability_mcp_registry.Unit;
75219
76664
  music: BowmarkCapability_music.Unit;
75220
76665
  pcparts: BowmarkCapability_pcparts.Unit;
76666
+ phone_trade_in: BowmarkCapability_phone_trade_in.Unit;
76667
+ pricing: BowmarkCapability_pricing.Unit;
75221
76668
  products: BowmarkCapability_products.Unit;
75222
76669
  promocodes: BowmarkCapability_promocodes.Unit;
75223
76670
  read: BowmarkCapability_read.Unit;
@@ -75226,6 +76673,9 @@ interface BowmarkLibrary {
75226
76673
  sheds: BowmarkCapability_sheds.Unit;
75227
76674
  shipping: BowmarkCapability_shipping.Unit;
75228
76675
  tariff: BowmarkCapability_tariff.Unit;
76676
+ text_to_speech: BowmarkCapability_text_to_speech.Unit;
76677
+ theme_park_tickets: BowmarkCapability_theme_park_tickets.Unit;
75229
76678
  weather: BowmarkCapability_weather.Unit;
76679
+ yoga_outfit_shopping: BowmarkCapability_yoga_outfit_shopping.Unit;
75230
76680
  providers: BowmarkProviders;
75231
76681
  }