higherdata-sdk 0.6.0 → 0.7.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.
Files changed (3) hide show
  1. package/dist/index.d.ts +357 -114
  2. package/dist/index.js +171 -37
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -273,7 +273,7 @@ var TOOL_CATALOG = [
273
273
  },
274
274
  {
275
275
  "name": "account.limits",
276
- "description": "Returns the current plan rate limits, concurrency and monthly email verification allowance.",
276
+ "description": "Returns the current plan rate limits, concurrency and available purchased verify credit balance.",
277
277
  "risk": "read",
278
278
  "scopes": [],
279
279
  "input": {
@@ -458,7 +458,7 @@ var TOOL_CATALOG = [
458
458
  },
459
459
  {
460
460
  "name": "account.usage",
461
- "description": "Returns monthly activity, the email verification allowance and its reset time.",
461
+ "description": "Returns monthly activity, the available purchased verify credit balance.",
462
462
  "risk": "read",
463
463
  "scopes": [],
464
464
  "input": {
@@ -1921,7 +1921,7 @@ var TOOL_CATALOG = [
1921
1921
  },
1922
1922
  {
1923
1923
  "name": "email.find",
1924
- "description": "Find a person's work email from company pattern evidence. Tries at most three candidates in order and stops at the first deliverable. Dry run only plans candidates. Use the returned requestId to read or continue pending work.",
1924
+ "description": "Find a person's work email from company pattern evidence. Tries at most three candidates in order and stops at the first deliverable. At zero verify credits, returns the best available pattern guess marked unverified. Dry run only plans candidates. Use the returned requestId to read or continue pending work.",
1925
1925
  "risk": "read",
1926
1926
  "scopes": [
1927
1927
  "data:read"
@@ -1932,6 +1932,11 @@ var TOOL_CATALOG = [
1932
1932
  {
1933
1933
  "type": "object",
1934
1934
  "properties": {
1935
+ "personId": {
1936
+ "description": "Stable person id to attach the verified email to.",
1937
+ "type": "string",
1938
+ "pattern": "^hdp_[0-9a-f]{32}$"
1939
+ },
1935
1940
  "firstName": {
1936
1941
  "type": "string",
1937
1942
  "minLength": 1,
@@ -1970,6 +1975,11 @@ var TOOL_CATALOG = [
1970
1975
  "minLength": 1,
1971
1976
  "maxLength": 240
1972
1977
  },
1978
+ "linkedinUrl": {
1979
+ "description": "LinkedIn company page URL.",
1980
+ "type": "string",
1981
+ "maxLength": 2048
1982
+ },
1973
1983
  "city": {
1974
1984
  "description": "City of the headquarters.",
1975
1985
  "type": "string",
@@ -2519,7 +2529,7 @@ var TOOL_CATALOG = [
2519
2529
  }
2520
2530
  },
2521
2531
  "additionalProperties": false,
2522
- "description": "Company to match. Supply an id, a domain, or a name."
2532
+ "description": "Company to match. Supply an id, a domain, a LinkedIn URL, or a name."
2523
2533
  }
2524
2534
  },
2525
2535
  "required": [
@@ -2549,7 +2559,7 @@ var TOOL_CATALOG = [
2549
2559
  },
2550
2560
  {
2551
2561
  "name": "email.verify",
2552
- "description": "Verify one email address. Dry run spends nothing. Returns a requestId for pending work; call this tool with requestId to read or continue it. Verification results use deliverable, undeliverable, risky or unknown.",
2562
+ "description": "Verify one email address not already held for a contact. API callers may explicitly pass force to verify an existing address. Provider answers use purchased verify credits; cached answers are free. Dry run spends nothing. Returns a requestId for pending work; call this tool with requestId to read or continue it. Verification results use deliverable, undeliverable, risky or unknown.",
2553
2563
  "risk": "read",
2554
2564
  "scopes": [
2555
2565
  "data:read"
@@ -2560,12 +2570,21 @@ var TOOL_CATALOG = [
2560
2570
  {
2561
2571
  "type": "object",
2562
2572
  "properties": {
2573
+ "personId": {
2574
+ "description": "Stable person id to attach the verified email to.",
2575
+ "type": "string",
2576
+ "pattern": "^hdp_[0-9a-f]{32}$"
2577
+ },
2563
2578
  "email": {
2564
2579
  "type": "string",
2565
2580
  "maxLength": 320,
2566
2581
  "format": "email",
2567
2582
  "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
2568
2583
  "description": "Work email address to verify."
2584
+ },
2585
+ "force": {
2586
+ "description": "API override to verify an address already held for a contact. Not offered in the UI.",
2587
+ "type": "boolean"
2569
2588
  }
2570
2589
  },
2571
2590
  "required": [
@@ -2774,7 +2793,7 @@ var TOOL_CATALOG = [
2774
2793
  },
2775
2794
  {
2776
2795
  "name": "enrich.company",
2777
- "description": "Compare a company record with HigherData Core, using stable id, exact domain, then exact name and location. Name matches always require review. Dry run returns comparisons without recording them. Insights fields and filters require the Insights or Unlimited plan.",
2796
+ "description": "Compare a company record with HigherData Core, using stable id, LinkedIn URL, exact domain, then exact name and location. Name matches always require review. Dry run returns comparisons without recording them. Insights fields and filters require the Insights or Complete plan.",
2778
2797
  "risk": "write_local",
2779
2798
  "scopes": [
2780
2799
  "data:read",
@@ -2801,6 +2820,11 @@ var TOOL_CATALOG = [
2801
2820
  "minLength": 1,
2802
2821
  "maxLength": 240
2803
2822
  },
2823
+ "linkedinUrl": {
2824
+ "description": "LinkedIn company page URL.",
2825
+ "type": "string",
2826
+ "maxLength": 2048
2827
+ },
2804
2828
  "city": {
2805
2829
  "description": "City of the headquarters.",
2806
2830
  "type": "string",
@@ -3350,7 +3374,7 @@ var TOOL_CATALOG = [
3350
3374
  }
3351
3375
  },
3352
3376
  "additionalProperties": false,
3353
- "description": "Company to match. Supply an id, a domain, or a name."
3377
+ "description": "Company to match. Supply an id, a domain, a LinkedIn URL, or a name."
3354
3378
  }
3355
3379
  },
3356
3380
  {
@@ -3424,8 +3448,7 @@ var TOOL_CATALOG = [
3424
3448
  "linkedinUrl": {
3425
3449
  "description": "LinkedIn person profile URL.",
3426
3450
  "type": "string",
3427
- "maxLength": 2048,
3428
- "format": "uri"
3451
+ "maxLength": 2048
3429
3452
  },
3430
3453
  "name": {
3431
3454
  "description": "Person's full name.",
@@ -3434,7 +3457,7 @@ var TOOL_CATALOG = [
3434
3457
  "maxLength": 240
3435
3458
  },
3436
3459
  "company": {
3437
- "description": "Company this person works at. Supply an id, a domain, or a name.",
3460
+ "description": "Company this person works at. Supply an id, a domain, a LinkedIn URL, or a name.",
3438
3461
  "type": "object",
3439
3462
  "properties": {
3440
3463
  "id": {
@@ -3454,6 +3477,11 @@ var TOOL_CATALOG = [
3454
3477
  "minLength": 1,
3455
3478
  "maxLength": 240
3456
3479
  },
3480
+ "linkedinUrl": {
3481
+ "description": "LinkedIn company page URL.",
3482
+ "type": "string",
3483
+ "maxLength": 2048
3484
+ },
3457
3485
  "city": {
3458
3486
  "description": "City of the headquarters.",
3459
3487
  "type": "string",
@@ -6108,6 +6136,14 @@ var TOOL_CATALOG = [
6108
6136
  "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
6109
6137
  }
6110
6138
  },
6139
+ "sort": {
6140
+ "description": "Sort by primary company employee estimate, largest or smallest first. Unknown sizes come last. Available from the November 2026 release.",
6141
+ "type": "string",
6142
+ "enum": [
6143
+ "company_size_desc",
6144
+ "company_size_asc"
6145
+ ]
6146
+ },
6111
6147
  "firstName": {
6112
6148
  "description": "First name tokens, using accent-folded fuzzy matching. Requires companyId.",
6113
6149
  "type": "string",
@@ -6236,7 +6272,7 @@ var TOOL_CATALOG = [
6236
6272
  },
6237
6273
  {
6238
6274
  "name": "lists.export",
6239
- "description": "Export a saved list as paged CSV or JSONL with opaque ids. CSV escapes spreadsheet formulas. Pages contain at most 50 records.Insights fields and filters require the Insights or Unlimited plan.",
6275
+ "description": "Export a saved list as paged CSV or JSONL with opaque ids. CSV escapes spreadsheet formulas. Pages contain at most 50 records.Insights fields and filters require the Insights or Complete plan.",
6240
6276
  "risk": "read",
6241
6277
  "scopes": [
6242
6278
  "data:read"
@@ -6425,7 +6461,7 @@ var TOOL_CATALOG = [
6425
6461
  },
6426
6462
  {
6427
6463
  "name": "lookup.company",
6428
- "description": "Look up a company by exactly one domain, exact or near name (optionally with location), or opaque hdo_ id. Returns bounded candidates and ambiguity metadata. Insights fields and filters require the Insights or Unlimited plan.",
6464
+ "description": "Look up a company by exactly one domain, exact or near name (optionally with location), LinkedIn company page URL, or opaque hdo_ id, or up to 100 ids. Returns bounded candidates and ambiguity metadata. Insights fields and filters require the Insights or Complete plan.",
6429
6465
  "risk": "read",
6430
6466
  "scopes": [
6431
6467
  "data:read"
@@ -6450,7 +6486,7 @@ var TOOL_CATALOG = [
6450
6486
  "maximum": 5
6451
6487
  },
6452
6488
  "excludeListId": {
6453
- "description": "Saved list whose members are left out of the result.",
6489
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6454
6490
  "type": "string",
6455
6491
  "format": "uuid",
6456
6492
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
@@ -6493,7 +6529,7 @@ var TOOL_CATALOG = [
6493
6529
  "maximum": 5
6494
6530
  },
6495
6531
  "excludeListId": {
6496
- "description": "Saved list whose members are left out of the result.",
6532
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6497
6533
  "type": "string",
6498
6534
  "format": "uuid",
6499
6535
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
@@ -6513,7 +6549,7 @@ var TOOL_CATALOG = [
6513
6549
  "description": "Opaque company id (hdo_)."
6514
6550
  },
6515
6551
  "excludeListId": {
6516
- "description": "Saved list whose members are left out of the result.",
6552
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6517
6553
  "type": "string",
6518
6554
  "format": "uuid",
6519
6555
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
@@ -6523,6 +6559,59 @@ var TOOL_CATALOG = [
6523
6559
  "id"
6524
6560
  ],
6525
6561
  "additionalProperties": false
6562
+ },
6563
+ {
6564
+ "type": "object",
6565
+ "properties": {
6566
+ "ids": {
6567
+ "minItems": 1,
6568
+ "maxItems": 100,
6569
+ "type": "array",
6570
+ "items": {
6571
+ "type": "string",
6572
+ "pattern": "^hdo_[0-9a-f]{32}$",
6573
+ "description": "Opaque company id (hdo_)."
6574
+ },
6575
+ "description": "Look up up to 100 opaque company ids in one call."
6576
+ },
6577
+ "excludeListId": {
6578
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6579
+ "type": "string",
6580
+ "format": "uuid",
6581
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
6582
+ }
6583
+ },
6584
+ "required": [
6585
+ "ids"
6586
+ ],
6587
+ "additionalProperties": false
6588
+ },
6589
+ {
6590
+ "type": "object",
6591
+ "properties": {
6592
+ "linkedinUrl": {
6593
+ "type": "string",
6594
+ "maxLength": 2048,
6595
+ "description": "LinkedIn company page URL."
6596
+ },
6597
+ "candidateLimit": {
6598
+ "default": 5,
6599
+ "description": "Maximum candidates to return.",
6600
+ "type": "integer",
6601
+ "minimum": 1,
6602
+ "maximum": 5
6603
+ },
6604
+ "excludeListId": {
6605
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6606
+ "type": "string",
6607
+ "format": "uuid",
6608
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
6609
+ }
6610
+ },
6611
+ "required": [
6612
+ "linkedinUrl"
6613
+ ],
6614
+ "additionalProperties": false
6526
6615
  }
6527
6616
  ]
6528
6617
  }
@@ -6538,6 +6627,12 @@ var TOOL_CATALOG = [
6538
6627
  "$schema": "https://json-schema.org/draft/2020-12/schema",
6539
6628
  "type": "object",
6540
6629
  "properties": {
6630
+ "excludeListId": {
6631
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6632
+ "type": "string",
6633
+ "format": "uuid",
6634
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
6635
+ },
6541
6636
  "companyId": {
6542
6637
  "description": "Select a company from a previous ambiguous company-scoped lookup.",
6543
6638
  "type": "string",
@@ -6584,7 +6679,7 @@ var TOOL_CATALOG = [
6584
6679
  "maximum": 5
6585
6680
  },
6586
6681
  "excludeListId": {
6587
- "description": "Saved list whose members are left out of the result.",
6682
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6588
6683
  "type": "string",
6589
6684
  "format": "uuid",
6590
6685
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
@@ -6611,7 +6706,7 @@ var TOOL_CATALOG = [
6611
6706
  "maximum": 5
6612
6707
  },
6613
6708
  "excludeListId": {
6614
- "description": "Saved list whose members are left out of the result.",
6709
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6615
6710
  "type": "string",
6616
6711
  "format": "uuid",
6617
6712
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
@@ -6651,7 +6746,7 @@ var TOOL_CATALOG = [
6651
6746
  "maximum": 20
6652
6747
  },
6653
6748
  "excludeListId": {
6654
- "description": "Saved list whose members are left out of the result.",
6749
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6655
6750
  "type": "string",
6656
6751
  "format": "uuid",
6657
6752
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
@@ -6668,7 +6763,6 @@ var TOOL_CATALOG = [
6668
6763
  "linkedinUrl": {
6669
6764
  "type": "string",
6670
6765
  "maxLength": 2048,
6671
- "format": "uri",
6672
6766
  "description": "LinkedIn person profile URL."
6673
6767
  },
6674
6768
  "candidateLimit": {
@@ -6679,7 +6773,7 @@ var TOOL_CATALOG = [
6679
6773
  "maximum": 5
6680
6774
  },
6681
6775
  "excludeListId": {
6682
- "description": "Saved list whose members are left out of the result.",
6776
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6683
6777
  "type": "string",
6684
6778
  "format": "uuid",
6685
6779
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
@@ -6706,10 +6800,14 @@ var TOOL_CATALOG = [
6706
6800
  "maximum": 5
6707
6801
  },
6708
6802
  "excludeListId": {
6709
- "description": "Saved list whose members are left out of the result.",
6803
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
6710
6804
  "type": "string",
6711
6805
  "format": "uuid",
6712
6806
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
6807
+ },
6808
+ "includeEmployment": {
6809
+ "description": "Include current and past jobs for this person, with suppression applied to each job.",
6810
+ "type": "boolean"
6713
6811
  }
6714
6812
  },
6715
6813
  "required": [
@@ -6722,7 +6820,7 @@ var TOOL_CATALOG = [
6722
6820
  },
6723
6821
  {
6724
6822
  "name": "search.companies",
6725
- "description": "Find companies in HigherData Core using explicit filters. Optional domain uses exact website-host matching and ranks root sites first. Pages contain at most 50 records and opaque ids. Insights fields and filters require the Insights or Unlimited plan.",
6823
+ "description": "Find companies in HigherData Core using explicit filters. Optional domain uses exact website-host matching and ranks root sites first. Interactive pages contain at most 50 records. A download (download: true) contains at most 500 records and opaque ids. Insights fields and filters require the Insights or Complete plan.",
6726
6824
  "risk": "read",
6727
6825
  "scopes": [
6728
6826
  "data:read"
@@ -7073,10 +7171,10 @@ var TOOL_CATALOG = [
7073
7171
  },
7074
7172
  "limit": {
7075
7173
  "default": 50,
7076
- "description": "Maximum records in this page.",
7174
+ "description": "Maximum records in this page. Interactive search accepts at most 50. A download (download true) accepts at most 500.",
7077
7175
  "type": "integer",
7078
7176
  "minimum": 1,
7079
- "maximum": 50
7177
+ "maximum": 500
7080
7178
  },
7081
7179
  "cursor": {
7082
7180
  "description": "Cursor from the previous page. Omit it for the first page.",
@@ -7766,10 +7864,14 @@ var TOOL_CATALOG = [
7766
7864
  "additionalProperties": false
7767
7865
  },
7768
7866
  "excludeListId": {
7769
- "description": "Saved list whose members are left out of the result.",
7867
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
7770
7868
  "type": "string",
7771
7869
  "format": "uuid",
7772
7870
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
7871
+ },
7872
+ "download": {
7873
+ "description": "Set true to download a page. Interactive search stays at 50 records. The server reads this flag from the request, not from a plan or role.",
7874
+ "type": "boolean"
7773
7875
  }
7774
7876
  },
7775
7877
  "additionalProperties": false
@@ -8813,7 +8915,7 @@ var TOOL_CATALOG = [
8813
8915
  },
8814
8916
  {
8815
8917
  "name": "search.count_people",
8816
- "description": "Count people once by primary current job before suppression using release-built aggregates; search results may match other current jobs. Unsupported refinements return a qualified baseline. exact: true explicitly requests one capped detailed count of matching people; never use it for live filtering.",
8918
+ "description": "Count people once by primary current job before suppression using release-built aggregates; search results may match other current jobs. Names and email use exact indexed counts. Unsupported refinements return an unavailable count, never a total that ignores them. exact: true explicitly requests one capped detailed count of matching people; never use it for live filtering.",
8817
8919
  "risk": "read",
8818
8920
  "scopes": [
8819
8921
  "data:read"
@@ -9528,7 +9630,7 @@ var TOOL_CATALOG = [
9528
9630
  },
9529
9631
  "exact": {
9530
9632
  "default": false,
9531
- "description": "Explicitly run a detailed capped count instead of a rollup estimate. Never enable for live filtering.",
9633
+ "description": "Explicitly request a detailed count when an indexed count is unavailable. Never enable for live filtering.",
9532
9634
  "type": "boolean"
9533
9635
  }
9534
9636
  },
@@ -9639,7 +9741,7 @@ var TOOL_CATALOG = [
9639
9741
  },
9640
9742
  {
9641
9743
  "name": "search.people",
9642
- "description": "Find people in HigherData Core, with 1 to 5 positive company HQ country codes or industries required unless a company id, company name, domain or indexed email scopes the search. Unscoped person names use indexed tokens and bounded, ranked pages. Person, job and company location use distinct filters; each city filter requires its corresponding country. Company-scoped contacts also support legacy contactLocation filters. Pages contain at most 50 people and opaque ids. ",
9744
+ "description": "Find people in HigherData Core, with 1 to 5 positive company HQ country codes or industries required unless a company id, company name, domain or indexed email scopes the search. Unscoped person names use indexed tokens and bounded, ranked pages. Person, job and company location use distinct filters; each city filter requires its corresponding country. Company-scoped contacts also support legacy contactLocation filters. Interactive pages contain at most 50 people. A download (download: true) contains at most 500 people and opaque ids. ",
9643
9745
  "risk": "read",
9644
9746
  "scopes": [
9645
9747
  "data:read"
@@ -10285,12 +10387,20 @@ var TOOL_CATALOG = [
10285
10387
  "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
10286
10388
  }
10287
10389
  },
10390
+ "sort": {
10391
+ "description": "Sort by primary company employee estimate, largest or smallest first. Unknown sizes come last. Available from the November 2026 release.",
10392
+ "type": "string",
10393
+ "enum": [
10394
+ "company_size_desc",
10395
+ "company_size_asc"
10396
+ ]
10397
+ },
10288
10398
  "limit": {
10289
10399
  "default": 50,
10290
- "description": "Maximum records in this page.",
10400
+ "description": "Maximum records in this page. Interactive search accepts at most 50. A download (download true) accepts at most 500.",
10291
10401
  "type": "integer",
10292
10402
  "minimum": 1,
10293
- "maximum": 50
10403
+ "maximum": 500
10294
10404
  },
10295
10405
  "cursor": {
10296
10406
  "description": "Cursor from the previous page. Omit it for the first page.",
@@ -10359,10 +10469,14 @@ var TOOL_CATALOG = [
10359
10469
  "additionalProperties": false
10360
10470
  },
10361
10471
  "excludeListId": {
10362
- "description": "Saved list whose members are left out of the result.",
10472
+ "description": "Ignore one suppression list for this call only, tenant owner only. Allowed kinds: customers, open_deals, competitors, partners, employees, custom. Do not contact, opt-out and global erasure rules cannot be lifted.",
10363
10473
  "type": "string",
10364
10474
  "format": "uuid",
10365
10475
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
10476
+ },
10477
+ "download": {
10478
+ "description": "Set true to download a page. Interactive search stays at 50 records. The server reads this flag from the request, not from a plan or role.",
10479
+ "type": "boolean"
10366
10480
  }
10367
10481
  },
10368
10482
  "additionalProperties": false
@@ -13149,6 +13263,14 @@ var TOOL_CATALOG = [
13149
13263
  "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
13150
13264
  }
13151
13265
  },
13266
+ "sort": {
13267
+ "description": "Sort by primary company employee estimate, largest or smallest first. Unknown sizes come last. Available from the November 2026 release.",
13268
+ "type": "string",
13269
+ "enum": [
13270
+ "company_size_desc",
13271
+ "company_size_asc"
13272
+ ]
13273
+ },
13152
13274
  "firstName": {
13153
13275
  "description": "First name tokens, using accent-folded fuzzy matching. Requires companyId.",
13154
13276
  "type": "string",
@@ -13588,23 +13710,35 @@ var TOOL_CATALOG = [
13588
13710
 
13589
13711
  // src/transport.ts
13590
13712
  import { z } from "zod";
13591
- var failure = z.object({ error: z.union([z.string(), z.object({ code: z.string().max(128), message: z.string().max(2048).optional(), retry_after: z.number().nonnegative().finite().optional() })]) });
13713
+ var failure = z.object({ error: z.union([z.string(), z.object({ code: z.string().max(128), message: z.string().max(2048).optional(), billing_href: z.string().max(2048).optional(), retry_after: z.number().nonnegative().finite().optional() })]) });
13592
13714
  var HigherDataError = class extends Error {
13593
- constructor(message, code, status = 0, retryAfter2, requestId) {
13715
+ constructor(message, code, status = 0, retryAfter2, requestId, billingHref) {
13594
13716
  super(message);
13595
13717
  this.code = code;
13596
13718
  this.status = status;
13597
13719
  this.retryAfter = retryAfter2;
13598
13720
  this.requestId = requestId;
13721
+ this.billingHref = billingHref;
13599
13722
  this.name = "HigherDataError";
13600
13723
  }
13601
13724
  code;
13602
13725
  status;
13603
13726
  retryAfter;
13604
13727
  requestId;
13728
+ billingHref;
13605
13729
  };
13606
13730
  var limits = z.object({ maxRetries: z.number().int().min(0).max(5), timeoutMs: z.number().int().min(1).max(3e5), maxRetryDelayMs: z.number().int().min(0).max(3e5) });
13607
13731
  var MAX_RESPONSE = 8 * 1024 * 1024;
13732
+ var DOWNLOAD_PAGE_ROWS = 500;
13733
+ var INTERACTIVE_PAGE_ROWS = 50;
13734
+ function responseByteLimit(path, input) {
13735
+ const name = path.split("?")[0]?.split("/").at(-1);
13736
+ if (name !== "search.companies" && name !== "search.people") return MAX_RESPONSE;
13737
+ if (!input || typeof input !== "object" || Array.isArray(input) || input.download !== true) return MAX_RESPONSE;
13738
+ const limit = input.limit;
13739
+ const rows = typeof limit === "number" && Number.isInteger(limit) && limit >= 1 ? Math.min(limit, DOWNLOAD_PAGE_ROWS) : INTERACTIVE_PAGE_ROWS;
13740
+ return MAX_RESPONSE * Math.ceil(rows / INTERACTIVE_PAGE_ROWS);
13741
+ }
13608
13742
  function retryAfter(response, data, now) {
13609
13743
  const value = response.headers.get("retry-after");
13610
13744
  if (value !== null) {
@@ -13621,9 +13755,9 @@ function retryAfter(response, data, now) {
13621
13755
  }
13622
13756
  function apiError(response, data, now) {
13623
13757
  const parsed = failure.safeParse(data), error = parsed.success ? parsed.data.error : null;
13624
- return new HigherDataError(typeof error === "object" && error?.message ? error.message : "The HigherData API request failed.", typeof error === "string" ? error : error?.code ?? "http_error", response.status, retryAfter(response, data, now), response.headers.get("x-request-id") ?? void 0);
13758
+ return new HigherDataError(typeof error === "object" && error?.message ? error.message : "The HigherData API request failed.", typeof error === "string" ? error : error?.code ?? "http_error", response.status, retryAfter(response, data, now), response.headers.get("x-request-id") ?? void 0, typeof error === "object" ? error?.billing_href : void 0);
13625
13759
  }
13626
- async function responseJson(response) {
13760
+ async function responseJson(response, maxBytes) {
13627
13761
  if (!response.body) throw new HigherDataError("The API returned an invalid response.", "invalid_response");
13628
13762
  const reader = response.body.getReader(), chunks = [];
13629
13763
  let length = 0;
@@ -13632,7 +13766,7 @@ async function responseJson(response) {
13632
13766
  const { done, value } = await reader.read();
13633
13767
  if (done) break;
13634
13768
  length += value.byteLength;
13635
- if (length > MAX_RESPONSE) {
13769
+ if (length > maxBytes) {
13636
13770
  await reader.cancel();
13637
13771
  throw new HigherDataError("The API response exceeded the size limit.", "response_too_large");
13638
13772
  }
@@ -13706,7 +13840,7 @@ var JsonTransport = class {
13706
13840
  const timeout = AbortSignal.timeout(options.timeoutMs ?? this.settings.timeoutMs);
13707
13841
  response = await (this.options.fetch ?? fetch)(url.toString(), { method: "POST", headers, body, redirect: "manual", signal: options.signal ? AbortSignal.any([timeout, options.signal]) : timeout });
13708
13842
  try {
13709
- data = await responseJson(response);
13843
+ data = await responseJson(response, responseByteLimit(path, input));
13710
13844
  } catch (error2) {
13711
13845
  if (response.ok) throw error2;
13712
13846
  data = void 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "higherdata-sdk",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Typed HigherData API client generated from the tool registry.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",
@@ -24,7 +24,7 @@
24
24
  "directory": "packages/sdk"
25
25
  },
26
26
  "higherdata": {
27
- "minimumServerVersion": "0.2.0"
27
+ "minimumServerVersion": "0.7.0"
28
28
  },
29
29
  "scripts": {
30
30
  "build": "npm run sdk:generate --prefix ../.. && tsup",