@bowmark/web 1.18.0 → 1.20.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: 12940343b1f8c9228a6b145e3e5125fe143419901694198fcc8789af04b5dc2e
9
- // 45 capabilities, 367 providers, 913 typed functions, 20 refused.
8
+ // Manifest version: f9bdccf83883a14360d78c1b4f364bcb1ed422bd4bc56bd1b722b7a00105291c
9
+ // 46 capabilities, 401 providers, 978 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
@@ -2182,6 +2182,32 @@ type CallOptions = {
2182
2182
  }
2183
2183
  }
2184
2184
 
2185
+ declare namespace BowmarkCapability_script_execution {
2186
+ // ── How to write and run a script against the Bowmark library — the unit's own declarations, verbatim ──
2187
+
2188
+ interface ScriptExecutionGuide {
2189
+ loop: string[]
2190
+ language: string[]
2191
+ globals: string[]
2192
+ statuses: Record<string, string>
2193
+ warnings: string[]
2194
+ }
2195
+
2196
+ /**
2197
+ * Explains the get_library -> write script -> run loop, the sandbox's language rules, its
2198
+ * ambient globals, and what each run status means — a static reference, not a site wrapper.
2199
+ */
2200
+ interface Unit {
2201
+ /**
2202
+ * Returns the loop for doing a task (get_library, then a script, then run), the sandbox's
2203
+ * language rules and ambient globals, and what each run envelope status
2204
+ * (ok/partial/error/needs_user) means. Static and deterministic — it describes the platform
2205
+ * itself, not any one site.
2206
+ */
2207
+ guide(): Promise<ScriptExecutionGuide>;
2208
+ }
2209
+ }
2210
+
2185
2211
  declare namespace BowmarkCapability_search {
2186
2212
  // ── Web search — the unit's own declarations, verbatim ──
2187
2213
  type SearchResult = {
@@ -2228,18 +2254,50 @@ type CallOptions = {
2228
2254
  * news coverage, with real publication dates and the outlet's name. ONE ENGINE TODAY (Bing),
2229
2255
  * so if it is down this fails rather than degrading — it throws, and never reports an outage
2230
2256
  * as zero results. Two things that engine cannot do, measured on `web`: it never returns an
2231
- * empty list even when nothing matches, and it ignores search operators like site:.
2257
+ * empty list even when nothing matches including for a long-tail query it has nothing
2258
+ * confident to say about, e.g. an obscure company name plus "pricing" — and it ignores search
2259
+ * operators like site:. `warnings` now flags the extreme case of the first — every returned
2260
+ * row sharing not one word with the query, or every row matching only a generic word like
2261
+ * "pricing" while the name you searched for is absent from all of them — but a
2262
+ * partially-relevant substitution is not caught. A THIRD limit, measured 2026-09-11 and the
2263
+ * one that hits ordinary research: it answers a MULTI-WORD query by reducing it to the single
2264
+ * most popular word in it and returning that word's results — "React useEffect dependency
2265
+ * array" comes back as React's homepage — and quoting, shortening or site-scoping the query
2266
+ * does not change it. `warnings` now flags four shapes. Three read the words: no returned row
2267
+ * sharing a word with the query, every row matching only a generic word like "pricing", or
2268
+ * fewer than half the query's subject words appearing anywhere in the results. The fourth asks
2269
+ * the engine the SAME query twice down the same exit — an answer that differs the second time
2270
+ * is a random decoy, because an answerable query is stable across repeats (measured
2271
+ * 2026-09-12). A merely partial substitution is still not caught. For `news`, keep queries to
2272
+ * 2–3 words: OR-joined and more-than-three-term queries are unsupported and return an empty
2273
+ * feed; short-query zeros remain ambiguous and carry a retry warning.
2232
2274
  */
2233
2275
  interface Unit {
2234
2276
  /**
2235
2277
  * Searches the web and returns ranked results — title, destination URL, snippet — from the
2236
2278
  * first engine in the chain that answers. `engine` names which one that was, and `warnings`
2237
2279
  * names any that were tried and failed first. Feed a result's `url` straight to
2238
- * bowmark.read.page to actually read it. TWO THINGS TO KNOW BEFORE YOU TRUST THE ROWS: the
2239
- * engine NEVER returns an empty list, so results are its best offer rather than proof anything
2240
- * matched, and it IGNORES operators a `site:example.com` query is not scoped to that site.
2241
- * When every engine fails this THROWS rather than returning zero rows, because no engine
2242
- * reached is not the same as nothing found.
2280
+ * bowmark.read.page to actually read it. THREE THINGS TO KNOW BEFORE YOU TRUST THE ROWS. (1)
2281
+ * The engine NEVER returns an empty list, so results are its best offer rather than proof
2282
+ * anything matched a long-tail query (an obscure company name plus "pricing", say) can come
2283
+ * back with ten confident rows about something else entirely. (2) It IGNORES operators — a
2284
+ * `site:example.com` query is not scoped to that site. (3) MEASURED 2026-09-11, AND THE ONE
2285
+ * THAT HITS ORDINARY RESEARCH: it answers a MULTI-WORD query by reducing it to the single most
2286
+ * popular word in it and returning that word's results. "React useEffect dependency array"
2287
+ * comes back as React's own homepage, and a nine-word query naming a company, a job and a
2288
+ * protocol came back as the results for the one two-letter acronym in it. Quoting the proper
2289
+ * noun, shortening the query and site-scoping it were all tried on the same queries and all
2290
+ * returned the identical substituted set, so rewriting the query does not help — search the
2291
+ * ONE thing you most need, or read a URL you already know. `warnings` flags four shapes. Three
2292
+ * read the words: no row sharing a single word with the query, every row matching only a
2293
+ * generic word like "pricing" while the subject you named is absent, or fewer than half the
2294
+ * query's subject words appearing anywhere in the results. The fourth reads the engine's own
2295
+ * behaviour and is the reliable one: the query is asked TWICE down the same exit, and an
2296
+ * answer that comes back different the second time is a random decoy rather than a bad ranking
2297
+ * — measured 2026-09-12, an answerable query repeats identically while an unanswerable one
2298
+ * returns a fresh unrelated set every time. A partially-relevant substitution is still not
2299
+ * caught. When every engine fails this THROWS rather than returning zero rows, because no
2300
+ * engine reached is not the same as nothing found.
2243
2301
  */
2244
2302
  web(query: string | { query: string, limit?: number }, limit?: number, options?: CallOptions): Promise<SearchWebResult>;
2245
2303
 
@@ -2253,8 +2311,9 @@ type CallOptions = {
2253
2311
  * response looks like. Measured 2026-09-08: five identical calls for one query on one route
2254
2312
  * inside ten seconds returned 4, 3, 2, 3 and 0 rows, and two exits disagreed (0 against 3) on
2255
2313
  * that query in the same minute. Every zero therefore arrives carrying a warning saying so;
2256
- * RETRY before reporting that nothing has been written about something. Still NOT MEASURED:
2257
- * whether this feed honours search operators treat that as unknown.
2314
+ * retry short queries before reporting that nothing has been written about something. Keep
2315
+ * queries to 2–3 words: OR-joined and more-than-three-term queries are unsupported on this
2316
+ * feed, so split them into separate calls instead of retrying.
2258
2317
  */
2259
2318
  news(query: string | { query: string, limit?: number }, limit?: number, options?: CallOptions): Promise<SearchNewsResult>;
2260
2319
  }
@@ -2611,23 +2670,80 @@ interface ForecastResult {
2611
2670
  }
2612
2671
 
2613
2672
  declare namespace BowmarkCapability_web_form_fields {
2614
- // ── Inspect a web form and count its fields — the unit's own declarations, verbatim ──
2673
+ // ── Inspect, fill and drive a multi-step web form — the unit's own declarations, verbatim ──
2674
+
2675
+ interface FormField { name: string | null; label: string | null; type: string; required: boolean; options?: string[] }
2676
+ interface InspectedForm { action: string | null; method: string; fields: FormField[]; frameUrl?: string | null }
2677
+
2678
+ type FormOptions = {
2679
+ strategy?: "auto" | "fetch" | "browser" // default "auto" — plain GET, browser only if it found nothing
2680
+ open?: string // the control that opens the form: a CSS selector or its visible text
2681
+ timeoutMs?: number // default 30000
2682
+ }
2683
+
2684
+ type FormInspectionResult = {
2685
+ url: string
2686
+ title: string | null
2687
+ forms: InspectedForm[]
2688
+ fieldCount: number
2689
+ servedBy: "fetch" | "browser" // which rung paid for this
2690
+ escalated: boolean // the GET was tried and found nothing
2691
+ escalationReason: string | null // set even under strategy:"fetch", so under-reading is visible
2692
+ openedWith: string | null // the control that was clicked to reveal the form
2693
+ multiStep: boolean // more steps follow; the count is the visible step only
2694
+ stepLabel: string | null // the form's own "Step 2 of 4", when it prints one
2695
+ warnings: string[]
2696
+ }
2615
2697
 
2616
- interface FormField { name: string | null; label: string | null; type: string; required: boolean }
2617
- interface InspectedForm { action: string | null; method: string; fields: FormField[] }
2618
- interface FormInspectionResult { url: string; title: string | null; forms: InspectedForm[]; fieldCount: number; warnings: string[] }
2698
+ type FormFillOptions = {
2699
+ open?: string // the control that opens the form, if you already know it
2700
+ timeoutMs?: number // default 30000
2701
+ advance?: boolean // click "Next"/"Continue" once values are written. default false
2702
+ submit?: boolean // click the control that COMMITS the form. default false. wins over advance
2703
+ }
2704
+
2705
+ type FormFillResult = {
2706
+ url: string
2707
+ filled: string[] // the values keys that matched a field and were written
2708
+ notFound: string[] // the values keys nothing on the page matched
2709
+ advanced: boolean // a Next/Continue control was found and clicked
2710
+ submitted: boolean // a submit/book/place-order control was found and clicked
2711
+ openedWith: string | null
2712
+ multiStep: boolean // the step now on screen continues past this one
2713
+ stepLabel: string | null
2714
+ warnings: string[]
2715
+ }
2619
2716
 
2620
2717
  /**
2621
- * Fetches a public web page and inventories every visible form field: its label, name, type
2622
- * and required-ness. Read-only: it never fills or submits a form.
2718
+ * Inventories every field a web form asks for label, name, type, choices and required-ness —
2719
+ * including a booking or quote widget that only appears after a click and mounts in its own
2720
+ * iframe. `getFields` is read-only. `fillForm` writes answers into those same fields and can
2721
+ * click 'Next'/'Continue' to advance a multi-step flow, or the control that finally commits it
2722
+ * — one call, one step; call it again for the next step.
2623
2723
  */
2624
2724
  interface Unit {
2625
2725
  /**
2626
- * Reads a public page and returns its forms plus a total field count. Each field includes its
2627
- * label when the markup supplies one, name, type and required-ness. It never fills, clicks or
2628
- * submits anything; a page with client-rendered forms or no HTML form gets an honest warning.
2726
+ * Reads a page and returns its forms plus a total field count, each field with its label,
2727
+ * name, type, choices and required-ness. Takes a plain GET first and opens a browser only when
2728
+ * that finds no fields then it clicks the control that reveals the form (a `Book Online`
2729
+ * button, say) and reads the widget's own cross-origin iframe. It clicks exactly that one
2730
+ * control: it never types, never picks an option and never submits, so a multi-step flow comes
2731
+ * back as the visible step plus `multiStep: true`.
2629
2732
  */
2630
- getFields(url: string): Promise<FormInspectionResult>;
2733
+ getFields(url: string, options?: FormOptions): Promise<FormInspectionResult>;
2734
+
2735
+ /**
2736
+ * Opens the page (and the booking/quote widget behind a button, exactly as `getFields` does),
2737
+ * then writes `values` into whatever fields match — keyed by a field's `name` or a word or two
2738
+ * of its label, matched fuzzily so the site's own wording doesn't have to be exact. Always
2739
+ * opens a browser: filling is an interaction, not a read. Pass `advance: true` to click
2740
+ * 'Next'/'Continue' once everything is written, or `submit: true` to click the control that
2741
+ * actually commits the form (submit wins if both are set). One call is one step — call it
2742
+ * again with the next step's `values` to walk a wizard forward. `notFound` names any `values`
2743
+ * key nothing on the page matched, so a caller who guessed a label wrong sees that rather than
2744
+ * silence.
2745
+ */
2746
+ fillForm(url: string, values: Record<string, string>, options?: FormFillOptions): Promise<FormFillResult>;
2631
2747
  }
2632
2748
  }
2633
2749
 
@@ -3279,6 +3395,32 @@ interface abercrombieStockQuery {
3279
3395
  }
3280
3396
  }
3281
3397
 
3398
+ declare namespace BowmarkProvider_abqplumb {
3399
+ // ── Albuquerque Plumbing, Heating & Cooling — the unit's own declarations, verbatim ──
3400
+ interface AbqPlumbIssueType { id: number; name: string; division: string | null; }
3401
+ interface AbqPlumbServiceType { id: number; name: string; issueTypes: AbqPlumbIssueType[]; }
3402
+ interface AbqPlumbAppointmentRequest { serviceTypeId: number; issueTypeId: number; }
3403
+ interface AbqPlumbAppointmentSlot { startTime: string; endTime: string; }
3404
+
3405
+ /**
3406
+ * Albuquerque Plumbing, Heating & Cooling's public booking-widget services and live
3407
+ * appointment slots, with no customer details needed.
3408
+ */
3409
+ interface Unit {
3410
+ /**
3411
+ * Lists the services and issue types in ABQ Plumb's own booking widget. The entry point:
3412
+ * getAvailability takes a serviceTypeId and issueTypeId this returns.
3413
+ */
3414
+ listServices(): Promise<AbqPlumbServiceType[]>;
3415
+
3416
+ /**
3417
+ * Returns ABQ Plumb's currently-open appointment slots for one service and issue type from
3418
+ * listServices. This reads availability only; it never submits a booking.
3419
+ */
3420
+ getAvailability(input: AbqPlumbAppointmentRequest): Promise<AbqPlumbAppointmentSlot[]>;
3421
+ }
3422
+ }
3423
+
3282
3424
  declare namespace BowmarkProvider_acerentacar {
3283
3425
  // ── ACE Rent A Car — the unit's own declarations, verbatim ──
3284
3426
  interface AcerentacarSearchArgs { pickupLocationCode: string; pickupDate: string; dropoffDate: string; pickupTime?: string; dropoffTime?: string; }
@@ -3387,6 +3529,33 @@ interface AcqualinaRoomAvailability {
3387
3529
  }
3388
3530
  }
3389
3531
 
3532
+ declare namespace BowmarkProvider_ai_engineer {
3533
+ // ── AI Engineer — the unit's own declarations, verbatim ──
3534
+ interface AiEngineerSpeaker {
3535
+ name: string;
3536
+ title: string;
3537
+ company: string;
3538
+ speakerHandle: string;
3539
+ url: string;
3540
+ }
3541
+
3542
+ /** Conference speakers and speaker information from the AI Engineer conference. */
3543
+ interface Unit {
3544
+ /**
3545
+ * Lists all speakers at the AI Engineer conference with their names, titles, companies, and
3546
+ * speaker page URLs.
3547
+ */
3548
+ listSpeakers(): Promise<{ speakers: AiEngineerSpeaker[] }>;
3549
+
3550
+ /**
3551
+ * Returns detailed information about one speaker from the AI Engineer conference, including
3552
+ * name, title, company, and speaker page URL. THROWS if the handle is not on the current
3553
+ * roster — check it with listSpeakers() first.
3554
+ */
3555
+ getSpeaker(args: { speakerHandle: string }): Promise<AiEngineerSpeaker>;
3556
+ }
3557
+ }
3558
+
3390
3559
  declare namespace BowmarkProvider_aiper {
3391
3560
  // ── Aiper — the unit's own declarations, verbatim ──
3392
3561
  interface AiperPoolOption {
@@ -4466,6 +4635,49 @@ interface AspZipMatch {
4466
4635
  }
4467
4636
  }
4468
4637
 
4638
+ declare namespace BowmarkProvider_astoundgroup {
4639
+ // ── Astound Group — the unit's own declarations, verbatim ──
4640
+ // Astound Group's OWN shapes — not a capability contract.
4641
+
4642
+ interface AstoundgroupSitemapPage {
4643
+ url: string;
4644
+ lastmod: string | null;
4645
+ }
4646
+
4647
+ interface AstoundgroupContactField {
4648
+ name: string;
4649
+ label: string;
4650
+ type: string;
4651
+ required: boolean;
4652
+ }
4653
+
4654
+ interface AstoundgroupContactForm {
4655
+ url: string;
4656
+ action: string;
4657
+ fields: AstoundgroupContactField[];
4658
+ }
4659
+
4660
+ /**
4661
+ * Astound Group's own site index (sitemap.xml) and its Get in Touch contact form's real fields
4662
+ * — name, label, type and required — parsed from the site's server-rendered markup rather than
4663
+ * a caller re-reading raw HTML.
4664
+ */
4665
+ interface Unit {
4666
+ /**
4667
+ * Lists every page astoundgroup.com's own sitemap.xml publishes, each with its own url and
4668
+ * last-modified date — use this to find the contact page or any other page without guessing a
4669
+ * path.
4670
+ */
4671
+ listPages(): Promise<AstoundgroupSitemapPage[]>;
4672
+
4673
+ /**
4674
+ * Reads Astound Group's contact form (astoundgroup.com/contact-us by default) and returns its
4675
+ * real fields — name, label, input type and whether it's required.
4676
+ */
4677
+ getContactForm(url?: string): Promise<AstoundgroupContactForm>;
4678
+ }
4679
+ }
4680
+
4469
4681
  declare namespace BowmarkProvider_atlasoceanvoyages {
4470
4682
  // ── Atlas Ocean Voyages — the unit's own declarations, verbatim ──
4471
4683
  // Atlas Ocean Voyages' OWN shapes — not a capability contract.
@@ -4662,6 +4874,24 @@ interface AutocampProperty {
4662
4874
  }
4663
4875
  }
4664
4876
 
4877
+ declare namespace BowmarkProvider_avalonmalibu_com {
4878
+ // ── Avalon Malibu — the unit's own declarations, verbatim ──
4879
+ interface AvalonMalibuInsuranceField { name: string; label: string; type: string; required: boolean; options: string[]; }
4880
+ interface AvalonMalibuInsuranceForm { url: string; fields: AvalonMalibuInsuranceField[]; }
4881
+
4882
+ /**
4883
+ * Avalon Malibu's public insurance-verification form, with real field labels and select
4884
+ * choices, read without submitting health or insurance data.
4885
+ */
4886
+ interface Unit {
4887
+ /**
4888
+ * Reads Avalon Malibu's /insurance verification form and returns its named fields, labels,
4889
+ * types, required flags and select choices. It never submits the form.
4890
+ */
4891
+ getInsuranceForm(url?: string): Promise<AvalonMalibuInsuranceForm>;
4892
+ }
4893
+ }
4894
+
4665
4895
  declare namespace BowmarkProvider_avantstay {
4666
4896
  // ── AvantStay — the unit's own declarations, verbatim ──
4667
4897
  interface AvantstayProperty {
@@ -5938,6 +6168,9 @@ interface BingSearchResult {
5938
6168
  query: string;
5939
6169
  results: BingWebResult[];
5940
6170
  warnings: string[];
6171
+ substituted: boolean // true when any of the four checks below judged these
6172
+ // rows to answer a DIFFERENT query. The machine-readable
6173
+ // form of the verdict warnings states in prose
5941
6174
  }
5942
6175
 
5943
6176
  interface BingNewsSearchResult {
@@ -5949,29 +6182,92 @@ interface BingNewsSearchResult {
5949
6182
  /**
5950
6183
  * General web and news search over Bing's index, read off Bing's own RSS output — ten ranked
5951
6184
  * results per query with title, destination URL, snippet and date. Keyless, browserless, ~5 KB
5952
- * a call. It never reports 'no matches' and it ignores search operators like site: both
5953
- * measured, both declared.
6185
+ * a call. Web never reports 'no matches' and ignores search operators like site:. News can be
6186
+ * empty, but OR-joined or more-than-three-term queries are unsupported and are warned as
6187
+ * malformed instead of retried.
5954
6188
  */
5955
6189
  interface Unit {
5956
6190
  /**
5957
6191
  * Searches the web and returns the ten results Bing ranked first, with title, destination URL,
5958
- * snippet and date. TWO LIMITS, neither visible in the response: it NEVER returns an empty
5959
- * list — a query of three invented words came back with ten confident, unrelated rows and it
5960
- * IGNORES search operators, so `site:reddit.com …` is not scoped to reddit. Treat the rows as
5961
- * Bing's best offer rather than as proof anything matched.
6192
+ * snippet and date. THREE LIMITS. (1) It NEVER returns an empty list a query of three
6193
+ * invented words came back with ten confident, unrelated rows, and a long-tail query (an
6194
+ * obscure company name plus "pricing", say) can get the same substituted treatment. (2) It
6195
+ * IGNORES search operators, so `site:reddit.com …` is not scoped to reddit. (3) MEASURED
6196
+ * 2026-09-11, and the one that hits ordinary research: it answers a MULTI-WORD query by
6197
+ * reducing it to the single most popular word in it and returning that word's results — "React
6198
+ * useEffect dependency array" comes back as React's own homepage, and a nine-word query naming
6199
+ * a company, a job and a protocol came back as the results for the one two-letter acronym in
6200
+ * it. Quoting the proper noun, shortening the query and site-scoping it were all tried and all
6201
+ * returned the identical substituted set, so rewriting the query does not help. `warnings`
6202
+ * flags four shapes. Three read the words: no row sharing a single word with the query, every
6203
+ * row matching only a generic word like "pricing" while the thing you named is absent, or
6204
+ * fewer than half the query's subject words appearing anywhere in the results. The fourth
6205
+ * reads Bing's own behaviour and is the reliable one — the query is asked TWICE down the same
6206
+ * exit, and an answer that differs the second time is a random decoy, because a query Bing can
6207
+ * actually answer is stable across repeats (measured 2026-09-12: 1.00 repeat overlap on every
6208
+ * answerable query, 0.00 on every unanswerable one, nothing in between). A partially-relevant
6209
+ * result set is still not caught, so treat the rows as Bing's best offer rather than as proof
6210
+ * anything matched.
5962
6211
  */
5963
6212
  searchWeb(args: { query: string, limit?: number }): Promise<BingSearchResult>;
5964
6213
 
6214
+ /**
6215
+ * Searches the web through a browser to bing.com instead of reading the RSS feed — same
6216
+ * results shape. It does NOT fix relevance: measured 2026-09-12 from the fleet's own egress,
6217
+ * it substitutes on exactly the queries the RSS feed substitutes on, on a residential exit and
6218
+ * a datacenter one alike (the earlier claim that a browser answers multi-word queries
6219
+ * correctly was measured from a laptop and confounded the client with the network). Kept as a
6220
+ * standby that can rescue a query the primary drops. Expensive: holds a browser pool slot for
6221
+ * ~4s per call. Use searchWeb instead, and let the search capability choose when to fall back
6222
+ * to this version.
6223
+ */
6224
+ searchWebBrowser(args: { query: string, limit?: number }): Promise<BingSearchResult>;
6225
+
5965
6226
  /**
5966
6227
  * Searches news coverage and returns stories with the headline, the outlet's own article URL,
5967
6228
  * a summary, a real publication timestamp, the publisher name and a thumbnail. Use this rather
5968
6229
  * than searchWeb when the question is 'what happened' — the web feed's dates are Bing's crawl
5969
- * stamps, this feed's are the story's.
6230
+ * stamps, this feed's are the story's. Keep each query to 2–3 words: OR-joined and
6231
+ * more-than-three-term queries return an empty feed and are warned as unsupported, so split
6232
+ * them into separate calls rather than retrying.
5970
6233
  */
5971
6234
  searchNews(args: { query: string, limit?: number }): Promise<BingNewsSearchResult>;
5972
6235
  }
5973
6236
  }
5974
6237
 
6238
+ declare namespace BowmarkProvider_bionicpo {
6239
+ // ── BionicPO — the unit's own declarations, verbatim ──
6240
+ interface InquiryService {
6241
+ id: string;
6242
+ name: string;
6243
+ category: string;
6244
+ description?: string;
6245
+ }
6246
+
6247
+ interface ServiceDetails {
6248
+ id: string;
6249
+ name: string;
6250
+ description: string;
6251
+ formFields: FormField[];
6252
+ }
6253
+
6254
+ interface FormField {
6255
+ name: string;
6256
+ type: string;
6257
+ required: boolean;
6258
+ label?: string;
6259
+ }
6260
+
6261
+ /** Query inquiry and service details from BionicPO's services directory. */
6262
+ interface Unit {
6263
+ /** List BionicPO inquiry and service categories from the inquiry-services page. */
6264
+ listInquiryServices(): Promise<{ services: InquiryService[]; warnings: string[] }>;
6265
+
6266
+ /** Get a BionicPO inquiry service's form fields and details. */
6267
+ getInquiryServiceDetails(serviceName: string): Promise<ServiceDetails>;
6268
+ }
6269
+ }
6270
+
5975
6271
  declare namespace BowmarkProvider_bishops {
5976
6272
  // ── Bishops Cuts/Color — the unit's own declarations, verbatim ──
5977
6273
  interface BishopsLocationLink {
@@ -6861,6 +7157,49 @@ interface BrixtonCheckoutLink {
6861
7157
  }
6862
7158
  }
6863
7159
 
7160
+ declare namespace BowmarkProvider_builder_strucsure_com {
7161
+ // ── StrucSure Home Warranty — the unit's own declarations, verbatim ──
7162
+ interface StrucsureRegistrationState {
7163
+ id: number;
7164
+ code: string;
7165
+ name: string;
7166
+ registered: boolean;
7167
+ }
7168
+ interface StrucsureOption {
7169
+ id: number;
7170
+ name: string;
7171
+ }
7172
+ interface StrucsureEnrollmentType extends StrucsureOption {
7173
+ isDefault: boolean;
7174
+ contractorTypeId: number;
7175
+ }
7176
+ interface StrucsureNewConstructionFields {
7177
+ foundationTypes: StrucsureOption[];
7178
+ homeTypes: StrucsureOption[];
7179
+ enrollmentTypes: StrucsureEnrollmentType[];
7180
+ }
7181
+
7182
+ /**
7183
+ * StrucSure Home Warranty's new-construction builder registration form: recognized states,
7184
+ * foundation types, home types and warranty terms, read from the portal's own reference-data
7185
+ * API.
7186
+ */
7187
+ interface Unit {
7188
+ /**
7189
+ * Lists the states StrucSure Home Warranty's builder registration portal recognizes, and which
7190
+ * are currently open for registration.
7191
+ */
7192
+ listRegistrationStates(): Promise<StrucsureRegistrationState[]>;
7193
+
7194
+ /**
7195
+ * Returns the foundation-type, home-type and warranty-term (enrollment-type) choices for
7196
+ * StrucSure's new-construction builder registration form, before any registration is
7197
+ * submitted.
7198
+ */
7199
+ getNewConstructionRegistrationFields(): Promise<StrucsureNewConstructionFields>;
7200
+ }
7201
+ }
7202
+
6864
7203
  declare namespace BowmarkProvider_bulletproof {
6865
7204
  // ── Bulletproof 360 — the unit's own declarations, verbatim ──
6866
7205
  interface BulletproofStore {
@@ -7187,6 +7526,133 @@ interface CabinsforyouSearchArgs {
7187
7526
  }
7188
7527
  }
7189
7528
 
7529
+ declare namespace BowmarkProvider_cal_com {
7530
+ // ── Cal.com — the unit's own declarations, verbatim ──
7531
+ interface CalComEventType {
7532
+ slug: string;
7533
+ title: string;
7534
+ id: number;
7535
+ lengthInMinutes: number | null;
7536
+ description: string | null;
7537
+ url: string;
7538
+ }
7539
+
7540
+ interface CalComEventTypesResult {
7541
+ username: string;
7542
+ eventTypes: CalComEventType[];
7543
+ }
7544
+
7545
+ interface CalComSlot {
7546
+ start: string;
7547
+ }
7548
+
7549
+ interface CalComDay {
7550
+ date: string;
7551
+ slots: CalComSlot[];
7552
+ }
7553
+
7554
+ interface CalComAvailabilityOptions {
7555
+ daysAhead?: number;
7556
+ }
7557
+
7558
+ interface CalComAvailabilityResult {
7559
+ username: string;
7560
+ eventType: CalComEventType;
7561
+ days: CalComDay[];
7562
+ otherEventTypes: CalComEventType[];
7563
+ }
7564
+
7565
+ /**
7566
+ * Cal.com's own documented, keyless public API — the event types a booking page offers and the
7567
+ * real, currently-open time slots for one of them — no browser, no key.
7568
+ */
7569
+ interface Unit {
7570
+ /**
7571
+ * Lists every event type a Cal.com username currently publishes — the entry point. Takes the
7572
+ * bare username (e.g. "humanlayer") or the full url a caller was given (e.g.
7573
+ * "https://cal.com/humanlayer"), and returns each event's title, slug, id and length.
7574
+ */
7575
+ getEventTypes(username: string): Promise<CalComEventTypesResult>;
7576
+
7577
+ /**
7578
+ * Returns the real, currently-open time slots for one Cal.com event type — accepts a bare
7579
+ * username ("humanlayer"), a username url, or a specific event url
7580
+ * ("https://cal.com/humanlayer/code"). Given a bare username, it picks that username's first
7581
+ * event type and reports the rest in `otherEventTypes`.
7582
+ */
7583
+ getAvailability(username: string, opts?: CalComAvailabilityOptions): Promise<CalComAvailabilityResult>;
7584
+ }
7585
+ }
7586
+
7587
+ declare namespace BowmarkProvider_calendly {
7588
+ // ── Calendly — the unit's own declarations, verbatim ──
7589
+ interface CalendlyEventType {
7590
+ slug: string;
7591
+ name: string;
7592
+ uuid: string;
7593
+ url: string;
7594
+ description: string | null;
7595
+ }
7596
+
7597
+ interface CalendlyProfile {
7598
+ slug: string;
7599
+ name: string;
7600
+ timezone: string;
7601
+ }
7602
+
7603
+ interface CalendlyEventTypesResult {
7604
+ profile: CalendlyProfile;
7605
+ eventTypes: CalendlyEventType[];
7606
+ }
7607
+
7608
+ interface CalendlySlot {
7609
+ startTime: string;
7610
+ inviteesRemaining: number;
7611
+ }
7612
+
7613
+ interface CalendlyDay {
7614
+ date: string;
7615
+ status: string; // the site's own labels — read the values off a result, never guess one from prose
7616
+ slots: CalendlySlot[];
7617
+ }
7618
+
7619
+ interface CalendlyAvailabilityOptions {
7620
+ timezone?: string;
7621
+ daysAhead?: number;
7622
+ }
7623
+
7624
+ interface CalendlyAvailabilityResult {
7625
+ profileSlug: string;
7626
+ eventType: CalendlyEventType;
7627
+ timezone: string;
7628
+ days: CalendlyDay[];
7629
+ otherEventTypes: CalendlyEventType[];
7630
+ }
7631
+
7632
+ /**
7633
+ * Calendly's own public booking-widget data — the event types a scheduling page offers and the
7634
+ * real, currently-open time slots for one of them — read straight off the widget's
7635
+ * undocumented JSON endpoints, no browser, no key.
7636
+ */
7637
+ interface Unit {
7638
+ /**
7639
+ * Lists every event type a Calendly profile currently offers — the entry point. Takes the bare
7640
+ * profile slug a person books under (e.g. "jason-frazier") or the full url a caller was given
7641
+ * (e.g. "https://calendly.com/jason-frazier"), and returns each event's name, slug, uuid and
7642
+ * its own bookable url.
7643
+ */
7644
+ getEventTypes(profile: string): Promise<CalendlyEventTypesResult>;
7645
+
7646
+ /**
7647
+ * Returns the real, currently-open time slots for one Calendly event type — accepts a bare
7648
+ * profile slug ("jason-frazier"), a profile url, or a specific event url
7649
+ * ("https://calendly.com/jason-frazier/15min"). Given a bare profile, it picks that profile's
7650
+ * first event type and reports the rest in `otherEventTypes`.
7651
+ */
7652
+ getAvailability(profile: string, opts?: CalendlyAvailabilityOptions): Promise<CalendlyAvailabilityResult>;
7653
+ }
7654
+ }
7655
+
7190
7656
  declare namespace BowmarkProvider_caliberhealth {
7191
7657
  // ── Caliber Healthcare Solutions — the unit's own declarations, verbatim ──
7192
7658
  // Caliber Healthcare Solutions' OWN shapes — not a capability contract.
@@ -9679,6 +10145,57 @@ interface code_claude_comDocLink {
9679
10145
  }
9680
10146
  }
9681
10147
 
10148
+ declare namespace BowmarkProvider_compass_living {
10149
+ // ── Compass Living — the unit's own declarations, verbatim ──
10150
+ interface CommunityWithForms {
10151
+ name: string;
10152
+ url: string;
10153
+ contactFormFields: string[];
10154
+ warnings: string[];
10155
+ }
10156
+
10157
+ /** Discover senior living communities and their contact-form fields. */
10158
+ interface Unit {
10159
+ /**
10160
+ * Lists communities with their contact-form field labels, optionally capped at `limit`
10161
+ * communities.
10162
+ */
10163
+ listCommunities(limit?: number): Promise<CommunityWithForms[]>;
10164
+ }
10165
+ }
10166
+
10167
+ declare namespace BowmarkProvider_completehomewarranty_com {
10168
+ // ── Complete Home Warranty — the unit's own declarations, verbatim ──
10169
+ // Complete Home Warranty's OWN shape — not a capability contract.
10170
+
10171
+ interface CompletehomewarrantyComPlan {
10172
+ name: string; // e.g. "Essential Plan"
10173
+ price: number; // monthly price in priceCurrency
10174
+ priceCurrency: string;
10175
+ coverageSummary: string; // e.g. "Essential Home Warranty — 3 Appliances + HVAC"
10176
+ }
10177
+
10178
+ /**
10179
+ * Reads Complete Home Warranty's own published plan catalog — real monthly price and coverage
10180
+ * summary for each of its four home-warranty plans — straight off the plans page's own
10181
+ * structured data, no browser and no parsing prose.
10182
+ */
10183
+ interface Unit {
10184
+ /**
10185
+ * Lists Complete Home Warranty's current published plans — name, monthly price and coverage
10186
+ * summary for each — straight off the plans page's own structured data.
10187
+ */
10188
+ listPlans(): Promise<CompletehomewarrantyComPlan[]>;
10189
+
10190
+ /**
10191
+ * Reads one plan by name (e.g. "Essential Plan") — its monthly price and coverage summary.
10192
+ * `name` is a plan name from `listPlans()`. THROWS on an unknown name, naming `listPlans()` as
10193
+ * the way to find current ones.
10194
+ */
10195
+ getPlan(name: string): Promise<CompletehomewarrantyComPlan>;
10196
+ }
10197
+ }
10198
+
9682
10199
  declare namespace BowmarkProvider_consultnet {
9683
10200
  // ── ConsultNet — the unit's own declarations, verbatim ──
9684
10201
  // ConsultNet's OWN shapes — not a capability contract.
@@ -9715,6 +10232,25 @@ interface ConsultnetJobSearchQuery {
9715
10232
  }
9716
10233
  }
9717
10234
 
10235
+ declare namespace BowmarkProvider_costco {
10236
+ // ── Costco — the unit's own declarations, verbatim ──
10237
+ interface CostcoProduct {
10238
+ itemNumber: string;
10239
+ title: string;
10240
+ brand: string | null;
10241
+ imageUrl: string | null;
10242
+ }
10243
+
10244
+ /** Search Costco's product catalog by keyword. */
10245
+ interface Unit {
10246
+ /**
10247
+ * Runs a search on Costco's product catalog and returns matching items (title, brand, item
10248
+ * number, image). Does not return price — see the module header.
10249
+ */
10250
+ search(query: string): Promise<CostcoProduct[]>;
10251
+ }
10252
+ }
10253
+
9718
10254
  declare namespace BowmarkProvider_couponfollow {
9719
10255
  // ── CouponFollow — the unit's own declarations, verbatim ──
9720
10256
  interface CouponFollowOffer {
@@ -12227,6 +12763,31 @@ interface ExtraspaceUnitAvailability {
12227
12763
  }
12228
12764
  }
12229
12765
 
12766
+ declare namespace BowmarkProvider_faceforwardaesthetics {
12767
+ // ── Face Forward Aesthetics — the unit's own declarations, verbatim ──
12768
+ interface FaceForwardAestheticsLocation { id: string; name: string; address: string | null; phone: string | null; }
12769
+ interface FaceForwardAestheticsService { id: string; name: string; description: string | null; durationMinutes: number | null; price: number | null; }
12770
+ interface FaceForwardAestheticsAvailability { centerId: string; serviceId: string; date: string; slots: { time: string }[]; }
12771
+
12772
+ /**
12773
+ * Face Forward Aesthetics' live Zenoti locations, service catalog, and bookable appointment
12774
+ * slots — no login, no PII, and no browser.
12775
+ */
12776
+ interface Unit {
12777
+ /** Lists Face Forward Aesthetics' real bookable Zenoti locations (9 centers, OH/IN/NV/PA). */
12778
+ listLocations(): Promise<FaceForwardAestheticsLocation[]>;
12779
+
12780
+ /** Lists a location's live Zenoti services, prices, and durations. */
12781
+ listServices(centerId: string, query?: string): Promise<FaceForwardAestheticsService[]>;
12782
+
12783
+ /**
12784
+ * Reads real open appointment slots for a service and date; an empty list is a real
12785
+ * fully-booked answer.
12786
+ */
12787
+ checkAvailability(centerId: string, serviceId: string, date: string): Promise<FaceForwardAestheticsAvailability>;
12788
+ }
12789
+ }
12790
+
12230
12791
  declare namespace BowmarkProvider_facerealityskincare {
12231
12792
  // ── Face Reality Skincare — the unit's own declarations, verbatim ──
12232
12793
  interface FaceRealitySkincareEstheticianRow {
@@ -12267,6 +12828,38 @@ interface FaceRealitySkincareEstheticianRow {
12267
12828
  }
12268
12829
  }
12269
12830
 
12831
+ declare namespace BowmarkProvider_fbsappliance {
12832
+ // ── Factory Builder Stores (FBS Appliance) — the unit's own declarations, verbatim ──
12833
+ interface FbsapplianceSearchArgs {
12834
+ category: string; // the site's own catalog slug, e.g. "built-in-refrigerators"
12835
+ limit?: number; // default 24, clamped to [1, 60]
12836
+ }
12837
+
12838
+ interface FbsapplianceSearchResult {
12839
+ name: string;
12840
+ modelNumber: string; // may end in a literal "..." when the grid clips it
12841
+ price: number; // real, current selling price
12842
+ wasPrice: number | null; // the crossed-out "was" price, when shown
12843
+ availableAt: string | null; // the city the grid names, when it names one
12844
+ url: string; // this product's own FBS Appliance URL
12845
+ }
12846
+
12847
+ /**
12848
+ * FBS Appliance's real catalog across 8 Texas showrooms — searchAppliances runs the site's own
12849
+ * category grid and returns real, currently-listed appliances with live selling price, any
12850
+ * sale/was price, model number, and which store the grid shows it in stock at.
12851
+ */
12852
+ interface Unit {
12853
+ /**
12854
+ * Runs FBS Appliance's own category grid and returns real, currently-listed appliances (name,
12855
+ * model number, real current price, the crossed-out 'was' price when shown, the store the grid
12856
+ * names as having it, and the product's own FBS Appliance URL). Read-only — never adds to cart
12857
+ * or checks out.
12858
+ */
12859
+ searchAppliances(args: FbsapplianceSearchArgs): Promise<FbsapplianceSearchResult[]>;
12860
+ }
12861
+ }
12862
+
12270
12863
  declare namespace BowmarkProvider_fieldstonehomes {
12271
12864
  // ── Fieldstone Homes — the unit's own declarations, verbatim ──
12272
12865
  interface FieldstonehomesSearchArgs { city?: string; homeType?: string; minPrice?: number; maxPrice?: number; minBeds?: number; minSqft?: number; }
@@ -12410,6 +13003,56 @@ interface FirstdibsListing {
12410
13003
  }
12411
13004
  }
12412
13005
 
13006
+ declare namespace BowmarkProvider_fitness1440 {
13007
+ // ── FITNESS:1440 — the unit's own declarations, verbatim ──
13008
+ // FITNESS:1440's OWN shapes — not a capability contract.
13009
+
13010
+ interface Fitness1440Location {
13011
+ state: string;
13012
+ city: string;
13013
+ }
13014
+
13015
+ interface Fitness1440ListLocationsArgs {
13016
+ state?: string;
13017
+ }
13018
+
13019
+ interface Fitness1440ListLocationsResult {
13020
+ locations: Fitness1440Location[];
13021
+ states: string[];
13022
+ }
13023
+
13024
+ interface Fitness1440DayPassRequestArgs {
13025
+ state: string;
13026
+ city: string;
13027
+ }
13028
+
13029
+ interface Fitness1440DayPassRequestInfo {
13030
+ state: string;
13031
+ city: string;
13032
+ requestUrl: string; // the WRITE handoff this provider never submits
13033
+ requiredFields: string[];
13034
+ }
13035
+
13036
+ /**
13037
+ * FITNESS:1440's own live day-pass request form (/request-day-pass/) — the real state → city
13038
+ * cascade of clubs currently taking free day-pass requests, off the site's own server-rendered
13039
+ * form, plus the form's own handoff for one confirmed location.
13040
+ */
13041
+ interface Unit {
13042
+ /**
13043
+ * Reads FITNESS:1440's own live day-pass form and returns the state → city cascade it
13044
+ * currently renders, optionally filtered to one state.
13045
+ */
13046
+ listLocations(args?: Fitness1440ListLocationsArgs): Promise<Fitness1440ListLocationsResult>;
13047
+
13048
+ /**
13049
+ * Validates one state/city pair against the live cascade and returns the day-pass form's own
13050
+ * URL and required fields — the handoff a caller completes the request at.
13051
+ */
13052
+ getDayPassRequestInfo(args: Fitness1440DayPassRequestArgs): Promise<Fitness1440DayPassRequestInfo>;
13053
+ }
13054
+ }
13055
+
12413
13056
  declare namespace BowmarkProvider_fivebelow {
12414
13057
  // ── Five Below — the unit's own declarations, verbatim ──
12415
13058
  interface FiveBelowVariant {
@@ -12570,6 +13213,71 @@ interface flightradar24ArrivalsBoard {
12570
13213
  }
12571
13214
  }
12572
13215
 
13216
+ declare namespace BowmarkProvider_fluencecorp {
13217
+ // ── Fluence Corporation — the unit's own declarations, verbatim ──
13218
+ interface ConcentrationSet {
13219
+ COD: number;
13220
+ TKN: number;
13221
+ NO3N: number;
13222
+ DisolvedOxygen?: number;
13223
+ }
13224
+
13225
+ interface SludgeConcentrationSet {
13226
+ TSSConcentration: number;
13227
+ COD?: number;
13228
+ TKN?: number;
13229
+ NO3N?: number;
13230
+ DisolvedOxygen?: number;
13231
+ VSS_TSS_Ratio?: number;
13232
+ }
13233
+
13234
+ interface PowerConsumer {
13235
+ name: string;
13236
+ consumption: number;
13237
+ count: number;
13238
+ operation: number;
13239
+ }
13240
+
13241
+ interface EnergyConsumptionInput {
13242
+ influentFlow: number;
13243
+ sludgeFlow?: number;
13244
+ influent: ConcentrationSet;
13245
+ effluent: ConcentrationSet;
13246
+ sludge: SludgeConcentrationSet;
13247
+ elevation: number;
13248
+ temperature: number;
13249
+ power: Record<string, PowerConsumer>;
13250
+ }
13251
+
13252
+ interface EnergyConsumptionResult {
13253
+ NEC: number;
13254
+ NEC_T_P: number;
13255
+ NOR: number;
13256
+ LR_COD: number;
13257
+ LR_TKN: number;
13258
+ LR_NO3N: number;
13259
+ LR_DisolvedOxygen: number;
13260
+ totalPower: number;
13261
+ barometricPressure: number;
13262
+ effluentFlow: number;
13263
+ level: 0 | 1 | 2 | 3;
13264
+ }
13265
+
13266
+ /**
13267
+ * Computes Normalized Energy Consumption (NEC, kWh/kg) for a wastewater-treatment plant design
13268
+ * per ISO 21939 — the exact calculation Fluence's own Energy Consumption Calculator performs,
13269
+ * reimplemented locally with no network call.
13270
+ */
13271
+ interface Unit {
13272
+ /**
13273
+ * Computes Normalized Energy Consumption (NEC, kWh/kg) for a wastewater treatment plant design
13274
+ * per ISO 21939, from design flows, influent/sludge/effluent concentrations, environmental
13275
+ * conditions and a power-consumer list.
13276
+ */
13277
+ calculateEnergyConsumption(args: EnergyConsumptionInput): Promise<EnergyConsumptionResult>;
13278
+ }
13279
+ }
13280
+
12573
13281
  declare namespace BowmarkProvider_ford {
12574
13282
  // ── Ford — the unit's own declarations, verbatim ──
12575
13283
  interface fordDayHours {
@@ -12996,6 +13704,46 @@ interface HubspotPageForms {
12996
13704
  }
12997
13705
  }
12998
13706
 
13707
+ declare namespace BowmarkProvider_fortressbp {
13708
+ // ── Fortress Building Products — the unit's own declarations, verbatim ──
13709
+ interface fortressbpRecommendation {
13710
+ productName: string | null;
13711
+ imageUrl: string;
13712
+ path: string[];
13713
+ }
13714
+ interface fortressbpNextQuestion {
13715
+ prompt: string;
13716
+ options: string[];
13717
+ }
13718
+ type fortressbpRow =
13719
+ | ({ complete: true } & fortressbpRecommendation)
13720
+ | ({ complete: false } & fortressbpNextQuestion);
13721
+ interface ListProductTypesResult {
13722
+ productTypes: string[];
13723
+ }
13724
+ interface RecommendProductArgs {
13725
+ selections: string[];
13726
+ }
13727
+
13728
+ /**
13729
+ * Fortress Building Products' own Simplifinder product-recommendation tool (fencing, framing,
13730
+ * pergolas), reimplemented from the site's own decision tree.
13731
+ */
13732
+ interface Unit {
13733
+ /**
13734
+ * Reads Simplifinder's own top-level product-type choices (Fencing / Framing / Pergolas) off
13735
+ * the live page.
13736
+ */
13737
+ listProductTypes(): Promise<ListProductTypesResult>;
13738
+
13739
+ /**
13740
+ * Walks Simplifinder's own decision tree with the labels chosen so far and returns either the
13741
+ * recommended product or the next question to ask.
13742
+ */
13743
+ recommendProduct(args: RecommendProductArgs): Promise<fortressbpRow>;
13744
+ }
13745
+ }
13746
+
12999
13747
  declare namespace BowmarkProvider_fourseasonsyachts {
13000
13748
  // ── Four Seasons Yachts — the unit's own declarations, verbatim ──
13001
13749
  interface FourseasonsyachtsVoyage {
@@ -13985,6 +14733,54 @@ interface GlassesusaSearchResult {
13985
14733
  }
13986
14734
  }
13987
14735
 
14736
+ declare namespace BowmarkProvider_gobrightwing {
14737
+ // ── Brightwing — the unit's own declarations, verbatim ──
14738
+ interface JobListing { id: string; title: string; location: string; workType: string; payMin?: number; payMax?: number; payCurrency?: string; postedDate?: string; }
14739
+
14740
+ interface JobDetails extends JobListing { description: string; applyUrl: string; requirements?: string[]; }
14741
+
14742
+ interface SearchJobsArgs { keyword?: string; location?: string; workType?: string; }
14743
+
14744
+ interface GetJobDetailsArgs { jobId: string; }
14745
+
14746
+ /** Search Brightwing's job listings by keyword, location and work type, with live pay ranges. */
14747
+ interface Unit {
14748
+ /**
14749
+ * Search Brightwing's live job listings by keyword, location, and work type. Returns matching
14750
+ * postings with pay ranges.
14751
+ */
14752
+ searchJobs(args: SearchJobsArgs): Promise<JobListing[]>;
14753
+
14754
+ /** Get full details for a specific job posting, including description and apply link. */
14755
+ getJobDetails(args: GetJobDetailsArgs): Promise<JobDetails>;
14756
+ }
14757
+ }
14758
+
14759
+ declare namespace BowmarkProvider_golf_com {
14760
+ // ── GOLF.com Course Finder — the unit's own declarations, verbatim ──
14761
+ interface GolfComCourse { id: string; name: string; city: string; state: string; country: string; courseType: string | null; holes: number | null; startingFee: number | null; }
14762
+ interface GolfComCourseDetail extends GolfComCourse { address: string | null; phone: string | null; bookingUrl: string | null; golfNowUrl: string | null; }
14763
+
14764
+ /**
14765
+ * GOLF.com's Course Finder: search real courses by name, city or ZIP, then read a course's
14766
+ * address, phone and its own tee-time or trip-booking handoff. This provider discovers booking
14767
+ * options; it never submits a reservation.
14768
+ */
14769
+ interface Unit {
14770
+ /**
14771
+ * Searches GOLF.com's Course Finder by course name, city or ZIP. Returns actual course rows,
14772
+ * not location suggestions; pass a returned id to getCourse.
14773
+ */
14774
+ findCourses(query: string): Promise<GolfComCourse[]>;
14775
+
14776
+ /**
14777
+ * Reads one Course Finder record including its address, phone, and the course's own
14778
+ * tee-time/trip booking handoff when published. It does not reserve a tee time.
14779
+ */
14780
+ getCourse(id: string): Promise<GolfComCourseDetail>;
14781
+ }
14782
+ }
14783
+
13988
14784
  declare namespace BowmarkProvider_goloadup {
13989
14785
  // ── LoadUp — the unit's own declarations, verbatim ──
13990
14786
  // LoadUp's OWN shapes — not a capability contract.
@@ -14175,6 +14971,31 @@ interface GooglePriceGraph {
14175
14971
  }
14176
14972
  }
14177
14973
 
14974
+ declare namespace BowmarkProvider_gostoreit {
14975
+ // ── Go Store It — the unit's own declarations, verbatim ──
14976
+ interface GetFacilityUnitsArgs { facilityUrl: string; }
14977
+ interface GoStoreItFacility { name: string; address: string; city: string; state: string; zip: string | null; amenities: string[]; startingPrice: number | null; facilityUrl: string; }
14978
+ interface GoStoreItUnit { size: string; category: string; amenities: string[]; monthlyPrice: number; standardMonthlyPrice: number | null; promotion: string | null; }
14979
+
14980
+ /**
14981
+ * Go Store It — live public self-storage unit inventory, amenity details, and monthly online
14982
+ * prices from a chosen facility.
14983
+ */
14984
+ interface Unit {
14985
+ /**
14986
+ * Searches Go Store It's public facility results by city, state, or ZIP and returns matching
14987
+ * facility URLs, addresses, amenities, and starting prices.
14988
+ */
14989
+ findFacilities(query: string): Promise<GoStoreItFacility[]>;
14990
+
14991
+ /**
14992
+ * Reads a public Go Store It facility page's live rendered inventory, prices, and amenity
14993
+ * details.
14994
+ */
14995
+ getFacilityUnits(args: GetFacilityUnitsArgs): Promise<GoStoreItUnit[]>;
14996
+ }
14997
+ }
14998
+
14178
14999
  declare namespace BowmarkProvider_gotchacovered {
14179
15000
  // ── Gotcha Covered — the unit's own declarations, verbatim ──
14180
15001
  interface GotchaCoveredQuizOption {
@@ -14407,6 +15228,77 @@ type GrandwelcomeQuote =
14407
15228
  }
14408
15229
  }
14409
15230
 
15231
+ declare namespace BowmarkProvider_greatlakesbrewing {
15232
+ // ── Great Lakes Brewing Co. — the unit's own declarations, verbatim ──
15233
+ interface GreatlakesbrewingEGiftCardOptions { presetAmounts: number[]; customAmount: { min: number; max: number; wholeDollarsOnly: boolean }; handlingFee: number; sleevePrice: number; checkoutUrl: string; }
15234
+ interface PriceGreatlakesbrewingEGiftCardArgs { amount: number; sleeve?: boolean; }
15235
+ interface GreatlakesbrewingEGiftCardPrice extends GreatlakesbrewingEGiftCardOptions { amount: number; sleeve: boolean; total: number; }
15236
+
15237
+ /**
15238
+ * Great Lakes Brewing Co.'s live eGift-card configuration: current preset/custom
15239
+ * denominations, gift-card-only handling fee, optional sleeve price, and a read-only total
15240
+ * before checkout.
15241
+ */
15242
+ interface Unit {
15243
+ /**
15244
+ * Reads Great Lakes Brewing Co.'s live public eGift-card form: its preset denominations,
15245
+ * permitted custom-amount range, gift-card-only handling fee, optional sleeve price and the
15246
+ * official checkout handoff URL.
15247
+ */
15248
+ getEGiftCardOptions(): Promise<GreatlakesbrewingEGiftCardOptions>;
15249
+
15250
+ /**
15251
+ * Calculates a Great Lakes Brewing Co. eGift-card total from a whole-dollar card value and
15252
+ * optional sleeve, using the live public form's permitted range and gift-card-only fees.
15253
+ * Returns the official eGift-card page for the shopper to complete checkout themselves; never
15254
+ * creates a cart or order.
15255
+ */
15256
+ priceEGiftCard(args: PriceGreatlakesbrewingEGiftCardArgs): Promise<GreatlakesbrewingEGiftCardPrice>;
15257
+ }
15258
+ }
15259
+
15260
+ declare namespace BowmarkProvider_greatlakesdentaltech {
15261
+ // ── Great Lakes Dental Technologies — the unit's own declarations, verbatim ──
15262
+ interface GldtProductSummary {
15263
+ sku: string;
15264
+ name: string;
15265
+ price: number;
15266
+ category: string | null;
15267
+ url: string;
15268
+ }
15269
+ interface GldtSearchResult {
15270
+ products: GldtProductSummary[];
15271
+ total: number;
15272
+ }
15273
+ interface GldtProduct {
15274
+ sku: string;
15275
+ name: string;
15276
+ price: number;
15277
+ inStock: boolean;
15278
+ stockMessage: string | null;
15279
+ url: string;
15280
+ }
15281
+
15282
+ /**
15283
+ * Great Lakes Dental Technologies' own orthodontic/dental catalog — searches ~4,000 SKUs and
15284
+ * reads real, live price and stock straight off their storefront.
15285
+ */
15286
+ interface Unit {
15287
+ /**
15288
+ * Searches Great Lakes Dental Tech's own storefront catalog for what a buyer would type
15289
+ * ("intraoral scanner", "sleep appliance") and returns matching products with the URL
15290
+ * getProduct takes.
15291
+ */
15292
+ search(query: string, limit?: number): Promise<GldtSearchResult>;
15293
+
15294
+ /**
15295
+ * Reads one product's real, current price and live stock status straight off its own page,
15296
+ * plus the page's own URL — where the real Add to Cart action lives.
15297
+ */
15298
+ getProduct(url: string): Promise<GldtProduct>;
15299
+ }
15300
+ }
15301
+
14410
15302
  declare namespace BowmarkProvider_hamptonwaterwine {
14411
15303
  // ── Hampton Water Wine Co. — the unit's own declarations, verbatim ──
14412
15304
  interface HamptonWaterRetailer {
@@ -17583,6 +18475,35 @@ interface IvoryHomesSearchFilters {
17583
18475
  }
17584
18476
  }
17585
18477
 
18478
+ declare namespace BowmarkProvider_jasmine_dilucci {
18479
+ // ── Jasmine DiLucci Life Coaching — the unit's own declarations, verbatim ──
18480
+ interface FormField {
18481
+ name?: string;
18482
+ type?: string;
18483
+ label?: string;
18484
+ step?: string;
18485
+ options?: string[];
18486
+ }
18487
+
18488
+ interface ApplicationFormSchema {
18489
+ step?: string;
18490
+ fields: FormField[];
18491
+ }
18492
+
18493
+ interface GetApplicationFormSchemaArgs {
18494
+ includeOptions?: boolean;
18495
+ }
18496
+
18497
+ /** Extracts application form structure from Jasmine DiLucci's coaching application funnel. */
18498
+ interface Unit {
18499
+ /**
18500
+ * Returns the structure of the application funnel's DQ step: field names, labels, and step
18501
+ * markers.
18502
+ */
18503
+ getApplicationFormSchema(args?: { includeOptions?: boolean }): Promise<ApplicationFormSchema>;
18504
+ }
18505
+ }
18506
+
17586
18507
  declare namespace BowmarkProvider_jennikayne {
17587
18508
  // ── Jenni Kayne — the unit's own declarations, verbatim ──
17588
18509
  interface GiftCardDenomination {
@@ -18422,6 +19343,30 @@ interface KuiuCheckoutLink {
18422
19343
  }
18423
19344
  }
18424
19345
 
19346
+ declare namespace BowmarkProvider_kwworldwide {
19347
+ // ── KW Worldwide — the unit's own declarations, verbatim ──
19348
+ interface KwworldwideHubspotFormReference {
19349
+ pageUrl: string;
19350
+ formUrl: string;
19351
+ portalId: string;
19352
+ guid: string;
19353
+ }
19354
+
19355
+ /**
19356
+ * Recovers the HubSpot portalId/formId pair kwworldwide.com's contact page loads client-side
19357
+ * after hydration — for forms_hubspot_com.getFormDefinition, since the page's own HTML never
19358
+ * carries them.
19359
+ */
19360
+ interface Unit {
19361
+ /**
19362
+ * Fetches a kwworldwide.com page (defaults to the contact page) and recovers the HubSpot
19363
+ * portalId/formId pair its client-side embed loads after hydration — the page's own HTML never
19364
+ * carries them — as a forms.hubspot.com URL ready for forms_hubspot_com.getFormDefinition.
19365
+ */
19366
+ findContactForm(pageUrl?: string): Promise<KwworldwideHubspotFormReference>;
19367
+ }
19368
+ }
19369
+
18425
19370
  declare namespace BowmarkProvider_labcorp {
18426
19371
  // ── Labcorp — the unit's own declarations, verbatim ──
18427
19372
  interface LabcorpTestSummary {
@@ -18464,6 +19409,42 @@ interface LabcorpTestDetail extends LabcorpTestSummary {
18464
19409
  }
18465
19410
  }
18466
19411
 
19412
+ declare namespace BowmarkProvider_landmarkhw_com {
19413
+ // ── Landmark Home Warranty — the unit's own declarations, verbatim ──
19414
+ interface LandmarkhwComOrderState {
19415
+ code: string;
19416
+ name: string;
19417
+ }
19418
+ interface LandmarkhwComPropertyType {
19419
+ id: string;
19420
+ name: string;
19421
+ units: number;
19422
+ }
19423
+ interface LandmarkhwComOrderOptionsArgs {
19424
+ stateCode: string;
19425
+ }
19426
+ interface LandmarkhwComOrderOptions {
19427
+ state: LandmarkhwComOrderState;
19428
+ propertyTypes: LandmarkhwComPropertyType[];
19429
+ orderUrl: string;
19430
+ }
19431
+
19432
+ /**
19433
+ * Landmark Home Warranty's public order-form choices: market states and property types, read
19434
+ * from server-rendered bootstrap data.
19435
+ */
19436
+ interface Unit {
19437
+ /** Lists the states where Landmark Home Warranty's public order form currently offers coverage. */
19438
+ listOrderStates(): Promise<LandmarkhwComOrderState[]>;
19439
+
19440
+ /**
19441
+ * Returns the property-type choices for a Landmark Home Warranty order in one supported state,
19442
+ * before any quote or order is submitted.
19443
+ */
19444
+ getOrderFormOptions(args: LandmarkhwComOrderOptionsArgs): Promise<LandmarkhwComOrderOptions>;
19445
+ }
19446
+ }
19447
+
18467
19448
  declare namespace BowmarkProvider_lasikplus {
18468
19449
  // ── LasikPlus — the unit's own declarations, verbatim ──
18469
19450
  interface LasikPlusCenter {
@@ -21635,6 +22616,76 @@ interface MuzeVisitingHours {
21635
22616
  }
21636
22617
  }
21637
22618
 
22619
+ declare namespace BowmarkProvider_my_auroramedicalspa_com {
22620
+ // ── Aurora Medical Spa — the unit's own declarations, verbatim ──
22621
+ // Aurora Medical Spa's OWN shapes — not a capability contract.
22622
+
22623
+ interface AuroraStoreHours { weekday: number; open: string; close: string }
22624
+
22625
+ interface AuroraLocation {
22626
+ locationId: number; // the id getServiceCategories/getServices/getProviders take
22627
+ name: string; fullName: string;
22628
+ address: string; city: string; state: string; zip: string;
22629
+ phone: string; email: string;
22630
+ lat: number | null; lng: number | null;
22631
+ storeHours: AuroraStoreHours[];
22632
+ }
22633
+
22634
+ interface AuroraLocationSearchFilters { state?: string; city?: string }
22635
+
22636
+ interface AuroraServiceCategory {
22637
+ categoryId: number; // the id getServices' categoryId takes
22638
+ name: string;
22639
+ }
22640
+
22641
+ interface AuroraService {
22642
+ serviceId: number; // the id getProviders' serviceId takes
22643
+ name: string;
22644
+ priceFrom: number; // the site's own starting price, in dollars
22645
+ durationMinutes: number;
22646
+ description: string;
22647
+ }
22648
+
22649
+ interface AuroraProvider {
22650
+ providerId: number; // -1 is the site's own "First Available" option
22651
+ name: string;
22652
+ title: string | null;
22653
+ }
22654
+
22655
+ /**
22656
+ * Reads Aurora Medical Spa's own live booking options — its locations, the treatment
22657
+ * categories and services each one offers online with starting price and duration, and which
22658
+ * providers can perform a given service — off the site's own Korvue booking-platform REST API,
22659
+ * the way its booking page reads the same data client-side.
22660
+ */
22661
+ interface Unit {
22662
+ /**
22663
+ * Lists every Aurora Medical Spa location (9 today), optionally narrowed by US state or city.
22664
+ * Each row carries the locationId getServiceCategories/getServices/getProviders take, plus
22665
+ * address, phone, email, lat/lng and store hours.
22666
+ */
22667
+ listLocations(filters?: AuroraLocationSearchFilters): Promise<AuroraLocation[]>;
22668
+
22669
+ /**
22670
+ * Lists the treatment categories one location offers online (Botox, Injectable Treatments,
22671
+ * HydraFacial, Kybella, …). Each row carries the categoryId getServices takes.
22672
+ */
22673
+ getServiceCategories(locationId: number): Promise<AuroraServiceCategory[]>;
22674
+
22675
+ /**
22676
+ * Reads the live bookable services in one category at one location — name, starting price,
22677
+ * duration and description. Each row carries the serviceId getProviders takes.
22678
+ */
22679
+ getServices(locationId: number, categoryId: number): Promise<AuroraService[]>;
22680
+
22681
+ /**
22682
+ * Lists the providers who can perform one service at one location, including the site's own -1
22683
+ * 'First Available' option.
22684
+ */
22685
+ getProviders(locationId: number, serviceId: number): Promise<AuroraProvider[]>;
22686
+ }
22687
+ }
22688
+
21638
22689
  declare namespace BowmarkProvider_myollie {
21639
22690
  // ── Ollie — the unit's own declarations, verbatim ──
21640
22691
  interface OllieMealPlanOption {
@@ -22809,6 +23860,25 @@ interface AssembledApplication {
22809
23860
  }
22810
23861
  }
22811
23862
 
23863
+ declare namespace BowmarkProvider_pacificlifestylehomes {
23864
+ // ── Pacific Lifestyle Homes — the unit's own declarations, verbatim ──
23865
+ interface PacificLifestyleHomesSearchArgs { city?: "Camas" | "Ridgefield" | "Vancouver"; minBedrooms?: number; minBathrooms?: number; minPrice?: number; maxPrice?: number; }
23866
+ interface PacificLifestyleHomesListing { id: string; address: string; city: string; state: string; price: number; bedrooms: number; bathrooms: number; sqft: number; availability: string; url: string; }
23867
+
23868
+ /**
23869
+ * Searches Pacific Lifestyle Homes' current Southwest Washington available-home inventory;
23870
+ * prefer it when live home price, availability, or a listing handoff matters.
23871
+ */
23872
+ interface Unit {
23873
+ /**
23874
+ * Searches Pacific Lifestyle Homes' live available-home listings in Camas, Ridgefield, or
23875
+ * Vancouver, Washington. Returns current price, beds, baths, sqft, availability, and the
23876
+ * detail-page handoff URL.
23877
+ */
23878
+ searchAvailableHomes(args?: PacificLifestyleHomesSearchArgs): Promise<PacificLifestyleHomesListing[]>;
23879
+ }
23880
+ }
23881
+
22812
23882
  declare namespace BowmarkProvider_paypal {
22813
23883
  // ── PayPal — the unit's own declarations, verbatim ──
22814
23884
  interface PaypalEstimateFeeArgs {
@@ -23472,6 +24542,31 @@ interface polymarketMarket {
23472
24542
  }
23473
24543
  }
23474
24544
 
24545
+ declare namespace BowmarkProvider_polytex {
24546
+ // ── Poly-Tex — the unit's own declarations, verbatim ──
24547
+ interface PolytexProduct { name: string; url: string; price: number | null; }
24548
+ interface PolytexOption { name: string; values: string[]; }
24549
+ interface PolytexProductDetail extends PolytexProduct { sku: string | null; options: PolytexOption[]; availability: string | null; checkoutUrl: string; }
24550
+
24551
+ /**
24552
+ * Poly-Tex's live greenhouse and greenhouse-hardware storefront: find current products and
24553
+ * prices, then read selectable options and checkout handoff.
24554
+ */
24555
+ interface Unit {
24556
+ /**
24557
+ * Searches Poly-Tex's live greenhouse catalog by product words, returning current product
24558
+ * names, prices, and URLs.
24559
+ */
24560
+ searchProducts(query: string): Promise<PolytexProduct[]>;
24561
+
24562
+ /**
24563
+ * Reads one Poly-Tex product's current price, selectable size or bundle options, shipping
24564
+ * availability, and checkout handoff URL.
24565
+ */
24566
+ getProduct(url: string): Promise<PolytexProductDetail>;
24567
+ }
24568
+ }
24569
+
23475
24570
  declare namespace BowmarkProvider_poshmark {
23476
24571
  // ── Poshmark — the unit's own declarations, verbatim ──
23477
24572
  interface PoshmarkSupportArticle {
@@ -25076,6 +26171,52 @@ interface RitaniPriceResult {
25076
26171
  }
25077
26172
  }
25078
26173
 
26174
+ declare namespace BowmarkProvider_rivian {
26175
+ // ── Rivian — the unit's own declarations, verbatim ──
26176
+ type RivianLeaseTrim = "premium";
26177
+ type RivianLeaseTermMonths = 24 | 36;
26178
+ type RivianLeaseAnnualMileage = 10000 | 12000 | 15000;
26179
+ type RivianLeaseCreditTier = "excellent" | "veryGood" | "good";
26180
+
26181
+ interface RivianLeaseEstimateArgs {
26182
+ trim: RivianLeaseTrim;
26183
+ termMonths: RivianLeaseTermMonths;
26184
+ annualMileage: RivianLeaseAnnualMileage;
26185
+ creditTier: RivianLeaseCreditTier;
26186
+ downPayment: number;
26187
+ }
26188
+
26189
+ interface RivianLeaseEstimate {
26190
+ model: "R1T";
26191
+ trim: RivianLeaseTrim;
26192
+ vehiclePrice: number;
26193
+ destinationFee: number;
26194
+ acquisitionFee: number;
26195
+ monthlyPayment: number;
26196
+ downPayment: number;
26197
+ amountDueAtSigning: number;
26198
+ residualValue: number;
26199
+ termMonths: number;
26200
+ annualMileage: number;
26201
+ isLeaseEligible: boolean;
26202
+ }
26203
+
26204
+ /**
26205
+ * Prices a real Rivian R1T lease through rivian.com's own R1 Shop payment-estimate calculator
26206
+ * — monthly payment, amount due at signing, acquisition fee and residual value for a chosen
26207
+ * term, mileage allowance, credit tier and down payment.
26208
+ */
26209
+ interface Unit {
26210
+ /**
26211
+ * Prices a real Rivian R1T Premium lease — monthly payment, amount due at signing, acquisition
26212
+ * fee and residual value — for a chosen term (24 or 36 months), annual mileage allowance
26213
+ * (10,000/12,000/15,000), credit tier and cash down payment, through rivian.com's own R1 Shop
26214
+ * payment-estimate calculator. Only the Premium trim has a verified option combo today.
26215
+ */
26216
+ estimateLeasePayment(args: RivianLeaseEstimateArgs): Promise<RivianLeaseEstimate>;
26217
+ }
26218
+ }
26219
+
25079
26220
  declare namespace BowmarkProvider_roofmaxx {
25080
26221
  // ── Roof Maxx — the unit's own declarations, verbatim ──
25081
26222
  interface RoofmaxxCalculatorSettings {
@@ -27110,6 +28251,32 @@ interface SunlightenPriceListing {
27110
28251
  }
27111
28252
  }
27112
28253
 
28254
+ declare namespace BowmarkProvider_tagtrans_net {
28255
+ // ── TAG Trans — the unit's own declarations, verbatim ──
28256
+ interface TagtransShipmentRateField { id: string; label: string; required: boolean; }
28257
+ interface TagtransShipmentRateForm { formUrl: string; recipient: string; subject: string; fields: TagtransShipmentRateField[]; services: string[]; }
28258
+ interface CreateTagtransShipmentRateEmailArgs { name: string; phone: string; email: string; service: string; company?: string; shipFrom?: string; shipTo?: string; desiredShippingDate?: string; desiredDeliveryDate?: string; details?: string; }
28259
+ interface TagtransShipmentRateEmail { mailtoUrl: string; recipient: string; subject: string; body: string; }
28260
+
28261
+ /**
28262
+ * TAG Trans's public freight shipment-rate request form: its current fields and services, plus
28263
+ * a prefilled email handoff the site itself uses.
28264
+ */
28265
+ interface Unit {
28266
+ /**
28267
+ * Returns TAG Trans's current public shipment-rate request fields, service choices, and the
28268
+ * page URL without sending a request.
28269
+ */
28270
+ getShipmentRateForm(): Promise<TagtransShipmentRateForm>;
28271
+
28272
+ /**
28273
+ * Builds TAG Trans's own prefilled mailto handoff for a freight shipment-rate request; it does
28274
+ * not send the email.
28275
+ */
28276
+ createShipmentRateEmail(args: CreateTagtransShipmentRateEmailArgs): Promise<TagtransShipmentRateEmail>;
28277
+ }
28278
+ }
28279
+
27113
28280
  declare namespace BowmarkProvider_tamarackidaho {
27114
28281
  // ── Tamarack Resort — the unit's own declarations, verbatim ──
27115
28282
  interface tamarackidahoSearchArgs {
@@ -28353,6 +29520,41 @@ interface topviewtixPackageSummary {
28353
29520
  }
28354
29521
  }
28355
29522
 
29523
+ declare namespace BowmarkProvider_totalplastics {
29524
+ // ── Total Plastics — the unit's own declarations, verbatim ──
29525
+ interface TotalplasticsQuoteFormField {
29526
+ id: string;
29527
+ type: string;
29528
+ label: string;
29529
+ required: boolean;
29530
+ options: string[];
29531
+ }
29532
+ interface TotalplasticsQuoteFormFields {
29533
+ title: string;
29534
+ formUrl: string;
29535
+ fields: TotalplasticsQuoteFormField[];
29536
+ }
29537
+
29538
+ /**
29539
+ * Total Plastics' own "Request a Quote" form — a POWR widget embedded on /contact-us/, not on
29540
+ * /quote/ — read directly off POWR's server-rendered config.
29541
+ */
29542
+ interface Unit {
29543
+ /**
29544
+ * Reads Total Plastics' live "Request a Quote" form and returns its field schema — label,
29545
+ * type, required, and options per field.
29546
+ */
29547
+ getQuoteFormFields(): Promise<TotalplasticsQuoteFormFields>;
29548
+
29549
+ /**
29550
+ * Reads one named field off the live "Request a Quote" form — e.g. "Material Type" or "Annual
29551
+ * Plastics Spend" — and returns its option list, so a caller can pick a valid value before
29552
+ * submitting.
29553
+ */
29554
+ getQuoteFormFieldOptions(label: string): Promise<TotalplasticsQuoteFormField>;
29555
+ }
29556
+ }
29557
+
28356
29558
  declare namespace BowmarkProvider_travelinsured {
28357
29559
  // ── Travel Insured International — the unit's own declarations, verbatim ──
28358
29560
  interface TravelinsuredDestination {
@@ -28648,6 +29850,74 @@ interface TrophysignaturehomesComparison {
28648
29850
  }
28649
29851
  }
28650
29852
 
29853
+ declare namespace BowmarkProvider_tryalma_com {
29854
+ // ── Alma — US immigration legal services — the unit's own declarations, verbatim ──
29855
+ interface SearchResult {
29856
+ title: string;
29857
+ url: string;
29858
+ summary?: string;
29859
+ }
29860
+
29861
+ interface SearchResponse {
29862
+ results: SearchResult[];
29863
+ warnings: string[];
29864
+ }
29865
+
29866
+ interface Page {
29867
+ url: string;
29868
+ title: string;
29869
+ category: string;
29870
+ }
29871
+
29872
+ interface ListPagesResponse {
29873
+ pages: Page[];
29874
+ warnings: string[];
29875
+ }
29876
+
29877
+ interface SearchArgs {
29878
+ query: string;
29879
+ }
29880
+
29881
+ /** Search Alma's immigration legal services content and site navigation. */
29882
+ interface Unit {
29883
+ /** Search Alma's content, including pages, resources, and team member profiles. */
29884
+ search(query: string): Promise<SearchResponse>;
29885
+
29886
+ /** List all pages and sections available on the Alma website by category. */
29887
+ listPages(): Promise<ListPagesResponse>;
29888
+ }
29889
+ }
29890
+
29891
+ declare namespace BowmarkProvider_tweethunter {
29892
+ // ── Tweet Hunter — the unit's own declarations, verbatim ──
29893
+ interface TweetHunterFeature {
29894
+ name: string;
29895
+ description: string;
29896
+ }
29897
+
29898
+ interface TweetHunterFeatureCategory {
29899
+ name: string;
29900
+ }
29901
+
29902
+ /**
29903
+ * Publicly advertised Tweet Hunter features for writing, scheduling, analyzing, and automating
29904
+ * an X account.
29905
+ */
29906
+ interface Unit {
29907
+ /**
29908
+ * Lists Tweet Hunter's publicly advertised X-account features, including scheduling,
29909
+ * analytics, automation, and content-writing tools.
29910
+ */
29911
+ listFeatures(): Promise<TweetHunterFeature[]>;
29912
+
29913
+ /**
29914
+ * Lists Tweet Hunter's public feature categories: content creation, X analytics and growth,
29915
+ * and automation.
29916
+ */
29917
+ listFeatureCategories(): Promise<TweetHunterFeatureCategory[]>;
29918
+ }
29919
+ }
29920
+
28651
29921
  declare namespace BowmarkProvider_twiddy {
28652
29922
  // ── Twiddy & Company Realtors — the unit's own declarations, verbatim ──
28653
29923
  interface TwiddyRentalRow {
@@ -28842,6 +30112,61 @@ interface UlrichPriceResult {
28842
30112
  }
28843
30113
  }
28844
30114
 
30115
+ declare namespace BowmarkProvider_upkeepstl_com {
30116
+ // ── UPKEEP Home Maintenance Plans — the unit's own declarations, verbatim ──
30117
+ interface UpkeepstlPricedOption {
30118
+ id: string;
30119
+ name: string;
30120
+ priceUsd: number;
30121
+ }
30122
+ interface UpkeepstlAddOn extends UpkeepstlPricedOption {
30123
+ kind: "checkbox" | "quantity";
30124
+ maxQuantity?: number;
30125
+ }
30126
+ interface UpkeepstlWarrantyTerm {
30127
+ id: string;
30128
+ years: number;
30129
+ imageUrl: string;
30130
+ }
30131
+ interface UpkeepstlPlanBuilder {
30132
+ homeTypes: UpkeepstlPricedOption[];
30133
+ plans: UpkeepstlPricedOption[];
30134
+ upgrades: UpkeepstlPricedOption[];
30135
+ addOns: UpkeepstlAddOn[];
30136
+ warrantyTerms: UpkeepstlWarrantyTerm[];
30137
+ paymentOptions: { id: string; name: string }[];
30138
+ formUrl: string;
30139
+ }
30140
+ interface UpkeepstlEstimate {
30141
+ termTotalUsd: number;
30142
+ perYearUsd: number;
30143
+ warrantyYears: number;
30144
+ planId: string;
30145
+ homeTypeId: string;
30146
+ upgradeId: string;
30147
+ addOnIds: string[];
30148
+ applianceQuantity: number;
30149
+ }
30150
+
30151
+ /**
30152
+ * Reads UPKEEP STL's home-maintenance-plan builder — plan tiers, home types, add-ons, warranty
30153
+ * terms and their prices — and estimates a plan's total cost, with no submission.
30154
+ */
30155
+ interface Unit {
30156
+ /**
30157
+ * Reads UPKEEP's public plan-builder schema: home types, plan tiers, the upgrade tier,
30158
+ * itemized add-ons, warranty terms and payment options, each carrying the site's own price.
30159
+ */
30160
+ getPlanBuilder(): Promise<UpkeepstlPlanBuilder>;
30161
+
30162
+ /**
30163
+ * Computes the total contract price and per-year price for one plan selection, using ids from
30164
+ * getPlanBuilder() and the site's own published prices. No submission, no identity.
30165
+ */
30166
+ estimatePlanCost(args: { planId: string; homeTypeId: string; warrantyYears: number; upgradeId?: string; addOnIds?: string[]; applianceQuantity?: number }): Promise<UpkeepstlEstimate>;
30167
+ }
30168
+ }
30169
+
28845
30170
  declare namespace BowmarkProvider_ups {
28846
30171
  // ── UPS — the unit's own declarations, verbatim ──
28847
30172
  interface upsRatedShipment {
@@ -29705,6 +31030,48 @@ interface WaterfurnaceSavingsEstimate {
29705
31030
  }
29706
31031
  }
29707
31032
 
31033
+ declare namespace BowmarkProvider_wearehirschfeld {
31034
+ // ── Hirschfeld — the unit's own declarations, verbatim ──
31035
+ // Hirschfeld's OWN shapes — not a capability contract.
31036
+
31037
+ interface WearehirschfeldSitemapPage {
31038
+ url: string;
31039
+ lastmod: string | null;
31040
+ }
31041
+
31042
+ interface WearehirschfeldContactField {
31043
+ name: string;
31044
+ label: string;
31045
+ type: string;
31046
+ required: boolean;
31047
+ }
31048
+
31049
+ interface WearehirschfeldContactForm {
31050
+ url: string;
31051
+ fields: WearehirschfeldContactField[];
31052
+ }
31053
+
31054
+ /**
31055
+ * Hirschfeld's own page index (page-sitemap.xml) and its Connect contact form's real fields —
31056
+ * name, label, type and required — parsed from the site's server-rendered markup rather than a
31057
+ * caller guessing contact-page paths.
31058
+ */
31059
+ interface Unit {
31060
+ /**
31061
+ * Lists every page wearehirschfeld.com's own page-sitemap.xml publishes, each with its own url
31062
+ * and last-modified date — use this to find the connect/contact page or any other page without
31063
+ * guessing a path.
31064
+ */
31065
+ listPages(): Promise<WearehirschfeldSitemapPage[]>;
31066
+
31067
+ /**
31068
+ * Reads Hirschfeld's contact form (wearehirschfeld.com/connect/ by default) and returns its
31069
+ * real fields — name, label, input type and whether it's required.
31070
+ */
31071
+ getContactForm(url?: string): Promise<WearehirschfeldContactForm>;
31072
+ }
31073
+ }
31074
+
29708
31075
  declare namespace BowmarkProvider_wellfound {
29709
31076
  // ── Wellfound — the unit's own declarations, verbatim ──
29710
31077
  interface wellfoundRow {
@@ -31032,9 +32399,11 @@ interface BowmarkProviders {
31032
32399
  aa: BowmarkProvider_aa.Unit;
31033
32400
  aauto: BowmarkProvider_aauto.Unit;
31034
32401
  abercrombie: BowmarkProvider_abercrombie.Unit;
32402
+ abqplumb: BowmarkProvider_abqplumb.Unit;
31035
32403
  acerentacar: BowmarkProvider_acerentacar.Unit;
31036
32404
  achosahw: BowmarkProvider_achosahw.Unit;
31037
32405
  acqualinaresort: BowmarkProvider_acqualinaresort.Unit;
32406
+ ai_engineer: BowmarkProvider_ai_engineer.Unit;
31038
32407
  aiper: BowmarkProvider_aiper.Unit;
31039
32408
  ajmadison: BowmarkProvider_ajmadison.Unit;
31040
32409
  allied: BowmarkProvider_allied.Unit;
@@ -31057,10 +32426,12 @@ interface BowmarkProviders {
31057
32426
  artpix3d: BowmarkProvider_artpix3d.Unit;
31058
32427
  ashleyfurniture: BowmarkProvider_ashleyfurniture.Unit;
31059
32428
  asppoolco: BowmarkProvider_asppoolco.Unit;
32429
+ astoundgroup: BowmarkProvider_astoundgroup.Unit;
31060
32430
  atlasoceanvoyages: BowmarkProvider_atlasoceanvoyages.Unit;
31061
32431
  atlasseniorliving: BowmarkProvider_atlasseniorliving.Unit;
31062
32432
  audibel: BowmarkProvider_audibel.Unit;
31063
32433
  autocamp: BowmarkProvider_autocamp.Unit;
32434
+ avalonmalibu_com: BowmarkProvider_avalonmalibu_com.Unit;
31064
32435
  avantstay: BowmarkProvider_avantstay.Unit;
31065
32436
  avis: BowmarkProvider_avis.Unit;
31066
32437
  ayreshotels: BowmarkProvider_ayreshotels.Unit;
@@ -31083,6 +32454,7 @@ interface BowmarkProviders {
31083
32454
  bigjoeforklifts: BowmarkProvider_bigjoeforklifts.Unit;
31084
32455
  bigrentz: BowmarkProvider_bigrentz.Unit;
31085
32456
  bing: BowmarkProvider_bing.Unit;
32457
+ bionicpo: BowmarkProvider_bionicpo.Unit;
31086
32458
  bishops: BowmarkProvider_bishops.Unit;
31087
32459
  blackstoneproducts: BowmarkProvider_blackstoneproducts.Unit;
31088
32460
  blenderseyewear: BowmarkProvider_blenderseyewear.Unit;
@@ -31097,11 +32469,14 @@ interface BowmarkProviders {
31097
32469
  boydsleep: BowmarkProvider_boydsleep.Unit;
31098
32470
  brius: BowmarkProvider_brius.Unit;
31099
32471
  brixton: BowmarkProvider_brixton.Unit;
32472
+ builder_strucsure_com: BowmarkProvider_builder_strucsure_com.Unit;
31100
32473
  bulletproof: BowmarkProvider_bulletproof.Unit;
31101
32474
  bungalow: BowmarkProvider_bungalow.Unit;
31102
32475
  bykoket: BowmarkProvider_bykoket.Unit;
31103
32476
  byltbasics: BowmarkProvider_byltbasics.Unit;
31104
32477
  cabinsforyou: BowmarkProvider_cabinsforyou.Unit;
32478
+ cal_com: BowmarkProvider_cal_com.Unit;
32479
+ calendly: BowmarkProvider_calendly.Unit;
31105
32480
  caliberhealth: BowmarkProvider_caliberhealth.Unit;
31106
32481
  califloors: BowmarkProvider_califloors.Unit;
31107
32482
  camelcamelcamel: BowmarkProvider_camelcamelcamel.Unit;
@@ -31138,7 +32513,10 @@ interface BowmarkProviders {
31138
32513
  cloudflare: BowmarkProvider_cloudflare.Unit;
31139
32514
  clubchampion: BowmarkProvider_clubchampion.Unit;
31140
32515
  code_claude_com: BowmarkProvider_code_claude_com.Unit;
32516
+ compass_living: BowmarkProvider_compass_living.Unit;
32517
+ completehomewarranty_com: BowmarkProvider_completehomewarranty_com.Unit;
31141
32518
  consultnet: BowmarkProvider_consultnet.Unit;
32519
+ costco: BowmarkProvider_costco.Unit;
31142
32520
  couponfollow: BowmarkProvider_couponfollow.Unit;
31143
32521
  credibly_com: BowmarkProvider_credibly_com.Unit;
31144
32522
  cruiselakegeneva: BowmarkProvider_cruiselakegeneva.Unit;
@@ -31177,16 +32555,21 @@ interface BowmarkProviders {
31177
32555
  evolvemedspa: BowmarkProvider_evolvemedspa.Unit;
31178
32556
  executivehomecare: BowmarkProvider_executivehomecare.Unit;
31179
32557
  extraspace: BowmarkProvider_extraspace.Unit;
32558
+ faceforwardaesthetics: BowmarkProvider_faceforwardaesthetics.Unit;
31180
32559
  facerealityskincare: BowmarkProvider_facerealityskincare.Unit;
32560
+ fbsappliance: BowmarkProvider_fbsappliance.Unit;
31181
32561
  fieldstonehomes: BowmarkProvider_fieldstonehomes.Unit;
31182
32562
  firstamericahomes: BowmarkProvider_firstamericahomes.Unit;
31183
32563
  firstdibs: BowmarkProvider_firstdibs.Unit;
32564
+ fitness1440: BowmarkProvider_fitness1440.Unit;
31184
32565
  fivebelow: BowmarkProvider_fivebelow.Unit;
31185
32566
  fivestarbathsolutions: BowmarkProvider_fivestarbathsolutions.Unit;
31186
32567
  flightradar24: BowmarkProvider_flightradar24.Unit;
32568
+ fluencecorp: BowmarkProvider_fluencecorp.Unit;
31187
32569
  ford: BowmarkProvider_ford.Unit;
31188
32570
  formax: BowmarkProvider_formax.Unit;
31189
32571
  forms_hubspot_com: BowmarkProvider_forms_hubspot_com.Unit;
32572
+ fortressbp: BowmarkProvider_fortressbp.Unit;
31190
32573
  fourseasonsyachts: BowmarkProvider_fourseasonsyachts.Unit;
31191
32574
  framebridge: BowmarkProvider_framebridge.Unit;
31192
32575
  fred: BowmarkProvider_fred.Unit;
@@ -31198,12 +32581,17 @@ interface BowmarkProviders {
31198
32581
  github: BowmarkProvider_github.Unit;
31199
32582
  glama: BowmarkProvider_glama.Unit;
31200
32583
  glassesusa: BowmarkProvider_glassesusa.Unit;
32584
+ gobrightwing: BowmarkProvider_gobrightwing.Unit;
32585
+ golf_com: BowmarkProvider_golf_com.Unit;
31201
32586
  goloadup: BowmarkProvider_goloadup.Unit;
31202
32587
  goodway: BowmarkProvider_goodway.Unit;
31203
32588
  google_flights: BowmarkProvider_google_flights.Unit;
32589
+ gostoreit: BowmarkProvider_gostoreit.Unit;
31204
32590
  gotchacovered: BowmarkProvider_gotchacovered.Unit;
31205
32591
  grainger: BowmarkProvider_grainger.Unit;
31206
32592
  grandwelcome: BowmarkProvider_grandwelcome.Unit;
32593
+ greatlakesbrewing: BowmarkProvider_greatlakesbrewing.Unit;
32594
+ greatlakesdentaltech: BowmarkProvider_greatlakesdentaltech.Unit;
31207
32595
  hamptonwaterwine: BowmarkProvider_hamptonwaterwine.Unit;
31208
32596
  handypro: BowmarkProvider_handypro.Unit;
31209
32597
  hansons: BowmarkProvider_hansons.Unit;
@@ -31233,6 +32621,7 @@ interface BowmarkProviders {
31233
32621
  islllc: BowmarkProvider_islllc.Unit;
31234
32622
  istanbulkart: BowmarkProvider_istanbulkart.Unit;
31235
32623
  ivoryhomes: BowmarkProvider_ivoryhomes.Unit;
32624
+ jasmine_dilucci: BowmarkProvider_jasmine_dilucci.Unit;
31236
32625
  jennikayne: BowmarkProvider_jennikayne.Unit;
31237
32626
  joybird: BowmarkProvider_joybird.Unit;
31238
32627
  joycefactorydirect: BowmarkProvider_joycefactorydirect.Unit;
@@ -31247,7 +32636,9 @@ interface BowmarkProviders {
31247
32636
  kitchentuneup: BowmarkProvider_kitchentuneup.Unit;
31248
32637
  kompan: BowmarkProvider_kompan.Unit;
31249
32638
  kuiu: BowmarkProvider_kuiu.Unit;
32639
+ kwworldwide: BowmarkProvider_kwworldwide.Unit;
31250
32640
  labcorp: BowmarkProvider_labcorp.Unit;
32641
+ landmarkhw_com: BowmarkProvider_landmarkhw_com.Unit;
31251
32642
  lasikplus: BowmarkProvider_lasikplus.Unit;
31252
32643
  legacyhomesal: BowmarkProvider_legacyhomesal.Unit;
31253
32644
  linkedin: BowmarkProvider_linkedin.Unit;
@@ -31282,6 +32673,7 @@ interface BowmarkProviders {
31282
32673
  momondo: BowmarkProvider_momondo.Unit;
31283
32674
  mossyoak: BowmarkProvider_mossyoak.Unit;
31284
32675
  muze_gov_tr: BowmarkProvider_muze_gov_tr.Unit;
32676
+ my_auroramedicalspa_com: BowmarkProvider_my_auroramedicalspa_com.Unit;
31285
32677
  myollie: BowmarkProvider_myollie.Unit;
31286
32678
  naic: BowmarkProvider_naic.Unit;
31287
32679
  namecheap: BowmarkProvider_namecheap.Unit;
@@ -31300,6 +32692,7 @@ interface BowmarkProviders {
31300
32692
  outdoorresearch: BowmarkProvider_outdoorresearch.Unit;
31301
32693
  pacificabeauty: BowmarkProvider_pacificabeauty.Unit;
31302
32694
  pacificcompanies: BowmarkProvider_pacificcompanies.Unit;
32695
+ pacificlifestylehomes: BowmarkProvider_pacificlifestylehomes.Unit;
31303
32696
  paypal: BowmarkProvider_paypal.Unit;
31304
32697
  perennialsandsutherland: BowmarkProvider_perennialsandsutherland.Unit;
31305
32698
  pilotprotocol: BowmarkProvider_pilotprotocol.Unit;
@@ -31307,6 +32700,7 @@ interface BowmarkProviders {
31307
32700
  pizzahut: BowmarkProvider_pizzahut.Unit;
31308
32701
  platform_claude_com: BowmarkProvider_platform_claude_com.Unit;
31309
32702
  polymarket: BowmarkProvider_polymarket.Unit;
32703
+ polytex: BowmarkProvider_polytex.Unit;
31310
32704
  poshmark: BowmarkProvider_poshmark.Unit;
31311
32705
  positivegrid: BowmarkProvider_positivegrid.Unit;
31312
32706
  premierbuildings: BowmarkProvider_premierbuildings.Unit;
@@ -31322,6 +32716,7 @@ interface BowmarkProviders {
31322
32716
  revisionskincare: BowmarkProvider_revisionskincare.Unit;
31323
32717
  rishitea: BowmarkProvider_rishitea.Unit;
31324
32718
  ritani: BowmarkProvider_ritani.Unit;
32719
+ rivian: BowmarkProvider_rivian.Unit;
31325
32720
  roofmaxx: BowmarkProvider_roofmaxx.Unit;
31326
32721
  rover: BowmarkProvider_rover.Unit;
31327
32722
  rvshare: BowmarkProvider_rvshare.Unit;
@@ -31351,6 +32746,7 @@ interface BowmarkProviders {
31351
32746
  summerfridaysquiz: BowmarkProvider_summerfridaysquiz.Unit;
31352
32747
  sunhomesaunas: BowmarkProvider_sunhomesaunas.Unit;
31353
32748
  sunlighten: BowmarkProvider_sunlighten.Unit;
32749
+ tagtrans_net: BowmarkProvider_tagtrans_net.Unit;
31354
32750
  tamarackidaho: BowmarkProvider_tamarackidaho.Unit;
31355
32751
  target: BowmarkProvider_target.Unit;
31356
32752
  tatcha: BowmarkProvider_tatcha.Unit;
@@ -31365,14 +32761,18 @@ interface BowmarkProviders {
31365
32761
  titlenine: BowmarkProvider_titlenine.Unit;
31366
32762
  tmobile: BowmarkProvider_tmobile.Unit;
31367
32763
  topviewtix: BowmarkProvider_topviewtix.Unit;
32764
+ totalplastics: BowmarkProvider_totalplastics.Unit;
31368
32765
  travelinsured: BowmarkProvider_travelinsured.Unit;
31369
32766
  trawickinternational: BowmarkProvider_trawickinternational.Unit;
31370
32767
  trektravel: BowmarkProvider_trektravel.Unit;
31371
32768
  trojanstorage: BowmarkProvider_trojanstorage.Unit;
31372
32769
  trophysignaturehomes: BowmarkProvider_trophysignaturehomes.Unit;
32770
+ tryalma_com: BowmarkProvider_tryalma_com.Unit;
32771
+ tweethunter: BowmarkProvider_tweethunter.Unit;
31373
32772
  twiddy: BowmarkProvider_twiddy.Unit;
31374
32773
  uhc_smallbusiness: BowmarkProvider_uhc_smallbusiness.Unit;
31375
32774
  ulrichlifestyle: BowmarkProvider_ulrichlifestyle.Unit;
32775
+ upkeepstl_com: BowmarkProvider_upkeepstl_com.Unit;
31376
32776
  ups: BowmarkProvider_ups.Unit;
31377
32777
  usps: BowmarkProvider_usps.Unit;
31378
32778
  vbt: BowmarkProvider_vbt.Unit;
@@ -31386,6 +32786,7 @@ interface BowmarkProviders {
31386
32786
  walkerhughes: BowmarkProvider_walkerhughes.Unit;
31387
32787
  walmart: BowmarkProvider_walmart.Unit;
31388
32788
  waterfurnace: BowmarkProvider_waterfurnace.Unit;
32789
+ wearehirschfeld: BowmarkProvider_wearehirschfeld.Unit;
31389
32790
  wellfound: BowmarkProvider_wellfound.Unit;
31390
32791
  winestyles: BowmarkProvider_winestyles.Unit;
31391
32792
  xpresswellnessurgentcare: BowmarkProvider_xpresswellnessurgentcare.Unit;
@@ -83153,6 +84554,7 @@ interface BowmarkLibrary {
83153
84554
  restaurant_booking: BowmarkCapability_restaurant_booking.Unit;
83154
84555
  retail: BowmarkCapability_retail.Unit;
83155
84556
  school_shopping_basket: BowmarkCapability_school_shopping_basket.Unit;
84557
+ script_execution: BowmarkCapability_script_execution.Unit;
83156
84558
  search: BowmarkCapability_search.Unit;
83157
84559
  sheds: BowmarkCapability_sheds.Unit;
83158
84560
  shipping: BowmarkCapability_shipping.Unit;