@oneshot-agent/mcp-server 0.34.0 → 0.36.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.
@@ -0,0 +1,1339 @@
1
+ // Generated by scripts/generate-lookup-tools.ts from the lookup registry. Do not edit by hand;
2
+ // run `bun scripts/generate-lookup-tools.ts` after adding or changing a lookup tool.
3
+ // Plain data on purpose: the published package must not import from apps/.
4
+ export const LOOKUP_MANIFEST = [
5
+ {
6
+ "name": "company_bank_profile",
7
+ "path": "lookup/company-bank-profile",
8
+ "title": "Bank Profile",
9
+ "description": "Given a bank's name or its FDIC certificate number, return the matching institutions insured by the US Federal Deposit Insurance Corporation. Each has its name, certificate number, whether it is currently open and insured, city and state, primary federal regulator, charter class code, the date it was established, its website, and its total assets and total deposits in US dollars as of the reporting date. Use it to check that a bank is real, insured and still open. Give exactly one of `name` and `fdic_certificate`. A name is a text match, so similarly named banks come back too, best match first: tell them apart by the certificate number on each row, and prefer the certificate number when you have it, since it is an exact match. Closed institutions are included, with `active` false. `total` is the number of institutions that matched, which may be more than `limit`. No match is a completed result with `total` 0 and an empty list. Credit unions are not included.",
10
+ "inputSchema": {
11
+ "type": "object",
12
+ "properties": {
13
+ "name": {
14
+ "type": "string",
15
+ "description": "The bank's name, 2 to 100 characters, for example Grasshopper Bank. A text match: similarly named banks are returned too"
16
+ },
17
+ "fdic_certificate": {
18
+ "type": "integer",
19
+ "description": "The FDIC certificate number, for example 59113. An exact match; preferred over a name"
20
+ },
21
+ "limit": {
22
+ "type": "integer",
23
+ "description": "Most banks to return (1 to 10, default 5)"
24
+ }
25
+ },
26
+ "required": []
27
+ },
28
+ "example": {
29
+ "fdic_certificate": 59113
30
+ }
31
+ },
32
+ {
33
+ "name": "record_clinical_trials_find",
34
+ "path": "find/record-clinical-trials",
35
+ "title": "Clinical Trials",
36
+ "description": "Search the clinical studies registered with the US National Library of Medicine, in any country, for a condition, a treatment or other search words, most recently updated first. Each study gives its registry number, title, status, phases, study type, conditions, interventions, lead sponsor, enrollment, start and primary completion dates, the date it was last updated, the countries of its sites and a link to the study. Give `condition`, `query` or both, and optionally narrow by `status` (recruiting, not_yet_recruiting, active_not_recruiting, completed, terminated, withdrawn or suspended). Use it to see what research is registered on a disease or a drug, who sponsors it and how far along it is. A study record is what the sponsor registered, not a finding about a treatment. Contact and investigator details are not returned. `total` is how many studies matched, including any beyond `limit`, and is 0 when none did.",
37
+ "inputSchema": {
38
+ "type": "object",
39
+ "properties": {
40
+ "condition": {
41
+ "type": "string",
42
+ "description": "A condition or disease, for example psoriasis"
43
+ },
44
+ "query": {
45
+ "type": "string",
46
+ "description": "A treatment or other search words, for example secukinumab"
47
+ },
48
+ "status": {
49
+ "type": "string",
50
+ "enum": [
51
+ "recruiting",
52
+ "not_yet_recruiting",
53
+ "active_not_recruiting",
54
+ "completed",
55
+ "terminated",
56
+ "withdrawn",
57
+ "suspended"
58
+ ],
59
+ "description": "Only studies with this status: recruiting, not_yet_recruiting, active_not_recruiting, completed, terminated, withdrawn or suspended"
60
+ },
61
+ "limit": {
62
+ "type": "integer",
63
+ "description": "The most studies to return. Default 10"
64
+ }
65
+ },
66
+ "required": []
67
+ },
68
+ "example": {
69
+ "condition": "psoriasis",
70
+ "query": "secukinumab",
71
+ "status": "recruiting",
72
+ "limit": 1
73
+ }
74
+ },
75
+ {
76
+ "name": "company_filings",
77
+ "path": "lookup/company-filings",
78
+ "title": "Company Filings",
79
+ "description": "Look up a US public company by its Central Index Key (CIK), the identifier the US Securities and Exchange Commission assigns to every filer. Returns the registry record: legal name, entity type, industry, tickers, exchanges, state of incorporation, fiscal year end, website, phone, former names and business address; and the most recent filings, newest first, each with form type, filing date, reporting period and a link to the document. Narrow the filings with `form` (exact form type, for example 10-K), `filed_after` and `filed_before`. Looks up by identifier only: it does not search by company name or ticker, and it does not return officers. Filters apply to the most recent filings the register lists inline (about 1,000), not the full history. `found` is false when the identifier is not in the register.",
80
+ "inputSchema": {
81
+ "type": "object",
82
+ "properties": {
83
+ "cik": {
84
+ "type": "string",
85
+ "description": "The 1 to 10 digit registry identifier (CIK), for example 320193. Shorter numbers are padded with zeros"
86
+ },
87
+ "form": {
88
+ "type": "string",
89
+ "description": "Only filings of this exact form type, for example 10-K"
90
+ },
91
+ "filed_after": {
92
+ "type": "string",
93
+ "description": "Only filings made on or after this date, YYYY-MM-DD"
94
+ },
95
+ "filed_before": {
96
+ "type": "string",
97
+ "description": "Only filings made on or before this date, YYYY-MM-DD"
98
+ },
99
+ "limit": {
100
+ "type": "integer",
101
+ "description": "Most filings to return, newest first (1 to 50, default 10)"
102
+ }
103
+ },
104
+ "required": [
105
+ "cik"
106
+ ]
107
+ },
108
+ "example": {
109
+ "cik": "320193",
110
+ "form": "8-K",
111
+ "limit": 1
112
+ }
113
+ },
114
+ {
115
+ "name": "company_consumer_complaints",
116
+ "path": "lookup/company-consumer-complaints",
117
+ "title": "Consumer Finance Complaints",
118
+ "description": "Given a financial company's name, return how many complaints consumers have filed about it with the US Consumer Financial Protection Bureau, the five largest groups by product and by how the company answered, and the newest complaints. Use it to check a bank, lender, card issuer or credit bureau before dealing with it. Complaints are consumers' reports, not findings. The source matches the name as text, so similarly named companies can appear: `companies` lists the five most matched names with their counts and every complaint carries the company name the source holds. `since` (YYYY-MM-DD) counts only complaints received on or after that date and `limit` sets how many complaints are returned (1 to 25, default 10). A name with no complaint is a completed result with a total of 0 and empty lists.",
119
+ "inputSchema": {
120
+ "type": "object",
121
+ "properties": {
122
+ "company_name": {
123
+ "type": "string",
124
+ "description": "The financial company's name, 2 to 100 characters, for example Wells Fargo"
125
+ },
126
+ "since": {
127
+ "type": "string",
128
+ "description": "Count only complaints received on or after this date, YYYY-MM-DD; default all"
129
+ },
130
+ "limit": {
131
+ "type": "integer",
132
+ "description": "Most complaints to return, newest first, 1 to 25; default 10"
133
+ }
134
+ },
135
+ "required": [
136
+ "company_name"
137
+ ]
138
+ },
139
+ "example": {
140
+ "company_name": "Wells Fargo",
141
+ "limit": 1
142
+ }
143
+ },
144
+ {
145
+ "name": "place_disasters",
146
+ "path": "lookup/place-disasters",
147
+ "title": "Disaster Declarations",
148
+ "description": "List the federal disaster declarations (floods, hurricanes, fires, storms, earthquakes and more) that covered a US county, newest first. Use it to check the hazard history of a property, a policy or a claim location. Both `state` and `county` are required. Declarations that cover a whole state are included for every county in it and marked `statewide`. `total` is the number of matching declarations, which can exceed the page returned when `limit` is lower. Narrow with `incident_type` (for example Flood, Hurricane, Fire) and a declaration date range. A county with no declarations is a completed result with `total` 0.",
149
+ "inputSchema": {
150
+ "type": "object",
151
+ "properties": {
152
+ "state": {
153
+ "type": "string",
154
+ "description": "Two-letter state postal code, for example TX"
155
+ },
156
+ "county": {
157
+ "type": "string",
158
+ "description": "County or parish name without the word County or Parish, for example Harris"
159
+ },
160
+ "incident_type": {
161
+ "type": "string",
162
+ "description": "Only declarations for this incident type, for example Flood, Hurricane, Fire, Tornado, Severe Storm"
163
+ },
164
+ "declared_after": {
165
+ "type": "string",
166
+ "description": "Only declarations made on or after this date (YYYY-MM-DD)"
167
+ },
168
+ "declared_before": {
169
+ "type": "string",
170
+ "description": "Only declarations made on or before this date (YYYY-MM-DD)"
171
+ },
172
+ "limit": {
173
+ "type": "integer",
174
+ "description": "Most declarations to return, newest first. Default 25"
175
+ }
176
+ },
177
+ "required": [
178
+ "state",
179
+ "county"
180
+ ]
181
+ },
182
+ "example": {
183
+ "state": "TX",
184
+ "county": "Harris",
185
+ "incident_type": "Hurricane",
186
+ "declared_after": "2015-01-01",
187
+ "declared_before": "2024-12-31",
188
+ "limit": 1
189
+ }
190
+ },
191
+ {
192
+ "name": "product_drug_adverse_events",
193
+ "path": "lookup/product-drug-adverse-events",
194
+ "title": "Drug Adverse Events",
195
+ "description": "List the reactions most often named in the adverse event reports sent to the US Food and Drug Administration for a drug, from a drug name matched against the product name on the reports. A name of several words is matched as a phrase. Each reaction is the source's term with the number of reports that name it, most reported first. A drug with no reports gives an empty list. The total number of reports is not given. A report does not show that the drug caused the reaction, the reports are unverified, and the source says its data must not be relied on for decisions about medical care.",
196
+ "inputSchema": {
197
+ "type": "object",
198
+ "properties": {
199
+ "drug_name": {
200
+ "type": "string",
201
+ "description": "The drug's name as it appears on the reports, for example Ozempic or metformin"
202
+ },
203
+ "limit": {
204
+ "type": "integer",
205
+ "description": "The most reactions to return. Default 10"
206
+ }
207
+ },
208
+ "required": [
209
+ "drug_name"
210
+ ]
211
+ },
212
+ "example": {
213
+ "drug_name": "Ozempic",
214
+ "limit": 3
215
+ }
216
+ },
217
+ {
218
+ "name": "product_drug_shortages",
219
+ "path": "lookup/product-drug-shortages",
220
+ "title": "Drug Shortages",
221
+ "description": "Say whether the US Food and Drug Administration lists a drug as in shortage, from a drug name matched against the generic name and the brand name. A name of several words is matched as a phrase. `status` narrows the list to `current` shortages, drugs `to_be_discontinued` or shortages that are `resolved`. Each listed presentation gives the generic name, the brand names, the company, the status, whether it is available, the dosage form, the presentation and its package NDC, the therapeutic categories, the reason it is short, any related information and the dates it was first posted and last updated. Most recently updated first. `total` is how many presentations matched, including any beyond `limit`, and is 0 when the drug is not on the list. A drug that is not listed is not in shortage on this list, which says nothing about a particular pharmacy's stock. The source says its data must not be relied on for decisions about medical care.",
222
+ "inputSchema": {
223
+ "type": "object",
224
+ "properties": {
225
+ "drug_name": {
226
+ "type": "string",
227
+ "description": "The drug's generic or brand name, for example quinapril or sodium chloride"
228
+ },
229
+ "status": {
230
+ "type": "string",
231
+ "enum": [
232
+ "current",
233
+ "to_be_discontinued",
234
+ "resolved"
235
+ ],
236
+ "description": "Only presentations with this status: current, to_be_discontinued or resolved. Default all three"
237
+ },
238
+ "limit": {
239
+ "type": "integer",
240
+ "description": "The most presentations to return. Default 10"
241
+ }
242
+ },
243
+ "required": [
244
+ "drug_name"
245
+ ]
246
+ },
247
+ "example": {
248
+ "drug_name": "quinapril",
249
+ "status": "current",
250
+ "limit": 1
251
+ }
252
+ },
253
+ {
254
+ "name": "product_duty_rate",
255
+ "path": "lookup/product-duty-rate",
256
+ "title": "Duty Rate",
257
+ "description": "Look up lines of the US Harmonized Tariff Schedule with their scheduled rate: the general, special and column 2 (other) rates for a heading such as `7408.11`, or candidate lines for a keyword such as `copper wire`. Lines come in schedule order and keep their `indent`: for a heading lookup every line beneath it is returned, so a line sits under the nearest earlier line with a lower indent; a keyword search returns only the matching lines, without their ancestors, so there `indent` is depth only and says nothing about which heading a line belongs to. A heading has no rate of its own, its rates are on the indented lines below. This is the scheduled rate only: it does not add duties imposed by trade-remedy or emergency actions; footnotes are returned as the schedule gives them, each with the rate column(s) it qualifies, and additional-duties notes as given. It is a lookup, not a classification: it does not choose a code for a product, so a keyword search returns candidates for the caller to choose from. A keyword of several words matches lines containing any of them (`copper wire` returns copper ores as well as wire); wrap the words in double quotes to match the exact phrase (`\"copper wire\"`). Covers goods imported into the US. `total` is how many lines the schedule search matched, as the source counts them; `lines` is cut to `limit`. No match is a completed result with `total` 0.",
258
+ "inputSchema": {
259
+ "type": "object",
260
+ "properties": {
261
+ "query": {
262
+ "type": "string",
263
+ "description": "A tariff heading such as 7408.11, or a keyword such as copper wire. Several words match any of them; wrap them in double quotes for the exact phrase"
264
+ },
265
+ "limit": {
266
+ "type": "integer",
267
+ "description": "Most lines to return, in schedule order. Default 20"
268
+ }
269
+ },
270
+ "required": [
271
+ "query"
272
+ ]
273
+ },
274
+ "example": {
275
+ "query": "7408.11",
276
+ "limit": 2
277
+ }
278
+ },
279
+ {
280
+ "name": "place_earthquakes",
281
+ "path": "lookup/place-earthquakes",
282
+ "title": "Earthquakes",
283
+ "description": "List the earthquakes recorded within a distance of a point, given its latitude and longitude. Use it to check the seismic history around a property, a facility or a route stop. Earthquakes are returned newest first, each with its magnitude, depth in kilometres, how many people reported feeling it (`felt_reports`, null when nobody was asked or none reported) and whether a tsunami was flagged. By default it looks back 30 days within 100 km for magnitude 2.5 and above; `since` and `until` (YYYY-MM-DD, UTC) set the dates, `radius_km` the distance (1 to 500), `min_magnitude` the floor and `limit` the most returned (1 to 50). Events the source records as something other than an earthquake, such as quarry blasts, are left out. A point with no earthquake in range is a completed result with an empty list.",
284
+ "inputSchema": {
285
+ "type": "object",
286
+ "properties": {
287
+ "latitude": {
288
+ "type": "number",
289
+ "description": "Latitude in decimal degrees, -90 to 90, for example 37.77"
290
+ },
291
+ "longitude": {
292
+ "type": "number",
293
+ "description": "Longitude in decimal degrees, -180 to 180 (west is negative), for example -122.42"
294
+ },
295
+ "radius_km": {
296
+ "type": "number",
297
+ "description": "Distance from the point in kilometres, 1 to 500; default 100"
298
+ },
299
+ "since": {
300
+ "type": "string",
301
+ "description": "Earliest date, YYYY-MM-DD (UTC); default 30 days before the call"
302
+ },
303
+ "until": {
304
+ "type": "string",
305
+ "description": "Latest date, YYYY-MM-DD (UTC); default now"
306
+ },
307
+ "min_magnitude": {
308
+ "type": "number",
309
+ "description": "Smallest magnitude to return, 0 to 10; default 2.5"
310
+ },
311
+ "limit": {
312
+ "type": "integer",
313
+ "description": "Most earthquakes to return, 1 to 50; default 10"
314
+ }
315
+ },
316
+ "required": [
317
+ "latitude",
318
+ "longitude"
319
+ ]
320
+ },
321
+ "example": {
322
+ "latitude": 37.77,
323
+ "longitude": -122.42,
324
+ "radius_km": 100,
325
+ "since": "2026-07-01",
326
+ "min_magnitude": 2.5,
327
+ "limit": 1
328
+ }
329
+ },
330
+ {
331
+ "name": "company_federal_awards",
332
+ "path": "lookup/company-federal-awards",
333
+ "title": "Federal Awards",
334
+ "description": "Look up the US federal contracts or grants held by a recipient, found by its name or its Unique Entity Identifier (UEI), largest first. Give exactly one of `recipient` and `uei`, and `kind` (`contracts` or `grants`): contracts and grants are separate groups and cannot be mixed in one call. Each award has its identifier, recipient name and UEI, total value in US dollars, start and end dates, awarding agency and sub-agency, description and a link to the award record; contracts also carry the industry (NAICS) and product or service (PSC) codes. Searches by date: returns the awards the source lists for the period from `active_after` to `active_before` (default: the last three years up to today; nothing before 2007-10-01). That is not the same as awards running in the period: the source does not limit rows to awards that overlap it, so an award may have ended before the period or start after it. Read each row's start and end dates to judge whether it is current. A name is a text match, so similarly named recipients come back too: tell them apart by the recipient name and UEI on each row, and prefer the UEI when you have it. `has_more` is true when more awards exist than `limit`. No awards is a completed result with an empty list. Covers US federal awards only.",
335
+ "inputSchema": {
336
+ "type": "object",
337
+ "properties": {
338
+ "recipient": {
339
+ "type": "string",
340
+ "description": "Recipient name, for example LOCKHEED MARTIN CORPORATION. A text match: similarly named recipients are returned too"
341
+ },
342
+ "uei": {
343
+ "type": "string",
344
+ "description": "The recipient's 12-character Unique Entity Identifier. Preferred over a name"
345
+ },
346
+ "kind": {
347
+ "type": "string",
348
+ "enum": [
349
+ "contracts",
350
+ "grants"
351
+ ],
352
+ "description": "Which group of awards to list: contracts, or grants"
353
+ },
354
+ "active_after": {
355
+ "type": "string",
356
+ "description": "Start of the period to search, YYYY-MM-DD, not before 2007-10-01. Default: three years before active_before"
357
+ },
358
+ "active_before": {
359
+ "type": "string",
360
+ "description": "End of the period to search, YYYY-MM-DD. Default: today"
361
+ },
362
+ "limit": {
363
+ "type": "integer",
364
+ "description": "Most awards to return, largest first (1 to 25, default 10)"
365
+ }
366
+ },
367
+ "required": [
368
+ "kind"
369
+ ]
370
+ },
371
+ "example": {
372
+ "recipient": "LOCKHEED MARTIN CORPORATION",
373
+ "kind": "contracts",
374
+ "limit": 1
375
+ }
376
+ },
377
+ {
378
+ "name": "market_federal_labor_rates",
379
+ "path": "lookup/market-federal-labor-rates",
380
+ "title": "Federal Labor Rates",
381
+ "description": "Look up the ceiling hourly rates that contractors on US federal supply schedule contracts have agreed, matching your words against the labor category, contractor name and contract number (a keyword search, so a match is not always a job title), with the low, middle (median), average and high across every match, and the matching rates with the contractor, contract number, business size, education, years of experience, clearance and worksite. Use it to check whether a quoted hourly rate is in line with what the government pays. These are ceilings, the most the contract allows per hour, not what was paid. Rates are listed lowest first. Covers ceiling hourly rates on US federal supply schedule contracts. `total` is 0 and `summary` is null when nothing matches.",
382
+ "inputSchema": {
383
+ "type": "object",
384
+ "properties": {
385
+ "role": {
386
+ "type": "string",
387
+ "description": "Words to look up, for example software engineer. Matched as a keyword search across labor category, contractor name and contract number, so some rates may not be for that job title"
388
+ },
389
+ "min_years_experience": {
390
+ "type": "integer",
391
+ "description": "Only rates for roles that ask for at least this many years of experience"
392
+ },
393
+ "education": {
394
+ "type": "string",
395
+ "enum": [
396
+ "high_school",
397
+ "associates",
398
+ "bachelors",
399
+ "masters",
400
+ "doctorate"
401
+ ],
402
+ "description": "Only rates for roles that ask for exactly this level of education"
403
+ },
404
+ "limit": {
405
+ "type": "integer",
406
+ "description": "The most rates to list. Default 10. The summary always covers every match"
407
+ }
408
+ },
409
+ "required": [
410
+ "role"
411
+ ]
412
+ },
413
+ "example": {
414
+ "role": "software engineer",
415
+ "limit": 1
416
+ }
417
+ },
418
+ {
419
+ "name": "record_federal_register_find",
420
+ "path": "find/record-federal-register",
421
+ "title": "Federal Register Documents",
422
+ "description": "Search the US Federal Register, the government's daily journal of rules, proposed rules, notices and presidential documents, for documents that match search words, newest first. Each document gives its document number, title, type, abstract, the date it was published, the agencies that issued it, and links to the document and its PDF. Optionally narrow by `type` (rule, proposed_rule, notice or presidential), by `agency` (the agency's Federal Register slug, for example federal-aviation-administration), and by publication date with `published_after` and `published_before` (YYYY-MM-DD). Use it to find what the government has said or proposed about a subject, a regulation or a company. It covers documents published since 1994 and returns the abstract, not the full text: open the link for that. `total` is how many documents matched, including any beyond `limit`, and is 0 when none did.",
423
+ "inputSchema": {
424
+ "type": "object",
425
+ "properties": {
426
+ "query": {
427
+ "type": "string",
428
+ "description": "Search words, for example drone registration"
429
+ },
430
+ "type": {
431
+ "type": "string",
432
+ "enum": [
433
+ "rule",
434
+ "proposed_rule",
435
+ "notice",
436
+ "presidential"
437
+ ],
438
+ "description": "Only this kind of document: rule, proposed_rule, notice or presidential"
439
+ },
440
+ "agency": {
441
+ "type": "string",
442
+ "description": "Only documents from this agency, as its Federal Register slug, for example federal-aviation-administration"
443
+ },
444
+ "published_after": {
445
+ "type": "string",
446
+ "description": "Only documents published on or after this date, YYYY-MM-DD"
447
+ },
448
+ "published_before": {
449
+ "type": "string",
450
+ "description": "Only documents published on or before this date, YYYY-MM-DD"
451
+ },
452
+ "limit": {
453
+ "type": "integer",
454
+ "description": "The most documents to return. Default 10"
455
+ }
456
+ },
457
+ "required": [
458
+ "query"
459
+ ]
460
+ },
461
+ "example": {
462
+ "query": "drone registration",
463
+ "type": "rule",
464
+ "limit": 1
465
+ }
466
+ },
467
+ {
468
+ "name": "place_flood_zone",
469
+ "path": "lookup/place-flood-zone",
470
+ "title": "Flood Zone",
471
+ "description": "Return the flood hazard zone published on the national flood hazard map at a point: the zone, its subtype, whether the point is in a special flood hazard area, the base flood elevation when one is stated, and the map the answer comes from. Give coordinates, not an address; Place Resolve returns the coordinates for an address. Covers US areas with a published flood hazard map. `mapped` is false when no map covers the point. When more than one zone covers the point, the first is returned and `overlapping_zones` gives the count. This is a screening aid, not a flood determination: do not use it as the basis for lending or insurance decisions.",
472
+ "inputSchema": {
473
+ "type": "object",
474
+ "properties": {
475
+ "latitude": {
476
+ "type": "number",
477
+ "description": "Latitude in decimal degrees, 17 to 72"
478
+ },
479
+ "longitude": {
480
+ "type": "number",
481
+ "description": "Longitude in decimal degrees, -180 to -64"
482
+ }
483
+ },
484
+ "required": [
485
+ "latitude",
486
+ "longitude"
487
+ ]
488
+ },
489
+ "example": {
490
+ "latitude": 29.7604,
491
+ "longitude": -95.3698
492
+ }
493
+ },
494
+ {
495
+ "name": "person_health_provider",
496
+ "path": "lookup/person-health-provider",
497
+ "title": "Health Provider Registration",
498
+ "description": "Look up the national registration of an individual US health care practitioner (a doctor, nurse, pharmacist, therapist and the like) by 10-digit provider number, or by last name and state with optional first name and city. Returns each match with credential, whether the registration is active, specialties with licence state and number, practice address and mailing address, and the date the registry last updated the record. Use it to check that a practitioner in a directory, claim or referral exists and which specialty they are registered under. A registration is not a licence check and not proof that they still practise at the address; judge freshness by `last_updated_on`. Individuals only: organisations are not covered. `total` is the number of providers returned, at most `limit`; no match is `total: 0`.",
499
+ "inputSchema": {
500
+ "type": "object",
501
+ "properties": {
502
+ "npi": {
503
+ "type": "string",
504
+ "description": "The 10-digit provider number. Give this, or a last name and state, never both"
505
+ },
506
+ "last_name": {
507
+ "type": "string",
508
+ "description": "Last name of the practitioner. Needs state"
509
+ },
510
+ "state": {
511
+ "type": "string",
512
+ "description": "Two-letter US state code, such as TX. Needs last name"
513
+ },
514
+ "first_name": {
515
+ "type": "string",
516
+ "description": "First name of the practitioner, to narrow a name search"
517
+ },
518
+ "city": {
519
+ "type": "string",
520
+ "description": "A city, to narrow a name search"
521
+ },
522
+ "limit": {
523
+ "type": "integer",
524
+ "description": "Most providers to return from a name search, 1 to 20"
525
+ }
526
+ },
527
+ "required": []
528
+ },
529
+ "example": {
530
+ "npi": "1245319599"
531
+ }
532
+ },
533
+ {
534
+ "name": "place_hospitals",
535
+ "path": "lookup/place-hospitals",
536
+ "title": "Hospitals",
537
+ "description": "List the hospitals registered with Medicare in a US ZIP code, from the hospital list of the US Centers for Medicare & Medicaid Services. Each hospital has its name, address, county, published main telephone line, type, ownership, whether it has emergency services and its overall quality rating from 1 to 5. The rating is null when the source gives no number for the hospital. A ZIP code with no registered hospital gives a total of 0 and an empty list. The total is the number of hospitals in the ZIP code, which can be more than the number returned.",
538
+ "inputSchema": {
539
+ "type": "object",
540
+ "properties": {
541
+ "zip_code": {
542
+ "type": "string",
543
+ "description": "A five-digit US ZIP code, for example 45220"
544
+ },
545
+ "limit": {
546
+ "type": "integer",
547
+ "description": "The most hospitals to return. Default 10"
548
+ }
549
+ },
550
+ "required": [
551
+ "zip_code"
552
+ ]
553
+ },
554
+ "example": {
555
+ "zip_code": "45220",
556
+ "limit": 2
557
+ }
558
+ },
559
+ {
560
+ "name": "company_legal_identifier",
561
+ "path": "lookup/company-legal-identifier",
562
+ "title": "Legal Entity Identifier",
563
+ "description": "Look up registered legal entities by a company's legal name or by its 20-character Legal Entity Identifier. Give exactly one of `name` and `lei`. Each entity has its identifier, legal name and other names, entity status, jurisdiction, legal form code, registration number, creation date, the identifier's registration status, registration, last update and next renewal dates, how well the record is corroborated, and its legal and headquarters addresses. It answers whether this is the legal entity you think it is, and whether its registration is current. A name is a text match, so similarly named entities come back too: tell them apart by the identifier on each row, and prefer the identifier when you have it, since it is an exact match. `total` is the number of entities that matched, which may be more than `limit`. No match is a completed result with `total` 0 and an empty list. Covers legal entities that hold an identifier; parent and child relationships are not included.",
564
+ "inputSchema": {
565
+ "type": "object",
566
+ "properties": {
567
+ "lei": {
568
+ "type": "string",
569
+ "description": "The 20-character Legal Entity Identifier, for example DPRBOZP0K5RM2YE8UU08. An exact match; preferred over a name"
570
+ },
571
+ "name": {
572
+ "type": "string",
573
+ "description": "Legal name, for example Lockheed Martin Corporation. A text match: similarly named entities are returned too"
574
+ },
575
+ "limit": {
576
+ "type": "integer",
577
+ "description": "Most entities to return (1 to 10, default 5)"
578
+ }
579
+ },
580
+ "required": []
581
+ },
582
+ "example": {
583
+ "lei": "DPRBOZP0K5RM2YE8UU08"
584
+ }
585
+ },
586
+ {
587
+ "name": "company_motor_carrier",
588
+ "path": "lookup/company-motor-carrier",
589
+ "title": "Motor Carrier Record",
590
+ "description": "Given a US Department of Transportation (DOT) number or a motor carrier (MC) number, return the carrier's registration record from the US Department of Transportation: legal and trading name, whether it is active, legal form, physical address, telephone number, kind of operation, the classes of operation and the cargo it registered, its power units and drivers, its reported annual mileage, whether it carries hazardous materials, its safety rating with the date, its latest review date and the date it last updated its registration. Give exactly one of `dot_number` and `mc_number`. A DOT number finds one carrier; an MC number can find more than one, so check `status`. Dates are YYYY-MM-DD and a value the source does not give is null. `total` is the number of carriers returned, at most 5; no match is a completed result with `total` 0 and an empty list. It does not cover operating authority, insurance on file, out-of-service rates or crash counts.",
591
+ "inputSchema": {
592
+ "type": "object",
593
+ "properties": {
594
+ "dot_number": {
595
+ "type": "string",
596
+ "description": "The carrier's US Department of Transportation number, 1 to 8 digits, for example 44110"
597
+ },
598
+ "mc_number": {
599
+ "type": "string",
600
+ "description": "The carrier's motor carrier (MC) number, 1 to 8 digits, with an optional MC or MC- in front, for example MC-1515"
601
+ }
602
+ },
603
+ "required": []
604
+ },
605
+ "example": {
606
+ "dot_number": "44110"
607
+ }
608
+ },
609
+ {
610
+ "name": "place_resolve",
611
+ "path": "resolve/place",
612
+ "title": "Place Resolve",
613
+ "description": "Resolve a US street address to the matched address, its latitude and longitude, and the codes for its state, county and census tract (plus census block and incorporated place when the source has them). Use it first when another fact about a place is keyed by state and county, or by coordinates, so an agent does not have to guess them. Street addresses in the United States only: no post-office boxes, no place names or landmarks, no addresses outside the US. Give the whole address on one line, for example \"1600 Pennsylvania Ave NW, Washington, DC\". Only the best match is returned; `candidates` is how many matches the source offered. An address that matches nothing is a completed result with `found` false and every other field null.",
614
+ "inputSchema": {
615
+ "type": "object",
616
+ "properties": {
617
+ "address": {
618
+ "type": "string",
619
+ "description": "A US street address on one line, with city and state or ZIP, for example 1600 Pennsylvania Ave NW, Washington, DC"
620
+ }
621
+ },
622
+ "required": [
623
+ "address"
624
+ ]
625
+ },
626
+ "example": {
627
+ "address": "1600 Pennsylvania Ave NW, Washington, DC"
628
+ }
629
+ },
630
+ {
631
+ "name": "product_recalls",
632
+ "path": "lookup/product-recalls",
633
+ "title": "Product Recalls",
634
+ "description": "List the recalls of US products that match a product name, a manufacturer or, for consumer products, words from a recall title, optionally within a date range. `category` is required and picks the regulator: `consumer` is consumer products (appliances, tools, toys, furniture, ladders, bicycles, children's products and the like) from the US Consumer Product Safety Commission; `food`, `drug` and `device` are food, drugs and medical devices from the US Food and Drug Administration's enforcement reports, where `classification` (Class I, II or III) narrows the list. Vehicles are Vehicle Recalls. Each recall gives the recall number, the date it was announced and last published, what was recalled, the models and units, the hazard or reason, and the manufacturer or recalling firm. Consumer recalls also give the title, injuries, remedies, retailers and a link to the notice; food, drug and device recalls give the status, the class and where it was distributed. Newest first. Use it to check a product before a purchase, a resale, a claim or a listing. A recall says what was recalled, not whether a particular unit has been repaired. Give at least one of `product_name`, `title` and `manufacturer`; dates alone are refused. `title` is for consumer only. `total` is how many recalls matched, including any beyond `limit`, and is 0 when none did.",
635
+ "inputSchema": {
636
+ "type": "object",
637
+ "properties": {
638
+ "category": {
639
+ "type": "string",
640
+ "enum": [
641
+ "consumer",
642
+ "food",
643
+ "drug",
644
+ "device"
645
+ ],
646
+ "description": "Which products and which regulator: consumer (Consumer Product Safety Commission), or food, drug or device (Food and Drug Administration). Required"
647
+ },
648
+ "product_name": {
649
+ "type": "string",
650
+ "description": "Words from the product name, for example attic stairway. For food, drug and device: letters, digits, spaces and . , ' & - only"
651
+ },
652
+ "title": {
653
+ "type": "string",
654
+ "description": "Words from the recall title, for example ladder. Category consumer only"
655
+ },
656
+ "manufacturer": {
657
+ "type": "string",
658
+ "description": "The manufacturer, importer, distributor or retailer, for example Louisville Ladder. For food, drug and device it is the recalling firm: letters, digits, spaces and . , ' & - only"
659
+ },
660
+ "classification": {
661
+ "type": "string",
662
+ "enum": [
663
+ "Class I",
664
+ "Class II",
665
+ "Class III"
666
+ ],
667
+ "description": "Only recalls of this class. Categories food, drug and device only"
668
+ },
669
+ "recalled_after": {
670
+ "type": "string",
671
+ "description": "Only recalls announced on or after this date, YYYY-MM-DD. Needs a product name, title or manufacturer"
672
+ },
673
+ "recalled_before": {
674
+ "type": "string",
675
+ "description": "Only recalls announced on or before this date, YYYY-MM-DD. Needs a product name, title or manufacturer"
676
+ },
677
+ "limit": {
678
+ "type": "integer",
679
+ "description": "The most recalls to return. Default 10"
680
+ }
681
+ },
682
+ "required": [
683
+ "category"
684
+ ]
685
+ },
686
+ "example": {
687
+ "category": "consumer",
688
+ "product_name": "attic stairway",
689
+ "limit": 10
690
+ }
691
+ },
692
+ {
693
+ "name": "company_vat_registration",
694
+ "path": "lookup/company-vat-registration",
695
+ "title": "VAT Registration",
696
+ "description": "Check whether a VAT number is registered today for cross-border trade in an EU member state or Northern Ireland. Give `country`, the two-letter code the source uses (`EL` for Greece, `XI` for Northern Ireland), and `vat_number`; spaces, dots and dashes are removed, and a leading country code equal to `country` is removed. `registered` is true when the number is registered and false when the source says it is not. The registered name and address come back where the member state gives them; some confirm a number and withhold both, which is `null` here. `checked_at` is when the source made the check. A number that is not registered is a completed result. When a member state's own service does not answer or is too busy, the call fails and is never reported as not registered. It confirms registration, not who owns or controls the company.",
697
+ "inputSchema": {
698
+ "type": "object",
699
+ "properties": {
700
+ "country": {
701
+ "type": "string",
702
+ "enum": [
703
+ "AT",
704
+ "BE",
705
+ "BG",
706
+ "CY",
707
+ "CZ",
708
+ "DE",
709
+ "DK",
710
+ "EE",
711
+ "EL",
712
+ "ES",
713
+ "FI",
714
+ "FR",
715
+ "HR",
716
+ "HU",
717
+ "IE",
718
+ "IT",
719
+ "LT",
720
+ "LU",
721
+ "LV",
722
+ "MT",
723
+ "NL",
724
+ "PL",
725
+ "PT",
726
+ "RO",
727
+ "SE",
728
+ "SI",
729
+ "SK",
730
+ "XI"
731
+ ],
732
+ "description": "Two-letter code the source uses: the 27 EU member states (EL for Greece) or XI for Northern Ireland"
733
+ },
734
+ "vat_number": {
735
+ "type": "string",
736
+ "description": "The VAT number, 2 to 14 letters and digits once spaces, dots and dashes are removed; a leading country code equal to country is removed"
737
+ }
738
+ },
739
+ "required": [
740
+ "country",
741
+ "vat_number"
742
+ ]
743
+ },
744
+ "example": {
745
+ "country": "IE",
746
+ "vat_number": "6388047V"
747
+ }
748
+ },
749
+ {
750
+ "name": "vehicle_complaints",
751
+ "path": "lookup/vehicle-complaints",
752
+ "title": "Vehicle Complaints",
753
+ "description": "Summarize what owners have reported to the US safety regulator about a vehicle by make, model and model year: how many complaints there are, how many involved a crash, a fire, injuries or deaths, which components are reported most, and the newest complaints with their dates, components and the owner's own words. Use it to check a used vehicle before a purchase, a loan, a claim or a fleet decision. Covers vehicles sold in the United States. Complaints are reports by owners, not findings by the regulator. A complaint does not show that the vehicle has a defect, and a model with few complaints is not proven free of one. To see the safety recalls instead, use Vehicle Recalls. `total` is 0 when the model has no complaints.",
754
+ "inputSchema": {
755
+ "type": "object",
756
+ "properties": {
757
+ "make": {
758
+ "type": "string",
759
+ "description": "The vehicle make, for example Honda"
760
+ },
761
+ "model": {
762
+ "type": "string",
763
+ "description": "The vehicle model, for example CR-V"
764
+ },
765
+ "model_year": {
766
+ "type": "integer",
767
+ "description": "The model year, from 1950 to next year"
768
+ },
769
+ "limit": {
770
+ "type": "integer",
771
+ "description": "The most complaints to return, newest first. Default 10"
772
+ }
773
+ },
774
+ "required": [
775
+ "make",
776
+ "model",
777
+ "model_year"
778
+ ]
779
+ },
780
+ "example": {
781
+ "make": "Fiat",
782
+ "model": "124 Spider",
783
+ "model_year": 2019,
784
+ "limit": 1
785
+ }
786
+ },
787
+ {
788
+ "name": "vehicle_identification",
789
+ "path": "lookup/vehicle-identification",
790
+ "title": "Vehicle Identification",
791
+ "description": "Decode a 17-character vehicle identification number (VIN) into the vehicle it names: make, model, model year, trim, body class, engine, fuel, transmission, manufacturer and assembly plant. Use it to confirm that a vehicle in a listing, title, claim or invoice is what it says it is. Covers vehicles sold in the United States. `decoded` is false when the number does not resolve to a vehicle; `notes` then says why.",
792
+ "inputSchema": {
793
+ "type": "object",
794
+ "properties": {
795
+ "vin": {
796
+ "type": "string",
797
+ "description": "The 17-character vehicle identification number"
798
+ },
799
+ "model_year": {
800
+ "type": "integer",
801
+ "description": "Model year, when known. Resolves the year for numbers where position 10 is ambiguous"
802
+ }
803
+ },
804
+ "required": [
805
+ "vin"
806
+ ]
807
+ },
808
+ "example": {
809
+ "vin": "1HGCM82633A004352"
810
+ }
811
+ },
812
+ {
813
+ "name": "vehicle_recalls",
814
+ "path": "lookup/vehicle-recalls",
815
+ "title": "Vehicle Recalls",
816
+ "description": "List the safety recalls issued for a vehicle by make, model and model year: the campaign number, the date it was reported, the affected component, what is wrong, the risk, the remedy and whether the owner is told to park the vehicle. Use it to check a used vehicle before a purchase, a loan, a claim or a fleet decision. Covers vehicles sold in the United States. These are the recalls issued for the model. The result does not say whether a particular vehicle has had the repair done. To start from a vehicle identification number, decode it first with Vehicle Identification, which returns the make, model and year. `total` is 0 when the model has no recalls.",
817
+ "inputSchema": {
818
+ "type": "object",
819
+ "properties": {
820
+ "make": {
821
+ "type": "string",
822
+ "description": "The vehicle make, for example Honda"
823
+ },
824
+ "model": {
825
+ "type": "string",
826
+ "description": "The vehicle model, for example CR-V"
827
+ },
828
+ "model_year": {
829
+ "type": "integer",
830
+ "description": "The model year, from 1950 to next year"
831
+ },
832
+ "limit": {
833
+ "type": "integer",
834
+ "description": "The most recalls to return. Default 25"
835
+ }
836
+ },
837
+ "required": [
838
+ "make",
839
+ "model",
840
+ "model_year"
841
+ ]
842
+ },
843
+ "example": {
844
+ "make": "Honda",
845
+ "model": "CR-V",
846
+ "model_year": 2019,
847
+ "limit": 1
848
+ }
849
+ },
850
+ {
851
+ "name": "record_vulnerability",
852
+ "path": "lookup/record-vulnerability",
853
+ "title": "Vulnerability",
854
+ "description": "Look up a software vulnerability by its CVE identifier in the US National Vulnerability Database. The record gives a description in English, when it was published and last modified, its analysis status, its severity (the newest CVSS version that has a primary score, with the score, the rating word and the vector), the weakness types, whether it is on the US list of known exploited vulnerabilities (with the date added, the date action is due and the required action), the first 10 references with their tags and a link to the record. The lists of affected product versions are not returned. A record is what the database publishes, not a measure of the risk to any one system. `total` is 1, or 0 when the database has no such identifier. Times are UTC. This product uses the NVD API but is not endorsed or certified by the NVD.",
855
+ "inputSchema": {
856
+ "type": "object",
857
+ "properties": {
858
+ "cve_id": {
859
+ "type": "string",
860
+ "description": "The CVE identifier, for example CVE-2021-44228. Lower case is accepted"
861
+ }
862
+ },
863
+ "required": [
864
+ "cve_id"
865
+ ]
866
+ },
867
+ "example": {
868
+ "cve_id": "CVE-2021-44228"
869
+ }
870
+ },
871
+ {
872
+ "name": "place_weather_alerts",
873
+ "path": "lookup/place-weather-alerts",
874
+ "title": "Weather Alerts",
875
+ "description": "List the weather watches, warnings and advisories in force now at a point in the United States, given its latitude and longitude. Use it to check whether a storm, flood, heat, fire-weather or winter-weather alert covers a property, a route stop or a claim location today. Alerts are ordered most severe first (Extreme, Severe, Moderate, Minor, Unknown), then by soonest to expire. The source's active list is returned as it gives it: an alert already issued whose event has not begun (a watch for tomorrow, urgency Future, `onset_at` in the future) is included, so check `urgency` and `onset_at` to tell what is under way from what is coming. `total` is the number of alerts returned. Expired and past alerts are not returned. A point with nothing active is a completed result with `total` 0.",
876
+ "inputSchema": {
877
+ "type": "object",
878
+ "properties": {
879
+ "latitude": {
880
+ "type": "number",
881
+ "description": "Latitude in decimal degrees, 17 to 72, for example 29.7604"
882
+ },
883
+ "longitude": {
884
+ "type": "number",
885
+ "description": "Longitude in decimal degrees, -180 to -64 (west is negative), for example -95.3698"
886
+ }
887
+ },
888
+ "required": [
889
+ "latitude",
890
+ "longitude"
891
+ ]
892
+ },
893
+ "example": {
894
+ "latitude": 30.1487,
895
+ "longitude": -94.0188
896
+ }
897
+ },
898
+ {
899
+ "name": "place_wildfires",
900
+ "path": "lookup/place-wildfires",
901
+ "title": "Wildfires",
902
+ "description": "List the wildfires currently burning within a distance of a point, given its latitude and longitude. Use it to check fire activity around a property, a facility or a route stop. Fires are returned largest first, each with its name, size in acres, the percent contained (null when the source states none), the date it was discovered (YYYY-MM-DD, UTC), and its state and county. `radius_km` sets the distance (1 to 200, default 50) and `limit` the most returned (1 to 25, default 10); `more` is true when the source held more fires in range than were returned. Covers current wildfire perimeters in the United States. A point with no fire in range is a completed result with an empty list; that means no published perimeter matched, not that no fire is near: a new fire may not have a perimeter yet.",
903
+ "inputSchema": {
904
+ "type": "object",
905
+ "properties": {
906
+ "latitude": {
907
+ "type": "number",
908
+ "description": "Latitude in decimal degrees, -90 to 90, for example 44.7"
909
+ },
910
+ "longitude": {
911
+ "type": "number",
912
+ "description": "Longitude in decimal degrees, -180 to 180 (west is negative), for example -120.0"
913
+ },
914
+ "radius_km": {
915
+ "type": "number",
916
+ "description": "Distance from the point in kilometres, 1 to 200; default 50"
917
+ },
918
+ "limit": {
919
+ "type": "integer",
920
+ "description": "Most fires to return, 1 to 25; default 10"
921
+ }
922
+ },
923
+ "required": [
924
+ "latitude",
925
+ "longitude"
926
+ ]
927
+ },
928
+ "example": {
929
+ "latitude": 44.7,
930
+ "longitude": -120,
931
+ "radius_km": 100,
932
+ "limit": 1
933
+ }
934
+ }
935
+ ];
936
+ export const ROUTE_MANIFEST = [
937
+ {
938
+ "name": "benchmark",
939
+ "method": "POST",
940
+ "path": "/v1/tools/benchmark",
941
+ "paid": true,
942
+ "readOnly": true,
943
+ "title": "Benchmark",
944
+ "description": "Where a value sits among its peers: the distribution of a numeric field over a peer set (count, minimum, quartiles, median, maximum) and the percentile of one entity or value in it. Give `attribute`, `field`, and the filters `peers` that define the set. A peer set under 20 is refused after payment and refunded. Paid per call.",
945
+ "inputSchema": {
946
+ "type": "object",
947
+ "properties": {
948
+ "attribute": {
949
+ "type": "string",
950
+ "description": "Name of a data tool whose facts can be benchmarked, e.g. vehicle_complaints"
951
+ },
952
+ "field": {
953
+ "type": "string",
954
+ "description": "Numeric field to compare, one the data tool declares for Benchmark, e.g. total"
955
+ },
956
+ "peers": {
957
+ "type": "object",
958
+ "description": "Filters that define the peer set: fields the data tool declares for grouping, e.g. {\"model_year\": 2019}"
959
+ },
960
+ "key": {
961
+ "type": "string",
962
+ "description": "Entity key of an entity in the peer set, to place its value. Give at most one of key and value"
963
+ },
964
+ "value": {
965
+ "type": "number",
966
+ "description": "A value to place in the distribution. Give at most one of key and value"
967
+ },
968
+ "source": {
969
+ "type": "string",
970
+ "description": "Source to read when the attribute has several"
971
+ }
972
+ },
973
+ "required": [
974
+ "attribute",
975
+ "field"
976
+ ]
977
+ },
978
+ "example": {
979
+ "attribute": "vehicle_complaints",
980
+ "field": "total",
981
+ "peers": {
982
+ "model_year": 2019
983
+ },
984
+ "key": "HONDA:CR-V:2019"
985
+ }
986
+ },
987
+ {
988
+ "name": "watch_update",
989
+ "method": "PATCH",
990
+ "path": "/v1/tools/watch/{watch_id}",
991
+ "paid": false,
992
+ "readOnly": false,
993
+ "title": "Change a Watch",
994
+ "description": "Change a watch: its spending cap (`max_spend`, raising it resumes a watch paused at its cap), its webhook (`webhook_url`), or pause or resume it (`paused`). Give at least one. Free.",
995
+ "inputSchema": {
996
+ "type": "object",
997
+ "properties": {
998
+ "watch_id": {
999
+ "type": "string",
1000
+ "description": "Watch id from oneshot_watch or oneshot_watch_list"
1001
+ },
1002
+ "max_spend": {
1003
+ "type": "number",
1004
+ "description": "A new spending cap in dollars, at most 100"
1005
+ },
1006
+ "webhook_url": {
1007
+ "type": "string",
1008
+ "description": "A new HTTPS webhook URL; a new URL gets a new signing secret"
1009
+ },
1010
+ "paused": {
1011
+ "type": "boolean",
1012
+ "description": "true pauses the watch; false resumes one the agent paused"
1013
+ }
1014
+ },
1015
+ "required": [
1016
+ "watch_id"
1017
+ ]
1018
+ },
1019
+ "example": {
1020
+ "watch_id": "3f1c2b9e-0000-4000-8000-000000000000",
1021
+ "paused": true
1022
+ }
1023
+ },
1024
+ {
1025
+ "name": "changes",
1026
+ "method": "POST",
1027
+ "path": "/v1/tools/changes",
1028
+ "paid": true,
1029
+ "readOnly": true,
1030
+ "title": "Changes",
1031
+ "description": "What changed about one entity since a date, from the observations OneShot recorded: each change has the earlier value, the later value, when it was seen and the source. Give `attribute` (the name of a data tool that keeps history), `since`, and exactly one of `key` and `input`. A window with no changes is a completed, charged result. Paid per call.",
1032
+ "inputSchema": {
1033
+ "type": "object",
1034
+ "properties": {
1035
+ "attribute": {
1036
+ "type": "string",
1037
+ "description": "Name of a data tool that keeps history, e.g. vehicle_identification"
1038
+ },
1039
+ "key": {
1040
+ "type": "string",
1041
+ "description": "Entity key the data tool declares. Give exactly one of key and input"
1042
+ },
1043
+ "input": {
1044
+ "type": "object",
1045
+ "description": "Input a search was called with, for a stored search. Give exactly one of key and input"
1046
+ },
1047
+ "source": {
1048
+ "type": "string",
1049
+ "description": "Source to read when the attribute has several"
1050
+ },
1051
+ "since": {
1052
+ "type": "string",
1053
+ "description": "First day of the window, YYYY-MM-DD"
1054
+ },
1055
+ "until": {
1056
+ "type": "string",
1057
+ "description": "Last day of the window, YYYY-MM-DD (default: today)"
1058
+ },
1059
+ "limit": {
1060
+ "type": "integer",
1061
+ "description": "Most changes to return, oldest first (1-200, default 50)"
1062
+ }
1063
+ },
1064
+ "required": [
1065
+ "attribute",
1066
+ "since"
1067
+ ]
1068
+ },
1069
+ "example": {
1070
+ "attribute": "vehicle_identification",
1071
+ "key": "1HGCM82633A004352",
1072
+ "since": "2026-01-01"
1073
+ }
1074
+ },
1075
+ {
1076
+ "name": "compute_budget",
1077
+ "method": "GET",
1078
+ "path": "/v1/compute/{goal_id}/budget",
1079
+ "paid": false,
1080
+ "readOnly": true,
1081
+ "title": "Compute Budget",
1082
+ "description": "Read what a compute goal has reserved, spent and has left. Free.",
1083
+ "inputSchema": {
1084
+ "type": "object",
1085
+ "properties": {
1086
+ "goal_id": {
1087
+ "type": "string",
1088
+ "description": "The goal id"
1089
+ }
1090
+ },
1091
+ "required": [
1092
+ "goal_id"
1093
+ ]
1094
+ },
1095
+ "example": {
1096
+ "goal_id": "goal_01HX"
1097
+ }
1098
+ },
1099
+ {
1100
+ "name": "watch_delete",
1101
+ "method": "DELETE",
1102
+ "path": "/v1/tools/watch/{watch_id}",
1103
+ "paid": false,
1104
+ "readOnly": false,
1105
+ "title": "Delete a Watch",
1106
+ "description": "Delete a watch so it delivers no more changes. Free.",
1107
+ "inputSchema": {
1108
+ "type": "object",
1109
+ "properties": {
1110
+ "watch_id": {
1111
+ "type": "string",
1112
+ "description": "Watch id from oneshot_watch or oneshot_watch_list"
1113
+ }
1114
+ },
1115
+ "required": [
1116
+ "watch_id"
1117
+ ]
1118
+ },
1119
+ "example": {
1120
+ "watch_id": "3f1c2b9e-0000-4000-8000-000000000000"
1121
+ }
1122
+ },
1123
+ {
1124
+ "name": "email_analytics",
1125
+ "method": "GET",
1126
+ "path": "/v1/tools/email/analytics/{domain}",
1127
+ "paid": false,
1128
+ "readOnly": true,
1129
+ "title": "Email Analytics",
1130
+ "description": "Campaign analytics for one of the agent's sending domains: totals for sent, delivered, opened and bounced emails, opens, clicks, delivery, open and click rates, and the recent messages. Free. Domains are listed by oneshot_list_domains.",
1131
+ "inputSchema": {
1132
+ "type": "object",
1133
+ "properties": {
1134
+ "domain": {
1135
+ "type": "string",
1136
+ "description": "A sending domain from oneshot_list_domains"
1137
+ }
1138
+ },
1139
+ "required": [
1140
+ "domain"
1141
+ ]
1142
+ },
1143
+ "example": {
1144
+ "domain": "mail.example.com"
1145
+ }
1146
+ },
1147
+ {
1148
+ "name": "voice_inbound_get",
1149
+ "method": "GET",
1150
+ "path": "/v1/tools/voice/numbers/{phone_number_id}/inbound",
1151
+ "paid": false,
1152
+ "readOnly": true,
1153
+ "title": "Get Call Answering Settings",
1154
+ "description": "Read how one of the agent's numbers answers inbound calls: the prompt, greeting, allowed tools, hours and whether it is enabled. Free.",
1155
+ "inputSchema": {
1156
+ "type": "object",
1157
+ "properties": {
1158
+ "phone_number_id": {
1159
+ "type": "string",
1160
+ "description": "Number id from oneshot_voice_numbers"
1161
+ }
1162
+ },
1163
+ "required": [
1164
+ "phone_number_id"
1165
+ ]
1166
+ },
1167
+ "example": {
1168
+ "phone_number_id": "pn_01HX"
1169
+ }
1170
+ },
1171
+ {
1172
+ "name": "linkedin_sync_run",
1173
+ "method": "GET",
1174
+ "path": "/v1/tools/linkedin/sync/{run_id}",
1175
+ "paid": false,
1176
+ "readOnly": true,
1177
+ "title": "LinkedIn Sync Run",
1178
+ "description": "Read one LinkedIn history-sync run: its state, the pages and messages it fetched and why it ended. Free. The run id comes from oneshot_linkedin_sync or oneshot_linkedin_accounts with account_id.",
1179
+ "inputSchema": {
1180
+ "type": "object",
1181
+ "properties": {
1182
+ "run_id": {
1183
+ "type": "string",
1184
+ "description": "Sync run id"
1185
+ }
1186
+ },
1187
+ "required": [
1188
+ "run_id"
1189
+ ]
1190
+ },
1191
+ "example": {
1192
+ "run_id": "run_01HX"
1193
+ }
1194
+ },
1195
+ {
1196
+ "name": "watch_list",
1197
+ "method": "GET",
1198
+ "path": "/v1/tools/watch",
1199
+ "paid": false,
1200
+ "readOnly": true,
1201
+ "title": "List Watches",
1202
+ "description": "List the agent's watches with their state, spend and the price of one change. Free.",
1203
+ "inputSchema": {
1204
+ "type": "object",
1205
+ "properties": {},
1206
+ "required": []
1207
+ },
1208
+ "example": {}
1209
+ },
1210
+ {
1211
+ "name": "notifications_mark_all_read",
1212
+ "method": "PATCH",
1213
+ "path": "/v1/tools/notifications/read-all",
1214
+ "paid": false,
1215
+ "readOnly": false,
1216
+ "title": "Mark All Notifications Read",
1217
+ "description": "Mark every notification of this agent as read. Free. Mark a single one with oneshot_mark_notification_read.",
1218
+ "inputSchema": {
1219
+ "type": "object",
1220
+ "properties": {},
1221
+ "required": []
1222
+ },
1223
+ "example": {}
1224
+ },
1225
+ {
1226
+ "name": "company_sanctions",
1227
+ "method": "POST",
1228
+ "path": "/v1/tools/lookup/company-sanctions",
1229
+ "paid": true,
1230
+ "readOnly": true,
1231
+ "title": "Sanctions Listing (company)",
1232
+ "description": "Check a company name against the US Treasury's list of Specially Designated Nationals. Returns the entries that match, each with a score, the name that matched and the entry as the list publishes it. `min_score` (0.5 to 1, default 0.85) sets the lowest score returned and `limit` the most matches (1 to 25, default 10); `total` counts all matches at or above `min_score`. A screening aid, not a legal determination. No match means no entry on the lists named scored at or above the minimum; it does not mean the party is clear. Paid per call.",
1233
+ "inputSchema": {
1234
+ "type": "object",
1235
+ "properties": {
1236
+ "name": {
1237
+ "type": "string",
1238
+ "description": "The company name to check, 2 to 200 characters, free text. Word order and punctuation do not matter"
1239
+ },
1240
+ "min_score": {
1241
+ "type": "number",
1242
+ "description": "The lowest score of a match to return, 0.5 to 1 (default 0.85)"
1243
+ },
1244
+ "limit": {
1245
+ "type": "integer",
1246
+ "description": "Most matches to return, highest score first (1-25, default 10)"
1247
+ }
1248
+ },
1249
+ "required": [
1250
+ "name"
1251
+ ]
1252
+ },
1253
+ "example": {
1254
+ "name": "Banco Nacional de Cuba",
1255
+ "min_score": 0.85,
1256
+ "limit": 10
1257
+ }
1258
+ },
1259
+ {
1260
+ "name": "person_sanctions",
1261
+ "method": "POST",
1262
+ "path": "/v1/tools/lookup/person-sanctions",
1263
+ "paid": true,
1264
+ "readOnly": true,
1265
+ "title": "Sanctions Listing (person)",
1266
+ "description": "Check a person name against the US Treasury's list of Specially Designated Nationals. Returns the entries that match, each with a score, the name that matched and the entry as the list publishes it. `min_score` (0.5 to 1, default 0.85) sets the lowest score returned and `limit` the most matches (1 to 25, default 10); `total` counts all matches at or above `min_score`. A screening aid, not a legal determination. No match means no entry on the lists named scored at or above the minimum; it does not mean the party is clear. Paid per call.",
1267
+ "inputSchema": {
1268
+ "type": "object",
1269
+ "properties": {
1270
+ "name": {
1271
+ "type": "string",
1272
+ "description": "The person name to check, 2 to 200 characters, free text. Word order, accents and punctuation do not matter"
1273
+ },
1274
+ "min_score": {
1275
+ "type": "number",
1276
+ "description": "The lowest score of a match to return, 0.5 to 1 (default 0.85)"
1277
+ },
1278
+ "limit": {
1279
+ "type": "integer",
1280
+ "description": "Most matches to return, highest score first (1-25, default 10)"
1281
+ }
1282
+ },
1283
+ "required": [
1284
+ "name"
1285
+ ]
1286
+ },
1287
+ "example": {
1288
+ "name": "Vladimir Putin",
1289
+ "min_score": 0.85,
1290
+ "limit": 10
1291
+ }
1292
+ },
1293
+ {
1294
+ "name": "watch",
1295
+ "method": "POST",
1296
+ "path": "/v1/tools/watch",
1297
+ "paid": false,
1298
+ "readOnly": false,
1299
+ "title": "Watch",
1300
+ "description": "Be told when one attribute of one entity changes. Creating the watch is free; each change delivered is charged from prepaid credits, up to `max_spend` dollars. Only attributes we ingest on a schedule can be watched; a refusal names them. `key` is the entity's own identifier, as Changes takes it. Give `webhook_url` (HTTPS) to have each change sent, signed with a secret returned once.",
1301
+ "inputSchema": {
1302
+ "type": "object",
1303
+ "properties": {
1304
+ "entity_type": {
1305
+ "type": "string",
1306
+ "description": "The kind of entity, for example \"company\" or \"record\""
1307
+ },
1308
+ "attribute": {
1309
+ "type": "string",
1310
+ "description": "The attribute to watch, for example \"sanctions\""
1311
+ },
1312
+ "key": {
1313
+ "type": "string",
1314
+ "description": "The entity's key, the source's own identifier, as Changes takes it"
1315
+ },
1316
+ "max_spend": {
1317
+ "type": "number",
1318
+ "description": "Most to spend on this watch in dollars: at least the price of one change, at most 100"
1319
+ },
1320
+ "webhook_url": {
1321
+ "type": "string",
1322
+ "description": "HTTPS URL to send each change to"
1323
+ }
1324
+ },
1325
+ "required": [
1326
+ "entity_type",
1327
+ "attribute",
1328
+ "key",
1329
+ "max_spend"
1330
+ ]
1331
+ },
1332
+ "example": {
1333
+ "entity_type": "company",
1334
+ "attribute": "sanctions",
1335
+ "key": "acme-corp",
1336
+ "max_spend": 5
1337
+ }
1338
+ }
1339
+ ];