@credal/actions 0.2.216 → 0.2.218

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.
@@ -263,7 +263,7 @@ export const asanaListAsanaTasksByProjectOutputSchema = z.object({
263
263
  }))
264
264
  .nullable()
265
265
  .optional(),
266
- num_subtasks: z.number().optional(),
266
+ num_subtasks: z.coerce.number().optional(),
267
267
  }),
268
268
  subtasks: z
269
269
  .array(z.object({
@@ -281,7 +281,7 @@ export const asanaListAsanaTasksByProjectOutputSchema = z.object({
281
281
  }))
282
282
  .nullable()
283
283
  .optional(),
284
- num_subtasks: z.number().optional(),
284
+ num_subtasks: z.coerce.number().optional(),
285
285
  }))
286
286
  .nullable()
287
287
  .optional(),
@@ -443,7 +443,7 @@ export const slackGetChannelMessagesParamsSchema = z.object({
443
443
  .string()
444
444
  .describe("Only messages before this Unix timestamp will be included. Default is the current time. Use with oldest to create a time range.")
445
445
  .optional(),
446
- limit: z
446
+ limit: z.coerce
447
447
  .number()
448
448
  .describe("Maximum number of messages to return (1-999). Default is 100. Slack recommends no more than 200 results at a time for performance.")
449
449
  .optional(),
@@ -500,7 +500,7 @@ export const slackUserSearchSlackParamsSchema = z.object({
500
500
  .enum(["im", "group", "channel"])
501
501
  .describe("Optional filter for the type of messages to search for. If not specified, all message types will be searched.")
502
502
  .optional(),
503
- limit: z
503
+ limit: z.coerce
504
504
  .number()
505
505
  .gte(1)
506
506
  .lte(100)
@@ -581,7 +581,7 @@ export const slackUserSearchSlackRTSParamsSchema = z.object({
581
581
  .boolean()
582
582
  .describe("Whether to include contextual messages in search results.")
583
583
  .default(false),
584
- limit: z.number().gte(1).lte(20).describe("Maximum number of results per page (max 20).").default(20),
584
+ limit: z.coerce.number().gte(1).lte(20).describe("Maximum number of results per page (max 20).").default(20),
585
585
  before: z
586
586
  .string()
587
587
  .describe("Optional UNIX timestamp filter. If present, filters for results before this date. Use this field when you want to find messages in a specific date/time range.")
@@ -619,10 +619,10 @@ export const slackUserSearchSlackRTSOutputSchema = z.object({
619
619
  .describe("Search results containing messages and/or files."),
620
620
  });
621
621
  export const mathAddParamsSchema = z.object({
622
- a: z.number().describe("The first number to add"),
623
- b: z.number().describe("The second number to add"),
622
+ a: z.coerce.number().describe("The first number to add"),
623
+ b: z.coerce.number().describe("The second number to add"),
624
624
  });
625
- export const mathAddOutputSchema = z.object({ result: z.number().describe("The sum of the two numbers") });
625
+ export const mathAddOutputSchema = z.object({ result: z.coerce.number().describe("The sum of the two numbers") });
626
626
  export const confluenceOverwritePageParamsSchema = z.object({
627
627
  pageId: z.string().describe("The page id for the page to add content to"),
628
628
  title: z.string().describe("The title of the page that should be updated"),
@@ -821,12 +821,24 @@ export const jiraUpdateJiraTicketStatusOutputSchema = z.object({
821
821
  });
822
822
  export const jiraGetJiraIssuesByQueryParamsSchema = z.object({
823
823
  query: z.string().describe("The JQL query to execute"),
824
- limit: z
824
+ limit: z.coerce
825
825
  .number()
826
- .describe("The maximum number of records to retrieve. Defaults to 100. For exhaustive queries where all matching issues are needed, set this to a value larger than the expected result count (e.g. 500 or 1000).")
826
+ .describe("The maximum number of records to retrieve per call (page size). Defaults to 100.")
827
+ .optional(),
828
+ startAt: z.coerce
829
+ .number()
830
+ .describe("Offset of the first result to return. Defaults to 0. To page through results: count the number of results you can actually read in the response and pass currentStartAt + countOfResultsRead as the next startAt. Do not blindly use itemsReturned to advance — the response may be truncated by the system after this action returns, meaning you may see fewer results than itemsReturned reports.")
827
831
  .optional(),
828
832
  });
829
833
  export const jiraGetJiraIssuesByQueryOutputSchema = z.object({
834
+ itemsReturned: z.coerce
835
+ .number()
836
+ .describe("Number of items fetched by this action. This field intentionally appears before results so it survives system-level response truncation. Warning: the system may truncate the results array before you see it, so you may receive fewer results than this number. Always count the results you can actually read and use currentStartAt + countOfResultsRead as the next startAt, not currentStartAt + itemsReturned.")
837
+ .optional(),
838
+ truncated: z
839
+ .boolean()
840
+ .describe("True when more results exist beyond this batch. Call again with startAt set to currentStartAt + countOfResultsRead (the number of results you actually received in this response).")
841
+ .optional(),
830
842
  results: z
831
843
  .array(z.object({
832
844
  name: z.string().describe("The name of the result"),
@@ -881,14 +893,6 @@ export const jiraGetJiraIssuesByQueryOutputSchema = z.object({
881
893
  }))
882
894
  .describe("The results of the Jira issues")
883
895
  .optional(),
884
- total: z
885
- .number()
886
- .describe("The total number of Jira issues matching the query. When present and greater than the number of results returned, re-run with a higher limit to retrieve all issues.")
887
- .optional(),
888
- truncated: z
889
- .boolean()
890
- .describe("True when the result set was cut off at the requested limit and more issues exist. Re-run with a higher limit to retrieve all issues.")
891
- .optional(),
892
896
  error: z.string().describe("The error that occurred if the records were not successfully retrieved").optional(),
893
897
  });
894
898
  export const jiraLinkJiraIssuesParamsSchema = z.object({
@@ -1084,12 +1088,24 @@ export const jiraOrgUpdateJiraTicketStatusOutputSchema = z.object({
1084
1088
  });
1085
1089
  export const jiraOrgGetJiraIssuesByQueryParamsSchema = z.object({
1086
1090
  query: z.string().describe("The JQL query to execute"),
1087
- limit: z
1091
+ limit: z.coerce
1088
1092
  .number()
1089
- .describe("The maximum number of records to retrieve. Defaults to 100. For exhaustive queries where all matching issues are needed, set this to a value larger than the expected result count (e.g. 500 or 1000).")
1093
+ .describe("The maximum number of records to retrieve per call (page size). Defaults to 100.")
1094
+ .optional(),
1095
+ startAt: z.coerce
1096
+ .number()
1097
+ .describe("Offset of the first result to return. Defaults to 0. To page through results: count the number of results you can actually read in the response and pass currentStartAt + countOfResultsRead as the next startAt. Do not blindly use itemsReturned to advance — the response may be truncated by the system after this action returns, meaning you may see fewer results than itemsReturned reports.")
1090
1098
  .optional(),
1091
1099
  });
1092
1100
  export const jiraOrgGetJiraIssuesByQueryOutputSchema = z.object({
1101
+ itemsReturned: z.coerce
1102
+ .number()
1103
+ .describe("Number of items fetched by this action. This field intentionally appears before results so it survives system-level response truncation. Warning: the system may truncate the results array before you see it, so you may receive fewer results than this number. Always count the results you can actually read and use currentStartAt + countOfResultsRead as the next startAt, not currentStartAt + itemsReturned.")
1104
+ .optional(),
1105
+ truncated: z
1106
+ .boolean()
1107
+ .describe("True when more results exist beyond this batch. Call again with startAt set to currentStartAt + countOfResultsRead (the number of results you actually received in this response).")
1108
+ .optional(),
1093
1109
  results: z
1094
1110
  .array(z.object({
1095
1111
  name: z.string().describe("The name of the result"),
@@ -1144,14 +1160,6 @@ export const jiraOrgGetJiraIssuesByQueryOutputSchema = z.object({
1144
1160
  }))
1145
1161
  .describe("The results of the Jira issues")
1146
1162
  .optional(),
1147
- total: z
1148
- .number()
1149
- .describe("The total number of Jira issues matching the query. When present and greater than the number of results returned, re-run with a higher limit to retrieve all issues.")
1150
- .optional(),
1151
- truncated: z
1152
- .boolean()
1153
- .describe("True when the result set was cut off at the requested limit and more issues exist. Re-run with a higher limit to retrieve all issues.")
1154
- .optional(),
1155
1163
  error: z.string().describe("The error that occurred if the records were not successfully retrieved").optional(),
1156
1164
  });
1157
1165
  export const jiraOrgLinkJiraIssuesParamsSchema = z.object({
@@ -1347,12 +1355,24 @@ export const jiraDataCenterUpdateJiraTicketStatusOutputSchema = z.object({
1347
1355
  });
1348
1356
  export const jiraDataCenterGetJiraIssuesByQueryParamsSchema = z.object({
1349
1357
  query: z.string().describe("The JQL query to execute"),
1350
- limit: z
1358
+ limit: z.coerce
1351
1359
  .number()
1352
- .describe("The maximum number of records to retrieve. Defaults to 100. For exhaustive queries where all matching issues are needed, set this to a value larger than the expected result count (e.g. 500 or 1000).")
1360
+ .describe("The maximum number of records to retrieve per call (page size). Defaults to 100.")
1361
+ .optional(),
1362
+ startAt: z.coerce
1363
+ .number()
1364
+ .describe("Offset of the first result to return. Defaults to 0. To page through results: count the number of results you can actually read in the response and pass currentStartAt + countOfResultsRead as the next startAt. Do not blindly use itemsReturned to advance — the response may be truncated by the system after this action returns, meaning you may see fewer results than itemsReturned reports.")
1353
1365
  .optional(),
1354
1366
  });
1355
1367
  export const jiraDataCenterGetJiraIssuesByQueryOutputSchema = z.object({
1368
+ itemsReturned: z.coerce
1369
+ .number()
1370
+ .describe("Number of items fetched by this action. This field intentionally appears before results so it survives system-level response truncation. Warning: the system may truncate the results array before you see it, so you may receive fewer results than this number. Always count the results you can actually read and use currentStartAt + countOfResultsRead as the next startAt, not currentStartAt + itemsReturned.")
1371
+ .optional(),
1372
+ truncated: z
1373
+ .boolean()
1374
+ .describe("True when more results exist beyond this batch. Call again with startAt set to currentStartAt + countOfResultsRead (the number of results you actually received in this response).")
1375
+ .optional(),
1356
1376
  results: z
1357
1377
  .array(z.object({
1358
1378
  name: z.string().describe("The name of the result"),
@@ -1407,14 +1427,6 @@ export const jiraDataCenterGetJiraIssuesByQueryOutputSchema = z.object({
1407
1427
  }))
1408
1428
  .describe("The results of the Jira issues")
1409
1429
  .optional(),
1410
- total: z
1411
- .number()
1412
- .describe("The total number of Jira issues matching the query. When present and greater than the number of results returned, re-run with a higher limit to retrieve all issues.")
1413
- .optional(),
1414
- truncated: z
1415
- .boolean()
1416
- .describe("True when the result set was cut off at the requested limit and more issues exist. Re-run with a higher limit to retrieve all issues.")
1417
- .optional(),
1418
1430
  error: z.string().describe("The error that occurred if the records were not successfully retrieved").optional(),
1419
1431
  });
1420
1432
  export const jiraDataCenterLinkJiraIssuesParamsSchema = z.object({
@@ -1490,8 +1502,8 @@ export const googlemapsValidateAddressOutputSchema = z.object({
1490
1502
  .object({
1491
1503
  location: z
1492
1504
  .object({
1493
- latitude: z.number().describe("The latitude of the address.").optional(),
1494
- longitude: z.number().describe("The longitude of the address.").optional(),
1505
+ latitude: z.coerce.number().describe("The latitude of the address.").optional(),
1506
+ longitude: z.coerce.number().describe("The longitude of the address.").optional(),
1495
1507
  })
1496
1508
  .optional(),
1497
1509
  plusCode: z
@@ -1503,8 +1515,12 @@ export const googlemapsValidateAddressOutputSchema = z.object({
1503
1515
  .optional(),
1504
1516
  bounds: z
1505
1517
  .object({
1506
- northeast: z.object({ latitude: z.number().optional(), longitude: z.number().optional() }).optional(),
1507
- southwest: z.object({ latitude: z.number().optional(), longitude: z.number().optional() }).optional(),
1518
+ northeast: z
1519
+ .object({ latitude: z.coerce.number().optional(), longitude: z.coerce.number().optional() })
1520
+ .optional(),
1521
+ southwest: z
1522
+ .object({ latitude: z.coerce.number().optional(), longitude: z.coerce.number().optional() })
1523
+ .optional(),
1508
1524
  })
1509
1525
  .describe("The viewport bounds for the address.")
1510
1526
  .optional(),
@@ -1521,15 +1537,15 @@ export const googlemapsValidateAddressOutputSchema = z.object({
1521
1537
  .optional(),
1522
1538
  });
1523
1539
  export const googlemapsNearbysearchRestaurantsParamsSchema = z.object({
1524
- latitude: z.number().describe("The latitude of the location to search nearby"),
1525
- longitude: z.number().describe("The longitude of the location to search nearby"),
1540
+ latitude: z.coerce.number().describe("The latitude of the location to search nearby"),
1541
+ longitude: z.coerce.number().describe("The longitude of the location to search nearby"),
1526
1542
  });
1527
1543
  export const googlemapsNearbysearchRestaurantsOutputSchema = z.object({
1528
1544
  results: z
1529
1545
  .array(z.object({
1530
1546
  name: z.string().describe("The name of the place").optional(),
1531
1547
  address: z.string().describe("The address of the place").optional(),
1532
- rating: z.number().describe("The rating of the place").optional(),
1548
+ rating: z.coerce.number().describe("The rating of the place").optional(),
1533
1549
  priceLevel: z.string().describe("The price level of the place").optional(),
1534
1550
  openingHours: z.string().describe("The opening hours of the place").optional(),
1535
1551
  primaryType: z.string().describe("The primary type of the place").optional(),
@@ -1540,7 +1556,7 @@ export const googlemapsNearbysearchRestaurantsOutputSchema = z.object({
1540
1556
  });
1541
1557
  export const bingGetTopNSearchResultUrlsParamsSchema = z.object({
1542
1558
  query: z.string().describe("The query to search for"),
1543
- count: z.number().describe("The number of results to return. Default is 5.").optional(),
1559
+ count: z.coerce.number().describe("The number of results to return. Default is 5.").optional(),
1544
1560
  site: z
1545
1561
  .string()
1546
1562
  .describe("The site to restrict the search to (by inserting site:<site.com> in the query). Examples include openai.com, github.com")
@@ -1558,7 +1574,7 @@ export const zendeskCreateZendeskTicketParamsSchema = z.object({
1558
1574
  subject: z.string().describe("The subject of the ticket"),
1559
1575
  body: z.string().describe("The body of the ticket").optional(),
1560
1576
  subdomain: z.string().describe("The subdomain of the Zendesk account"),
1561
- groupId: z.number().describe("The ID of the group to assign the ticket to").optional(),
1577
+ groupId: z.coerce.number().describe("The ID of the group to assign the ticket to").optional(),
1562
1578
  });
1563
1579
  export const zendeskCreateZendeskTicketOutputSchema = z.object({
1564
1580
  ticketId: z.string().describe("The ID of the ticket created"),
@@ -1570,7 +1586,7 @@ export const zendeskListZendeskTicketsParamsSchema = z.object({
1570
1586
  });
1571
1587
  export const zendeskListZendeskTicketsOutputSchema = z.object({
1572
1588
  tickets: z.array(z.object({}).catchall(z.any())).describe("List of tickets"),
1573
- count: z.number().describe("Number of tickets found"),
1589
+ count: z.coerce.number().describe("Number of tickets found"),
1574
1590
  });
1575
1591
  export const zendeskGetTicketDetailsParamsSchema = z.object({
1576
1592
  ticketId: z.string().describe("The ID of the ticket"),
@@ -1612,11 +1628,11 @@ export const zendeskSearchZendeskByQueryParamsSchema = z.object({
1612
1628
  .enum(["ticket", "user", "organization", "group"])
1613
1629
  .describe("The type of Zendesk object to search (defaults to ticket)")
1614
1630
  .optional(),
1615
- limit: z.number().describe("Maximum number of objects to return (optional, defaults to 100)").optional(),
1631
+ limit: z.coerce.number().describe("Maximum number of objects to return (optional, defaults to 100)").optional(),
1616
1632
  });
1617
1633
  export const zendeskSearchZendeskByQueryOutputSchema = z.object({
1618
1634
  results: z.array(z.object({}).catchall(z.any())).describe("List of objects matching the query"),
1619
- count: z.number().describe("Number of objects found"),
1635
+ count: z.coerce.number().describe("Number of objects found"),
1620
1636
  });
1621
1637
  export const linkedinCreateShareLinkedinPostUrlParamsSchema = z.object({
1622
1638
  text: z.string().describe("The text for the linkedin post").optional(),
@@ -1667,12 +1683,12 @@ export const snowflakeRunSnowflakeQueryParamsSchema = z.object({
1667
1683
  accountName: z.string().describe("The name of the Snowflake account"),
1668
1684
  username: z.string().describe("The username of the Snowflake Credential (optional)").optional(),
1669
1685
  outputFormat: z.enum(["json", "csv"]).describe("The format of the output").optional(),
1670
- limit: z.number().describe("A limit on the number of rows to return").optional(),
1671
- codeInterpreterLimit: z
1686
+ limit: z.coerce.number().describe("A limit on the number of rows to return").optional(),
1687
+ codeInterpreterLimit: z.coerce
1672
1688
  .number()
1673
1689
  .describe("A minimum number of rows required to pass to code interpreter for analysis and image generation (if enabled)")
1674
1690
  .optional(),
1675
- codeInterpreterImageGenLimit: z
1691
+ codeInterpreterImageGenLimit: z.coerce
1676
1692
  .number()
1677
1693
  .describe("A minimum number of rows required to pass to code interpreter for image generation only (if enabled)")
1678
1694
  .optional(),
@@ -1680,7 +1696,7 @@ export const snowflakeRunSnowflakeQueryParamsSchema = z.object({
1680
1696
  export const snowflakeRunSnowflakeQueryOutputSchema = z.object({
1681
1697
  format: z.enum(["json", "csv"]).describe("The format of the output"),
1682
1698
  content: z.string().describe("The content of the query result (json)"),
1683
- rowCount: z.number().describe("The number of rows returned by the query"),
1699
+ rowCount: z.coerce.number().describe("The number of rows returned by the query"),
1684
1700
  error: z.string().describe("The error that occurred if the query results failed or were limited").optional(),
1685
1701
  });
1686
1702
  export const openstreetmapGetLatitudeLongitudeFromLocationParamsSchema = z.object({
@@ -1689,22 +1705,22 @@ export const openstreetmapGetLatitudeLongitudeFromLocationParamsSchema = z.objec
1689
1705
  export const openstreetmapGetLatitudeLongitudeFromLocationOutputSchema = z.object({
1690
1706
  results: z
1691
1707
  .array(z.object({
1692
- latitude: z.number().describe("The latitude of the location"),
1693
- longitude: z.number().describe("The longitude of the location"),
1708
+ latitude: z.coerce.number().describe("The latitude of the location"),
1709
+ longitude: z.coerce.number().describe("The longitude of the location"),
1694
1710
  display_name: z.string().describe("The display name of the location"),
1695
1711
  }))
1696
1712
  .describe("The results of the query")
1697
1713
  .optional(),
1698
1714
  });
1699
1715
  export const nwsGetForecastForLocationParamsSchema = z.object({
1700
- latitude: z.number().describe("The latitude of the location"),
1701
- longitude: z.number().describe("The longitude of the location"),
1716
+ latitude: z.coerce.number().describe("The latitude of the location"),
1717
+ longitude: z.coerce.number().describe("The longitude of the location"),
1702
1718
  isoDate: z.string().describe("The date to get the forecast for, in ISO datetime format"),
1703
1719
  });
1704
1720
  export const nwsGetForecastForLocationOutputSchema = z.object({
1705
1721
  result: z
1706
1722
  .object({
1707
- temperature: z.number().describe("The temperature at the location"),
1723
+ temperature: z.coerce.number().describe("The temperature at the location"),
1708
1724
  temperatureUnit: z.string().describe("The unit of temperature"),
1709
1725
  forecast: z.string().describe("The forecast for the location"),
1710
1726
  })
@@ -1712,9 +1728,9 @@ export const nwsGetForecastForLocationOutputSchema = z.object({
1712
1728
  });
1713
1729
  export const firecrawlDeepResearchParamsSchema = z.object({
1714
1730
  query: z.string().describe("The query to search for"),
1715
- maxDepth: z.number().describe("The maximum depth of the search").optional(),
1716
- timeLimit: z.number().describe("The time limit for the search in seconds").optional(),
1717
- maxUrls: z.number().describe("The maximum number of URLs to scrape").optional(),
1731
+ maxDepth: z.coerce.number().describe("The maximum depth of the search").optional(),
1732
+ timeLimit: z.coerce.number().describe("The time limit for the search in seconds").optional(),
1733
+ maxUrls: z.coerce.number().describe("The maximum number of URLs to scrape").optional(),
1718
1734
  });
1719
1735
  export const firecrawlDeepResearchOutputSchema = z.object({
1720
1736
  finalAnalysis: z.string().describe("The content of the research"),
@@ -1728,7 +1744,7 @@ export const firecrawlDeepResearchOutputSchema = z.object({
1728
1744
  });
1729
1745
  export const firecrawlScrapeUrlParamsSchema = z.object({
1730
1746
  url: z.string().describe("The URL to scrape"),
1731
- waitMs: z.number().gte(0).describe("Optional wait time in milliseconds before scraping the page").optional(),
1747
+ waitMs: z.coerce.number().gte(0).describe("Optional wait time in milliseconds before scraping the page").optional(),
1732
1748
  onlyMainContent: z
1733
1749
  .boolean()
1734
1750
  .describe("Extract only the main content of the page, excluding headers, footers, and navigation")
@@ -1752,7 +1768,7 @@ export const firecrawlScrapeUrlOutputSchema = z.object({
1752
1768
  });
1753
1769
  export const firecrawlSearchAndScrapeParamsSchema = z.object({
1754
1770
  query: z.string().describe("The query to search for"),
1755
- count: z.number().describe("The number of results to return. Default is 5.").optional(),
1771
+ count: z.coerce.number().describe("The number of results to return. Default is 5.").optional(),
1756
1772
  site: z
1757
1773
  .string()
1758
1774
  .describe("The site to restrict the search to (by inserting site:<site.com> in the query). Examples include openai.com, github.com")
@@ -1769,7 +1785,7 @@ export const firecrawlSearchAndScrapeOutputSchema = z.object({
1769
1785
  });
1770
1786
  export const firecrawlGetTopNSearchResultUrlsParamsSchema = z.object({
1771
1787
  query: z.string().describe("The query to search for"),
1772
- count: z.number().describe("The number of results to return. Default is 5.").optional(),
1788
+ count: z.coerce.number().describe("The number of results to return. Default is 5.").optional(),
1773
1789
  site: z
1774
1790
  .string()
1775
1791
  .describe("The site to restrict the search to (by inserting site:<site.com> in the query). Examples include openai.com, github.com")
@@ -1864,7 +1880,9 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1864
1880
  text: z.string().describe("The text to insert"),
1865
1881
  location: z
1866
1882
  .object({
1867
- index: z.number().describe("The zero-based index in the document where to insert the text"),
1883
+ index: z.coerce
1884
+ .number()
1885
+ .describe("The zero-based index in the document where to insert the text"),
1868
1886
  })
1869
1887
  .describe("The location where the text will be inserted"),
1870
1888
  })
@@ -1887,7 +1905,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1887
1905
  bold: z.boolean().describe("Whether the text is bold").optional(),
1888
1906
  fontSize: z
1889
1907
  .object({
1890
- magnitude: z.number().describe("The font size in points").optional(),
1908
+ magnitude: z.coerce.number().describe("The font size in points").optional(),
1891
1909
  unit: z.string().describe("The units for the font size").optional(),
1892
1910
  })
1893
1911
  .describe("The size of the text's font")
@@ -1907,7 +1925,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1907
1925
  weightedFontFamily: z
1908
1926
  .object({
1909
1927
  fontFamily: z.string().describe("The font family of the text").optional(),
1910
- weight: z.number().describe("The weight of the font").optional(),
1928
+ weight: z.coerce.number().describe("The weight of the font").optional(),
1911
1929
  })
1912
1930
  .describe("The font family and weight of the text")
1913
1931
  .optional(),
@@ -1916,8 +1934,8 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1916
1934
  fields: z.string().describe("The fields that should be updated"),
1917
1935
  range: z
1918
1936
  .object({
1919
- startIndex: z.number().describe("The zero-based starting index of the range"),
1920
- endIndex: z.number().describe("The zero-based ending index of the range (exclusive)"),
1937
+ startIndex: z.coerce.number().describe("The zero-based starting index of the range"),
1938
+ endIndex: z.coerce.number().describe("The zero-based ending index of the range (exclusive)"),
1921
1939
  })
1922
1940
  .describe("The range of text to style")
1923
1941
  .optional(),
@@ -1929,8 +1947,8 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1929
1947
  .object({
1930
1948
  range: z
1931
1949
  .object({
1932
- startIndex: z.number().describe("The zero-based starting index of the range"),
1933
- endIndex: z.number().describe("The zero-based ending index of the range (exclusive)"),
1950
+ startIndex: z.coerce.number().describe("The zero-based starting index of the range"),
1951
+ endIndex: z.coerce.number().describe("The zero-based ending index of the range (exclusive)"),
1934
1952
  })
1935
1953
  .describe("The range of content to delete"),
1936
1954
  })
@@ -1942,10 +1960,10 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1942
1960
  tableCellLocation: z
1943
1961
  .object({
1944
1962
  tableStartLocation: z
1945
- .object({ index: z.number().describe("The zero-based index in the document") })
1963
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
1946
1964
  .describe("The location where the table starts"),
1947
- rowIndex: z.number().describe("The zero-based row index").optional(),
1948
- columnIndex: z.number().describe("The zero-based column index").optional(),
1965
+ rowIndex: z.coerce.number().describe("The zero-based row index").optional(),
1966
+ columnIndex: z.coerce.number().describe("The zero-based column index").optional(),
1949
1967
  })
1950
1968
  .describe("The location where the table row will be inserted"),
1951
1969
  insertBelow: z.boolean().describe("Whether to insert the row below the reference row"),
@@ -1958,10 +1976,10 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1958
1976
  tableCellLocation: z
1959
1977
  .object({
1960
1978
  tableStartLocation: z
1961
- .object({ index: z.number().describe("The zero-based index in the document") })
1979
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
1962
1980
  .describe("The location where the table starts"),
1963
- rowIndex: z.number().describe("The zero-based row index").optional(),
1964
- columnIndex: z.number().describe("The zero-based column index").optional(),
1981
+ rowIndex: z.coerce.number().describe("The zero-based row index").optional(),
1982
+ columnIndex: z.coerce.number().describe("The zero-based column index").optional(),
1965
1983
  })
1966
1984
  .describe("The location where the table column will be inserted"),
1967
1985
  insertRight: z
@@ -1976,10 +1994,10 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1976
1994
  tableCellLocation: z
1977
1995
  .object({
1978
1996
  tableStartLocation: z
1979
- .object({ index: z.number().describe("The zero-based index in the document") })
1997
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
1980
1998
  .describe("The location where the table starts"),
1981
- rowIndex: z.number().describe("The zero-based row index").optional(),
1982
- columnIndex: z.number().describe("The zero-based column index").optional(),
1999
+ rowIndex: z.coerce.number().describe("The zero-based row index").optional(),
2000
+ columnIndex: z.coerce.number().describe("The zero-based column index").optional(),
1983
2001
  })
1984
2002
  .describe("The location of the row to delete"),
1985
2003
  })
@@ -1991,10 +2009,10 @@ export const googleOauthUpdateDocParamsSchema = z.object({
1991
2009
  tableCellLocation: z
1992
2010
  .object({
1993
2011
  tableStartLocation: z
1994
- .object({ index: z.number().describe("The zero-based index in the document") })
2012
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
1995
2013
  .describe("The location where the table starts"),
1996
- rowIndex: z.number().describe("The zero-based row index").optional(),
1997
- columnIndex: z.number().describe("The zero-based column index").optional(),
2014
+ rowIndex: z.coerce.number().describe("The zero-based row index").optional(),
2015
+ columnIndex: z.coerce.number().describe("The zero-based column index").optional(),
1998
2016
  })
1999
2017
  .describe("The location of the column to delete"),
2000
2018
  })
@@ -2005,8 +2023,8 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2005
2023
  .object({
2006
2024
  range: z
2007
2025
  .object({
2008
- startIndex: z.number().describe("The zero-based starting index of the range"),
2009
- endIndex: z.number().describe("The zero-based ending index of the range (exclusive)"),
2026
+ startIndex: z.coerce.number().describe("The zero-based starting index of the range"),
2027
+ endIndex: z.coerce.number().describe("The zero-based ending index of the range (exclusive)"),
2010
2028
  })
2011
2029
  .describe("The range of paragraphs to update"),
2012
2030
  paragraphStyle: z
@@ -2021,7 +2039,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2021
2039
  .optional(),
2022
2040
  indentStart: z
2023
2041
  .object({
2024
- magnitude: z.number().describe("The magnitude of indentation").optional(),
2042
+ magnitude: z.coerce.number().describe("The magnitude of indentation").optional(),
2025
2043
  unit: z.string().describe("The units of indentation").optional(),
2026
2044
  })
2027
2045
  .describe("The amount of indentation for the paragraph")
@@ -2041,7 +2059,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2041
2059
  .describe("Whether to keep all lines on the same page")
2042
2060
  .optional(),
2043
2061
  keepWithNext: z.boolean().describe("Whether to keep with the next paragraph").optional(),
2044
- lineSpacing: z.number().describe("The amount of space between lines").optional(),
2062
+ lineSpacing: z.coerce.number().describe("The amount of space between lines").optional(),
2045
2063
  spaceAbove: z
2046
2064
  .object({})
2047
2065
  .catchall(z.any())
@@ -2074,8 +2092,8 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2074
2092
  .object({
2075
2093
  range: z
2076
2094
  .object({
2077
- startIndex: z.number().describe("The zero-based starting index of the range"),
2078
- endIndex: z.number().describe("The zero-based ending index of the range (exclusive)"),
2095
+ startIndex: z.coerce.number().describe("The zero-based starting index of the range"),
2096
+ endIndex: z.coerce.number().describe("The zero-based ending index of the range (exclusive)"),
2079
2097
  })
2080
2098
  .describe("The range of paragraphs to bullet"),
2081
2099
  bulletPreset: z
@@ -2107,8 +2125,8 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2107
2125
  .object({
2108
2126
  range: z
2109
2127
  .object({
2110
- startIndex: z.number().describe("The zero-based starting index of the range"),
2111
- endIndex: z.number().describe("The zero-based ending index of the range (exclusive)"),
2128
+ startIndex: z.coerce.number().describe("The zero-based starting index of the range"),
2129
+ endIndex: z.coerce.number().describe("The zero-based ending index of the range (exclusive)"),
2112
2130
  })
2113
2131
  .describe("The range of paragraphs to remove bullets from"),
2114
2132
  })
@@ -2118,7 +2136,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2118
2136
  insertPageBreak: z
2119
2137
  .object({
2120
2138
  location: z
2121
- .object({ index: z.number().describe("The zero-based index in the document") })
2139
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
2122
2140
  .describe("The location at which to insert the page break"),
2123
2141
  })
2124
2142
  .describe("Inserts a page break"),
@@ -2149,7 +2167,10 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2149
2167
  marginBottom: z.object({}).catchall(z.any()).describe("The bottom page margin").optional(),
2150
2168
  marginRight: z.object({}).catchall(z.any()).describe("The right page margin").optional(),
2151
2169
  marginLeft: z.object({}).catchall(z.any()).describe("The left page margin").optional(),
2152
- pageNumberStart: z.number().describe("The page number from which to start counting").optional(),
2170
+ pageNumberStart: z.coerce
2171
+ .number()
2172
+ .describe("The page number from which to start counting")
2173
+ .optional(),
2153
2174
  pageSize: z
2154
2175
  .object({
2155
2176
  width: z.object({}).catchall(z.any()).describe("The width of the page").optional(),
@@ -2207,7 +2228,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2207
2228
  .describe("The right border of the cells")
2208
2229
  .optional(),
2209
2230
  borderTop: z.object({}).catchall(z.any()).describe("The top border of the cells").optional(),
2210
- columnSpan: z.number().describe("The number of columns that the cell spans").optional(),
2231
+ columnSpan: z.coerce.number().describe("The number of columns that the cell spans").optional(),
2211
2232
  contentAlignment: z
2212
2233
  .string()
2213
2234
  .describe("The alignment of the content within the cells")
@@ -2228,7 +2249,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2228
2249
  .describe("The right padding of the cells")
2229
2250
  .optional(),
2230
2251
  paddingTop: z.object({}).catchall(z.any()).describe("The top padding of the cells").optional(),
2231
- rowSpan: z.number().describe("The number of rows that the cell spans").optional(),
2252
+ rowSpan: z.coerce.number().describe("The number of rows that the cell spans").optional(),
2232
2253
  })
2233
2254
  .describe("The style to apply to the cells"),
2234
2255
  fields: z.string().describe("The fields that should be updated"),
@@ -2237,14 +2258,14 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2237
2258
  tableCellLocation: z
2238
2259
  .object({
2239
2260
  tableStartLocation: z
2240
- .object({ index: z.number().describe("The zero-based index in the document") })
2261
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
2241
2262
  .describe("The location where the table starts"),
2242
- rowIndex: z.number().describe("The zero-based row index").optional(),
2243
- columnIndex: z.number().describe("The zero-based column index").optional(),
2263
+ rowIndex: z.coerce.number().describe("The zero-based row index").optional(),
2264
+ columnIndex: z.coerce.number().describe("The zero-based column index").optional(),
2244
2265
  })
2245
2266
  .describe("The location of the table cell"),
2246
- rowSpan: z.number().describe("The number of rows that the range should span"),
2247
- columnSpan: z.number().describe("The number of columns that the range should span"),
2267
+ rowSpan: z.coerce.number().describe("The number of rows that the range should span"),
2268
+ columnSpan: z.coerce.number().describe("The number of columns that the range should span"),
2248
2269
  })
2249
2270
  .describe("The table range to apply the style to"),
2250
2271
  })
@@ -2258,14 +2279,14 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2258
2279
  tableCellLocation: z
2259
2280
  .object({
2260
2281
  tableStartLocation: z
2261
- .object({ index: z.number().describe("The zero-based index in the document") })
2282
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
2262
2283
  .describe("The location where the table starts"),
2263
- rowIndex: z.number().describe("The zero-based row index").optional(),
2264
- columnIndex: z.number().describe("The zero-based column index").optional(),
2284
+ rowIndex: z.coerce.number().describe("The zero-based row index").optional(),
2285
+ columnIndex: z.coerce.number().describe("The zero-based column index").optional(),
2265
2286
  })
2266
2287
  .describe("The location of the table cell"),
2267
- rowSpan: z.number().describe("The number of rows that the range should span"),
2268
- columnSpan: z.number().describe("The number of columns that the range should span"),
2288
+ rowSpan: z.coerce.number().describe("The number of rows that the range should span"),
2289
+ columnSpan: z.coerce.number().describe("The number of columns that the range should span"),
2269
2290
  })
2270
2291
  .describe("The table range to merge"),
2271
2292
  })
@@ -2279,14 +2300,14 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2279
2300
  tableCellLocation: z
2280
2301
  .object({
2281
2302
  tableStartLocation: z
2282
- .object({ index: z.number().describe("The zero-based index in the document") })
2303
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
2283
2304
  .describe("The location where the table starts"),
2284
- rowIndex: z.number().describe("The zero-based row index").optional(),
2285
- columnIndex: z.number().describe("The zero-based column index").optional(),
2305
+ rowIndex: z.coerce.number().describe("The zero-based row index").optional(),
2306
+ columnIndex: z.coerce.number().describe("The zero-based column index").optional(),
2286
2307
  })
2287
2308
  .describe("The location of the table cell"),
2288
- rowSpan: z.number().describe("The number of rows that the range should span"),
2289
- columnSpan: z.number().describe("The number of columns that the range should span"),
2309
+ rowSpan: z.coerce.number().describe("The number of rows that the range should span"),
2310
+ columnSpan: z.coerce.number().describe("The number of columns that the range should span"),
2290
2311
  })
2291
2312
  .describe("The table range to unmerge"),
2292
2313
  })
@@ -2298,8 +2319,8 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2298
2319
  name: z.string().describe("The name of the range"),
2299
2320
  range: z
2300
2321
  .object({
2301
- startIndex: z.number().describe("The zero-based starting index of the range"),
2302
- endIndex: z.number().describe("The zero-based ending index of the range (exclusive)"),
2322
+ startIndex: z.coerce.number().describe("The zero-based starting index of the range"),
2323
+ endIndex: z.coerce.number().describe("The zero-based ending index of the range (exclusive)"),
2303
2324
  })
2304
2325
  .describe("The range to name"),
2305
2326
  })
@@ -2322,7 +2343,7 @@ export const googleOauthUpdateDocParamsSchema = z.object({
2322
2343
  insertInlineImage: z
2323
2344
  .object({
2324
2345
  location: z
2325
- .object({ index: z.number().describe("The zero-based index in the document") })
2346
+ .object({ index: z.coerce.number().describe("The zero-based index in the document") })
2326
2347
  .describe("The location at which to insert the image"),
2327
2348
  uri: z.string().describe("The image URI"),
2328
2349
  objectSize: z
@@ -2383,15 +2404,15 @@ export const googleOauthScheduleCalendarMeetingParamsSchema = z.object({
2383
2404
  recurrence: z
2384
2405
  .object({
2385
2406
  frequency: z.enum(["DAILY", "WEEKLY", "MONTHLY", "YEARLY"]).describe("How often the meeting repeats").optional(),
2386
- interval: z.number().gte(1).describe("The interval between recurrences (e.g., every 2 weeks)").optional(),
2387
- count: z.number().gte(1).describe("Number of occurrences after which to stop the recurrence").optional(),
2407
+ interval: z.coerce.number().gte(1).describe("The interval between recurrences (e.g., every 2 weeks)").optional(),
2408
+ count: z.coerce.number().gte(1).describe("Number of occurrences after which to stop the recurrence").optional(),
2388
2409
  until: z.string().describe("End date for the recurrence in RFC3339 format (YYYY-MM-DD)").optional(),
2389
2410
  byDay: z
2390
2411
  .array(z.enum(["MO", "TU", "WE", "TH", "FR", "SA", "SU"]))
2391
2412
  .describe("Days of the week when the meeting occurs (for WEEKLY frequency)")
2392
2413
  .optional(),
2393
2414
  byMonthDay: z
2394
- .array(z.number().gte(1).lte(31))
2415
+ .array(z.coerce.number().gte(1).lte(31))
2395
2416
  .describe("Days of the month when the meeting occurs (for MONTHLY frequency)")
2396
2417
  .optional(),
2397
2418
  })
@@ -2409,7 +2430,7 @@ export const googleOauthScheduleCalendarMeetingOutputSchema = z.object({
2409
2430
  error: z.string().describe("The error that occurred if the meeting was not scheduled successfully").optional(),
2410
2431
  });
2411
2432
  export const googleOauthListCalendarsParamsSchema = z.object({
2412
- maxResults: z.number().describe("Maximum number of calendars to return, defaults to 250").optional(),
2433
+ maxResults: z.coerce.number().describe("Maximum number of calendars to return, defaults to 250").optional(),
2413
2434
  });
2414
2435
  export const googleOauthListCalendarsOutputSchema = z.object({
2415
2436
  success: z.boolean().describe("Whether the calendars were listed successfully"),
@@ -2421,7 +2442,7 @@ export const googleOauthListCalendarsOutputSchema = z.object({
2421
2442
  export const googleOauthListCalendarEventsParamsSchema = z.object({
2422
2443
  calendarId: z.string().describe("The ID of the calendar to list events from"),
2423
2444
  query: z.string().describe("Optional free-text search query to filter events").optional(),
2424
- maxResults: z.number().describe("Maximum number of events to return, defaults to 250").optional(),
2445
+ maxResults: z.coerce.number().describe("Maximum number of events to return, defaults to 250").optional(),
2425
2446
  timeMin: z
2426
2447
  .string()
2427
2448
  .describe("Optional lower bound (exclusive) for an event's end time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z.")
@@ -2585,10 +2606,10 @@ export const googleOauthCreateSpreadsheetParamsSchema = z.object({
2585
2606
  title: z.string().describe("The title of the sheet").optional(),
2586
2607
  gridProperties: z
2587
2608
  .object({
2588
- rowCount: z.number().describe("The number of rows in the sheet").optional(),
2589
- columnCount: z.number().describe("The number of columns in the sheet").optional(),
2590
- frozenRowCount: z.number().describe("The number of frozen rows").optional(),
2591
- frozenColumnCount: z.number().describe("The number of frozen columns").optional(),
2609
+ rowCount: z.coerce.number().describe("The number of rows in the sheet").optional(),
2610
+ columnCount: z.coerce.number().describe("The number of columns in the sheet").optional(),
2611
+ frozenRowCount: z.coerce.number().describe("The number of frozen rows").optional(),
2612
+ frozenColumnCount: z.coerce.number().describe("The number of frozen columns").optional(),
2592
2613
  })
2593
2614
  .optional(),
2594
2615
  }))
@@ -2609,9 +2630,9 @@ export const googleOauthCreateSpreadsheetOutputSchema = z.object({
2609
2630
  spreadsheetUrl: z.string().describe("The URL to access the created spreadsheet").optional(),
2610
2631
  sheets: z
2611
2632
  .array(z.object({
2612
- sheetId: z.number().describe("The ID of the sheet").optional(),
2633
+ sheetId: z.coerce.number().describe("The ID of the sheet").optional(),
2613
2634
  title: z.string().describe("The title of the sheet").optional(),
2614
- index: z.number().describe("The index of the sheet").optional(),
2635
+ index: z.coerce.number().describe("The index of the sheet").optional(),
2615
2636
  }))
2616
2637
  .describe("Information about the created sheets")
2617
2638
  .optional(),
@@ -2626,10 +2647,10 @@ export const googleOauthGetSpreadsheetMetadataOutputSchema = z.object({
2626
2647
  spreadsheetTitle: z.string().describe("The spreadsheet title").optional(),
2627
2648
  sheets: z
2628
2649
  .array(z.object({
2629
- sheetId: z.number().describe("The ID of the sheet").optional(),
2650
+ sheetId: z.coerce.number().describe("The ID of the sheet").optional(),
2630
2651
  title: z.string().describe("The sheet title").optional(),
2631
- index: z.number().describe("The sheet index").optional(),
2632
- gid: z.number().describe("The gid used in Google Sheets URLs (same value as sheetId)").optional(),
2652
+ index: z.coerce.number().describe("The sheet index").optional(),
2653
+ gid: z.coerce.number().describe("The gid used in Google Sheets URLs (same value as sheetId)").optional(),
2633
2654
  }))
2634
2655
  .describe("The list of sheets in the spreadsheet")
2635
2656
  .optional(),
@@ -2651,8 +2672,8 @@ export const googleOauthUpdateSpreadsheetParamsSchema = z.object({
2651
2672
  title: z.string().describe("The title of the new sheet").optional(),
2652
2673
  gridProperties: z
2653
2674
  .object({
2654
- rowCount: z.number().describe("The number of rows in the sheet").optional(),
2655
- columnCount: z.number().describe("The number of columns in the sheet").optional(),
2675
+ rowCount: z.coerce.number().describe("The number of rows in the sheet").optional(),
2676
+ columnCount: z.coerce.number().describe("The number of columns in the sheet").optional(),
2656
2677
  })
2657
2678
  .optional(),
2658
2679
  })
@@ -2662,7 +2683,9 @@ export const googleOauthUpdateSpreadsheetParamsSchema = z.object({
2662
2683
  .describe("Add or update a sheet"),
2663
2684
  z
2664
2685
  .object({
2665
- deleteSheet: z.object({ sheetId: z.number().describe("The ID of the sheet to delete").optional() }),
2686
+ deleteSheet: z.object({
2687
+ sheetId: z.coerce.number().describe("The ID of the sheet to delete").optional(),
2688
+ }),
2666
2689
  })
2667
2690
  .describe("Delete a sheet"),
2668
2691
  z
@@ -2670,11 +2693,14 @@ export const googleOauthUpdateSpreadsheetParamsSchema = z.object({
2670
2693
  updateCells: z.object({
2671
2694
  range: z
2672
2695
  .object({
2673
- sheetId: z.number().describe("The ID of the sheet").optional(),
2674
- startRowIndex: z.number().describe("The start row (0-based, inclusive)").optional(),
2675
- endRowIndex: z.number().describe("The end row (0-based, exclusive)").optional(),
2676
- startColumnIndex: z.number().describe("The start column (0-based, inclusive)").optional(),
2677
- endColumnIndex: z.number().describe("The end column (0-based, exclusive)").optional(),
2696
+ sheetId: z.coerce.number().describe("The ID of the sheet").optional(),
2697
+ startRowIndex: z.coerce.number().describe("The start row (0-based, inclusive)").optional(),
2698
+ endRowIndex: z.coerce.number().describe("The end row (0-based, exclusive)").optional(),
2699
+ startColumnIndex: z.coerce
2700
+ .number()
2701
+ .describe("The start column (0-based, inclusive)")
2702
+ .optional(),
2703
+ endColumnIndex: z.coerce.number().describe("The end column (0-based, exclusive)").optional(),
2678
2704
  })
2679
2705
  .optional(),
2680
2706
  rows: z
@@ -2684,7 +2710,7 @@ export const googleOauthUpdateSpreadsheetParamsSchema = z.object({
2684
2710
  userEnteredValue: z
2685
2711
  .object({
2686
2712
  stringValue: z.string().optional(),
2687
- numberValue: z.number().optional(),
2713
+ numberValue: z.coerce.number().optional(),
2688
2714
  boolValue: z.boolean().optional(),
2689
2715
  formulaValue: z.string().optional(),
2690
2716
  })
@@ -2701,14 +2727,14 @@ export const googleOauthUpdateSpreadsheetParamsSchema = z.object({
2701
2727
  updateSheetProperties: z.object({
2702
2728
  properties: z
2703
2729
  .object({
2704
- sheetId: z.number().describe("The ID of the sheet to update").optional(),
2730
+ sheetId: z.coerce.number().describe("The ID of the sheet to update").optional(),
2705
2731
  title: z.string().describe("The new title of the sheet").optional(),
2706
2732
  gridProperties: z
2707
2733
  .object({
2708
- rowCount: z.number().describe("The new number of rows").optional(),
2709
- columnCount: z.number().describe("The new number of columns").optional(),
2710
- frozenRowCount: z.number().describe("The number of frozen rows").optional(),
2711
- frozenColumnCount: z.number().describe("The number of frozen columns").optional(),
2734
+ rowCount: z.coerce.number().describe("The new number of rows").optional(),
2735
+ columnCount: z.coerce.number().describe("The new number of columns").optional(),
2736
+ frozenRowCount: z.coerce.number().describe("The number of frozen rows").optional(),
2737
+ frozenColumnCount: z.coerce.number().describe("The number of frozen columns").optional(),
2712
2738
  })
2713
2739
  .optional(),
2714
2740
  })
@@ -2739,10 +2765,10 @@ export const googleOauthUpdateSpreadsheetParamsSchema = z.object({
2739
2765
  .object({
2740
2766
  backgroundColor: z
2741
2767
  .object({
2742
- red: z.number().describe("The red component [0.0, 1.0]").optional(),
2743
- green: z.number().describe("The green component [0.0, 1.0]").optional(),
2744
- blue: z.number().describe("The blue component [0.0, 1.0]").optional(),
2745
- alpha: z.number().describe("The alpha component [0.0, 1.0]").optional(),
2768
+ red: z.coerce.number().describe("The red component [0.0, 1.0]").optional(),
2769
+ green: z.coerce.number().describe("The green component [0.0, 1.0]").optional(),
2770
+ blue: z.coerce.number().describe("The blue component [0.0, 1.0]").optional(),
2771
+ alpha: z.coerce.number().describe("The alpha component [0.0, 1.0]").optional(),
2746
2772
  })
2747
2773
  .optional(),
2748
2774
  numberFormat: z
@@ -2767,14 +2793,14 @@ export const googleOauthUpdateSpreadsheetParamsSchema = z.object({
2767
2793
  .object({
2768
2794
  foregroundColor: z
2769
2795
  .object({
2770
- red: z.number().describe("The red component [0.0, 1.0]").optional(),
2771
- green: z.number().describe("The green component [0.0, 1.0]").optional(),
2772
- blue: z.number().describe("The blue component [0.0, 1.0]").optional(),
2773
- alpha: z.number().describe("The alpha component [0.0, 1.0]").optional(),
2796
+ red: z.coerce.number().describe("The red component [0.0, 1.0]").optional(),
2797
+ green: z.coerce.number().describe("The green component [0.0, 1.0]").optional(),
2798
+ blue: z.coerce.number().describe("The blue component [0.0, 1.0]").optional(),
2799
+ alpha: z.coerce.number().describe("The alpha component [0.0, 1.0]").optional(),
2774
2800
  })
2775
2801
  .optional(),
2776
2802
  fontFamily: z.string().describe("The font family").optional(),
2777
- fontSize: z.number().describe("The size of the font in points").optional(),
2803
+ fontSize: z.coerce.number().describe("The size of the font in points").optional(),
2778
2804
  bold: z.boolean().describe("Whether the text is bold").optional(),
2779
2805
  italic: z.boolean().describe("Whether the text is italic").optional(),
2780
2806
  strikethrough: z.boolean().describe("Whether the text has a strikethrough").optional(),
@@ -2818,9 +2844,9 @@ export const googleOauthUpdateSpreadsheetOutputSchema = z.object({
2818
2844
  .object({
2819
2845
  properties: z
2820
2846
  .object({
2821
- sheetId: z.number().describe("The ID of the newly created sheet").optional(),
2847
+ sheetId: z.coerce.number().describe("The ID of the newly created sheet").optional(),
2822
2848
  title: z.string().describe("The title of the new sheet").optional(),
2823
- index: z.number().describe("The index of the new sheet").optional(),
2849
+ index: z.coerce.number().describe("The index of the new sheet").optional(),
2824
2850
  })
2825
2851
  .optional(),
2826
2852
  })
@@ -2842,9 +2868,9 @@ export const googleOauthAppendRowsToSpreadsheetParamsSchema = z.object({
2842
2868
  .optional(),
2843
2869
  rows: z
2844
2870
  .array(z
2845
- .array(z.object({ stringValue: z.string().describe("The value of the cell") }))
2846
- .describe("A list of cells to append to the spreadsheet"))
2847
- .describe("Rows of cells to append to the spreadsheet"),
2871
+ .array(z.string().describe("The string value of the cell"))
2872
+ .describe("A list of cell values for this row, each as a plain string"))
2873
+ .describe('Rows of cells to append to the spreadsheet. Each row is an array of string cell values. For example, [["Alice", "30"], ["Bob", "25"]].'),
2848
2874
  });
2849
2875
  export const googleOauthAppendRowsToSpreadsheetOutputSchema = z.object({
2850
2876
  success: z.boolean().describe("Whether the spreadsheet was updated successfully"),
@@ -2855,11 +2881,11 @@ export const googleOauthDeleteRowFromSpreadsheetParamsSchema = z.object({
2855
2881
  spreadsheetId: z
2856
2882
  .string()
2857
2883
  .describe('The ID of the Google Spreadsheet. This should be provided by the user. Can be found in the URL of the spreadsheet. For example, "1bWp1w2OVwH19mkXEiLIaP8As7N-9c_3EXF_Eo5d5Nm0".'),
2858
- sheetId: z
2884
+ sheetId: z.coerce
2859
2885
  .number()
2860
2886
  .int()
2861
2887
  .describe('The ID of the specific sheet within the spreadsheet (not the sheet name). Sheet ID is 0 for the first sheet. Can be found in the URL after "gid=". For example, if the URL is "...#gid=123456789", the sheetId is 123456789.'),
2862
- rowIndex: z
2888
+ rowIndex: z.coerce
2863
2889
  .number()
2864
2890
  .int()
2865
2891
  .describe("The 0-based index of the row to delete. For example, to delete the first row (excluding headers if row 0 is headers), use rowIndex 1. To delete the header row, use rowIndex 0."),
@@ -2878,23 +2904,27 @@ export const googleOauthUpdateRowsInSpreadsheetParamsSchema = z.object({
2878
2904
  .string()
2879
2905
  .describe('The name of the SHEET to update. This should be provided by the user. For example, "Sheet1". Defaults to "Sheet1" if not provided.')
2880
2906
  .optional(),
2881
- startRow: z
2907
+ startRow: z.coerce
2882
2908
  .number()
2883
2909
  .int()
2884
2910
  .describe("The row number to start updating from (1-based). For example, to update starting from the first row, use 1. To start from the second row, use 2."),
2911
+ startColumn: z
2912
+ .string()
2913
+ .describe('The column letter(s) to start writing from (default: "A"). For example, use "A" to start from the first column, "C" to start from column C, or "BE" to start from column BE. This allows targeting a specific column range in the spreadsheet.')
2914
+ .optional(),
2885
2915
  rows: z
2886
2916
  .array(z
2887
- .array(z.object({ stringValue: z.string().describe("The value of the cell") }))
2888
- .describe("A list of cells for this row"))
2889
- .describe("Rows of cells to update in the spreadsheet. Each row will be written sequentially starting from startRow."),
2917
+ .array(z.string().describe("The string value of the cell"))
2918
+ .describe("A list of cell values for this row, each as a plain string"))
2919
+ .describe('Rows of cells to update in the spreadsheet. Each row is an array of string cell values written sequentially starting from startRow/startColumn. For example, [["Alice", "30"], ["Bob", "25"]].'),
2890
2920
  });
2891
2921
  export const googleOauthUpdateRowsInSpreadsheetOutputSchema = z.object({
2892
2922
  success: z.boolean().describe("Whether the rows were updated successfully"),
2893
2923
  spreadsheetUrl: z.string().describe("The URL of the updated spreadsheet").optional(),
2894
2924
  updatedRange: z.string().describe("The range that was updated in A1 notation").optional(),
2895
- updatedRows: z.number().int().describe("The number of rows that were updated").optional(),
2896
- updatedColumns: z.number().int().describe("The number of columns that were updated").optional(),
2897
- updatedCells: z.number().int().describe("The total number of cells that were updated").optional(),
2925
+ updatedRows: z.coerce.number().int().describe("The number of rows that were updated").optional(),
2926
+ updatedColumns: z.coerce.number().int().describe("The number of columns that were updated").optional(),
2927
+ updatedCells: z.coerce.number().int().describe("The total number of cells that were updated").optional(),
2898
2928
  error: z.string().describe("The error that occurred if the rows were not updated successfully").optional(),
2899
2929
  });
2900
2930
  export const googleOauthCreatePresentationParamsSchema = z.object({
@@ -2904,14 +2934,14 @@ export const googleOauthCreatePresentationParamsSchema = z.object({
2904
2934
  width: z
2905
2935
  .object({
2906
2936
  unit: z.enum(["EMU", "PT"]).describe("The unit of the width").optional(),
2907
- magnitude: z.number().describe("The width of the presentation").optional(),
2937
+ magnitude: z.coerce.number().describe("The width of the presentation").optional(),
2908
2938
  })
2909
2939
  .describe("The width object of the presentation")
2910
2940
  .optional(),
2911
2941
  height: z
2912
2942
  .object({
2913
2943
  unit: z.enum(["EMU", "PT"]).describe("The unit of the height").optional(),
2914
- magnitude: z.number().describe("The height of the presentation").optional(),
2944
+ magnitude: z.coerce.number().describe("The height of the presentation").optional(),
2915
2945
  })
2916
2946
  .describe("The height object of the presentation")
2917
2947
  .optional(),
@@ -2936,7 +2966,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
2936
2966
  createSlide: z
2937
2967
  .object({
2938
2968
  objectId: z.string().describe("The object ID for the created slide").optional(),
2939
- insertionIndex: z
2969
+ insertionIndex: z.coerce
2940
2970
  .number()
2941
2971
  .describe("The 0-based index where the new slide should be inserted")
2942
2972
  .optional(),
@@ -2964,8 +2994,8 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
2964
2994
  createTable: z
2965
2995
  .object({
2966
2996
  objectId: z.string().describe("The object ID for the created table").optional(),
2967
- rows: z.number().describe("Number of rows in the table"),
2968
- columns: z.number().describe("Number of columns in the table"),
2997
+ rows: z.coerce.number().describe("Number of rows in the table"),
2998
+ columns: z.coerce.number().describe("Number of columns in the table"),
2969
2999
  elementProperties: z
2970
3000
  .object({})
2971
3001
  .catchall(z.any())
@@ -2979,7 +3009,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
2979
3009
  .object({
2980
3010
  objectId: z.string().describe("The object ID of the shape or table cell"),
2981
3011
  text: z.string().describe("The text to be inserted"),
2982
- insertionIndex: z.number().describe("The index where the text will be inserted").optional(),
3012
+ insertionIndex: z.coerce.number().describe("The index where the text will be inserted").optional(),
2983
3013
  })
2984
3014
  .describe("Inserts text into a shape or table cell"),
2985
3015
  }),
@@ -2988,7 +3018,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
2988
3018
  .object({
2989
3019
  tableObjectId: z.string().describe("The table to insert rows into"),
2990
3020
  insertBelow: z.boolean().describe("Whether to insert the rows below the reference cell"),
2991
- number: z.number().describe("The number of rows to insert").optional(),
3021
+ number: z.coerce.number().describe("The number of rows to insert").optional(),
2992
3022
  cellLocation: z
2993
3023
  .object({})
2994
3024
  .catchall(z.any())
@@ -3004,7 +3034,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3004
3034
  insertRight: z
3005
3035
  .boolean()
3006
3036
  .describe("Whether to insert the columns to the right of the reference cell"),
3007
- number: z.number().describe("The number of columns to insert").optional(),
3037
+ number: z.coerce.number().describe("The number of columns to insert").optional(),
3008
3038
  cellLocation: z
3009
3039
  .object({})
3010
3040
  .catchall(z.any())
@@ -3053,10 +3083,10 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3053
3083
  objectId: z.string().describe("The object ID of the element to update"),
3054
3084
  transform: z
3055
3085
  .object({
3056
- scaleX: z.number().describe("The horizontal scale factor").optional(),
3057
- scaleY: z.number().describe("The vertical scale factor").optional(),
3058
- translateX: z.number().describe("The horizontal translation").optional(),
3059
- translateY: z.number().describe("The vertical translation").optional(),
3086
+ scaleX: z.coerce.number().describe("The horizontal scale factor").optional(),
3087
+ scaleY: z.coerce.number().describe("The vertical scale factor").optional(),
3088
+ translateX: z.coerce.number().describe("The horizontal translation").optional(),
3089
+ translateY: z.coerce.number().describe("The vertical translation").optional(),
3060
3090
  unit: z.string().describe("The unit for translate values").optional(),
3061
3091
  })
3062
3092
  .describe("The transform to apply"),
@@ -3067,7 +3097,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3067
3097
  updateSlidesPosition: z
3068
3098
  .object({
3069
3099
  slideObjectIds: z.array(z.string()).describe("The IDs of the slides to reorder"),
3070
- insertionIndex: z
3100
+ insertionIndex: z.coerce
3071
3101
  .number()
3072
3102
  .describe("The 0-based index where the slides should be moved to")
3073
3103
  .optional(),
@@ -3080,8 +3110,8 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3080
3110
  objectId: z.string().describe("The object ID of the shape or table cell"),
3081
3111
  textRange: z
3082
3112
  .object({
3083
- startIndex: z.number().describe("The starting index of the range (0-based)").optional(),
3084
- endIndex: z.number().describe("The ending index of the range (0-based)").optional(),
3113
+ startIndex: z.coerce.number().describe("The starting index of the range (0-based)").optional(),
3114
+ endIndex: z.coerce.number().describe("The ending index of the range (0-based)").optional(),
3085
3115
  })
3086
3116
  .describe("The range of text to delete")
3087
3117
  .optional(),
@@ -3119,7 +3149,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3119
3149
  .object({
3120
3150
  objectId: z.string().describe("The object ID for the created chart").optional(),
3121
3151
  spreadsheetId: z.string().describe("The ID of the Google Sheets spreadsheet containing the chart"),
3122
- chartId: z.number().describe("The ID of the specific chart in the spreadsheet"),
3152
+ chartId: z.coerce.number().describe("The ID of the specific chart in the spreadsheet"),
3123
3153
  elementProperties: z
3124
3154
  .object({})
3125
3155
  .catchall(z.any())
@@ -3274,11 +3304,11 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3274
3304
  .enum(["ALL", "FROM_START_INDEX", "FIXED_RANGE"])
3275
3305
  .describe("The type of range")
3276
3306
  .optional(),
3277
- startIndex: z
3307
+ startIndex: z.coerce
3278
3308
  .number()
3279
3309
  .describe("The start index for FROM_START_INDEX or FIXED_RANGE")
3280
3310
  .optional(),
3281
- endIndex: z.number().describe("The end index for FIXED_RANGE").optional(),
3311
+ endIndex: z.coerce.number().describe("The end index for FIXED_RANGE").optional(),
3282
3312
  })
3283
3313
  .describe("The range of text to style (defaults to all text if unspecified)")
3284
3314
  .optional(),
@@ -3289,7 +3319,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3289
3319
  replaceAllShapesWithSheetsChart: z
3290
3320
  .object({
3291
3321
  spreadsheetId: z.string().describe("The ID of the Google Sheets spreadsheet containing the chart"),
3292
- chartId: z.number().describe("The ID of the chart within the spreadsheet"),
3322
+ chartId: z.coerce.number().describe("The ID of the chart within the spreadsheet"),
3293
3323
  containsText: z
3294
3324
  .object({
3295
3325
  text: z.string().describe("The text the shape must contain to be replaced"),
@@ -3317,11 +3347,11 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3317
3347
  .enum(["ALL", "FROM_START_INDEX", "FIXED_RANGE"])
3318
3348
  .describe("The type of range")
3319
3349
  .optional(),
3320
- startIndex: z
3350
+ startIndex: z.coerce
3321
3351
  .number()
3322
3352
  .describe("The start index for FROM_START_INDEX or FIXED_RANGE")
3323
3353
  .optional(),
3324
- endIndex: z.number().describe("The end index for FIXED_RANGE").optional(),
3354
+ endIndex: z.coerce.number().describe("The end index for FIXED_RANGE").optional(),
3325
3355
  })
3326
3356
  .describe("The range of text to delete bullets from (defaults to all text if unspecified)")
3327
3357
  .optional(),
@@ -3345,11 +3375,11 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3345
3375
  .enum(["ALL", "FROM_START_INDEX", "FIXED_RANGE"])
3346
3376
  .describe("The type of range")
3347
3377
  .optional(),
3348
- startIndex: z
3378
+ startIndex: z.coerce
3349
3379
  .number()
3350
3380
  .describe("The start index for FROM_START_INDEX or FIXED_RANGE")
3351
3381
  .optional(),
3352
- endIndex: z.number().describe("The end index for FIXED_RANGE").optional(),
3382
+ endIndex: z.coerce.number().describe("The end index for FIXED_RANGE").optional(),
3353
3383
  })
3354
3384
  .describe("The range of text to apply the style to (defaults to all paragraphs if unspecified)")
3355
3385
  .optional(),
@@ -3375,8 +3405,8 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3375
3405
  tableRange: z
3376
3406
  .object({
3377
3407
  location: z.object({}).catchall(z.any()).describe("The starting cell location").optional(),
3378
- rowSpan: z.number().describe("The number of rows in the range").optional(),
3379
- columnSpan: z.number().describe("The number of columns in the range").optional(),
3408
+ rowSpan: z.coerce.number().describe("The number of rows in the range").optional(),
3409
+ columnSpan: z.coerce.number().describe("The number of columns in the range").optional(),
3380
3410
  })
3381
3411
  .describe("The range of cells whose border should be updated (defaults to the entire table if unspecified)")
3382
3412
  .optional(),
@@ -3387,7 +3417,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3387
3417
  updateTableColumnProperties: z
3388
3418
  .object({
3389
3419
  objectId: z.string().describe("The object ID of the table"),
3390
- columnIndices: z.array(z.number()).describe("The 0-based indices of the columns to update"),
3420
+ columnIndices: z.array(z.coerce.number()).describe("The 0-based indices of the columns to update"),
3391
3421
  tableColumnProperties: z
3392
3422
  .object({})
3393
3423
  .catchall(z.any())
@@ -3402,7 +3432,7 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3402
3432
  updateTableRowProperties: z
3403
3433
  .object({
3404
3434
  objectId: z.string().describe("The object ID of the table"),
3405
- rowIndices: z.array(z.number()).describe("The 0-based indices of the rows to update"),
3435
+ rowIndices: z.array(z.coerce.number()).describe("The 0-based indices of the rows to update"),
3406
3436
  tableRowProperties: z
3407
3437
  .object({})
3408
3438
  .catchall(z.any())
@@ -3420,8 +3450,8 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3420
3450
  tableRange: z
3421
3451
  .object({
3422
3452
  location: z.object({}).catchall(z.any()).describe("The starting cell location").optional(),
3423
- rowSpan: z.number().describe("The number of rows in the range").optional(),
3424
- columnSpan: z.number().describe("The number of columns in the range").optional(),
3453
+ rowSpan: z.coerce.number().describe("The number of rows in the range").optional(),
3454
+ columnSpan: z.coerce.number().describe("The number of columns in the range").optional(),
3425
3455
  })
3426
3456
  .describe("The range of cells to merge"),
3427
3457
  })
@@ -3434,8 +3464,8 @@ export const googleOauthUpdatePresentationParamsSchema = z.object({
3434
3464
  tableRange: z
3435
3465
  .object({
3436
3466
  location: z.object({}).catchall(z.any()).describe("The starting cell location").optional(),
3437
- rowSpan: z.number().describe("The number of rows in the range").optional(),
3438
- columnSpan: z.number().describe("The number of columns in the range").optional(),
3467
+ rowSpan: z.coerce.number().describe("The number of rows in the range").optional(),
3468
+ columnSpan: z.coerce.number().describe("The number of columns in the range").optional(),
3439
3469
  })
3440
3470
  .describe("The range of cells to unmerge"),
3441
3471
  })
@@ -3540,7 +3570,7 @@ export const googleOauthGetPresentationOutputSchema = z.object({
3540
3570
  });
3541
3571
  export const googleOauthSearchDriveByKeywordsParamsSchema = z.object({
3542
3572
  keywords: z.array(z.string()).describe("List of keywords to search for in file contents."),
3543
- limit: z.number().describe("The maximum number of files to return").optional(),
3573
+ limit: z.coerce.number().describe("The maximum number of files to return").optional(),
3544
3574
  includeTrashed: z
3545
3575
  .boolean()
3546
3576
  .describe("Whether to include trashed files in the search results. Usually false unless otherwise noted by the user.")
@@ -3561,7 +3591,7 @@ export const googleOauthSearchDriveByKeywordsOutputSchema = z.object({
3561
3591
  });
3562
3592
  export const googleOauthSearchDriveByQueryParamsSchema = z.object({
3563
3593
  query: z.string().describe("The query to search for in file contents."),
3564
- limit: z.number().describe("The maximum number of files to return").optional(),
3594
+ limit: z.coerce.number().describe("The maximum number of files to return").optional(),
3565
3595
  searchDriveByDrive: z
3566
3596
  .boolean()
3567
3597
  .describe("Whether we should search drive by drive or run a general search. Usually false unless otherwise noted by the user."),
@@ -3589,8 +3619,8 @@ export const googleOauthSearchDriveByQueryOutputSchema = z.object({
3589
3619
  });
3590
3620
  export const googleOauthSearchDriveByKeywordsAndGetFileContentParamsSchema = z.object({
3591
3621
  searchQuery: z.string().describe("The query input to Google Drive search"),
3592
- limit: z.number().describe("The maximum number of files to return").optional(),
3593
- fileSizeLimit: z.number().describe("The maximum length of a file in characters").optional(),
3622
+ limit: z.coerce.number().describe("The maximum number of files to return").optional(),
3623
+ fileSizeLimit: z.coerce.number().describe("The maximum length of a file in characters").optional(),
3594
3624
  searchDriveByDrive: z
3595
3625
  .boolean()
3596
3626
  .describe("Search drive by drive or run a general search. Usually false unless otherwise noted by the user."),
@@ -3625,8 +3655,8 @@ export const googleOauthSearchDriveByKeywordsAndGetFileContentOutputSchema = z.o
3625
3655
  });
3626
3656
  export const googleOauthSearchDriveByQueryAndGetFileContentParamsSchema = z.object({
3627
3657
  query: z.string().describe("Google Drive API search syntax, eg \"fullText contains 'Valentine\\'s Day'\""),
3628
- limit: z.number().describe("The maximum number of files to return").optional(),
3629
- fileSizeLimit: z.number().describe("The maximum length of a file in characters").optional(),
3658
+ limit: z.coerce.number().describe("The maximum number of files to return").optional(),
3659
+ fileSizeLimit: z.coerce.number().describe("The maximum length of a file in characters").optional(),
3630
3660
  searchDriveByDrive: z
3631
3661
  .boolean()
3632
3662
  .describe("Search drive by drive or run a general search. Usually false unless otherwise noted by the user."),
@@ -3655,12 +3685,15 @@ export const googleOauthSearchDriveByQueryAndGetFileContentOutputSchema = z.obje
3655
3685
  });
3656
3686
  export const googleOauthGetDriveFileContentByIdParamsSchema = z.object({
3657
3687
  fileId: z.string().describe("The ID of the file to get content from"),
3658
- limit: z.number().describe("The character limit for the file content").optional(),
3659
- timeoutLimit: z
3688
+ limit: z.coerce.number().describe("The character limit for the file content").optional(),
3689
+ timeoutLimit: z.coerce
3660
3690
  .number()
3661
3691
  .describe("The timeout limit for the file content retrieval (default of 15 seconds)")
3662
3692
  .optional(),
3663
- fileSizeLimit: z.number().describe("Max file size (in MB) to retrieve content from (default of 30MB)").optional(),
3693
+ fileSizeLimit: z.coerce
3694
+ .number()
3695
+ .describe("Max file size (in MB) to retrieve content from (default of 30MB)")
3696
+ .optional(),
3664
3697
  });
3665
3698
  export const googleOauthGetDriveFileContentByIdOutputSchema = z.object({
3666
3699
  success: z.boolean().describe("Whether the file content was retrieved successfully"),
@@ -3672,7 +3705,7 @@ export const googleOauthGetDriveFileContentByIdOutputSchema = z.object({
3672
3705
  .object({
3673
3706
  content: z.string().describe("The content of the file").optional(),
3674
3707
  fileName: z.string().describe("The name of the file").optional(),
3675
- fileLength: z.number().describe("The length of the file content prior to truncating").optional(),
3708
+ fileLength: z.coerce.number().describe("The length of the file content prior to truncating").optional(),
3676
3709
  })
3677
3710
  .describe("The contents of the file"),
3678
3711
  }))
@@ -3681,7 +3714,7 @@ export const googleOauthGetDriveFileContentByIdOutputSchema = z.object({
3681
3714
  error: z.string().describe("Error message if file content retrieval failed").optional(),
3682
3715
  });
3683
3716
  export const googleOauthListGroupsParamsSchema = z.object({
3684
- maxResults: z.number().describe("The maximum number of groups to return (max allowed is 200)").optional(),
3717
+ maxResults: z.coerce.number().describe("The maximum number of groups to return (max allowed is 200)").optional(),
3685
3718
  });
3686
3719
  export const googleOauthListGroupsOutputSchema = z.object({
3687
3720
  success: z.boolean().describe("Whether the groups were listed successfully"),
@@ -3710,7 +3743,7 @@ export const googleOauthGetGroupOutputSchema = z.object({
3710
3743
  });
3711
3744
  export const googleOauthListGroupMembersParamsSchema = z.object({
3712
3745
  groupKey: z.string().describe("The group's email address or unique group ID"),
3713
- maxResults: z.number().describe("The maximum number of members to return (max allowed is 200)").optional(),
3746
+ maxResults: z.coerce.number().describe("The maximum number of members to return (max allowed is 200)").optional(),
3714
3747
  });
3715
3748
  export const googleOauthListGroupMembersOutputSchema = z.object({
3716
3749
  success: z.boolean().describe("Whether the members were listed successfully"),
@@ -3753,8 +3786,8 @@ export const googleOauthDeleteGroupMemberOutputSchema = z.object({
3753
3786
  export const googleOauthQueryGoogleBigQueryParamsSchema = z.object({
3754
3787
  query: z.string().describe("The SQL query to execute in BigQuery"),
3755
3788
  projectId: z.string().describe("The Google Cloud Project ID. If not provided, will use the default project"),
3756
- maxResults: z.number().describe("Maximum number of results to return. Defaults to 1000").optional(),
3757
- timeoutMs: z.number().describe("Timeout for the query in milliseconds. Defaults to 30000").optional(),
3789
+ maxResults: z.coerce.number().describe("Maximum number of results to return. Defaults to 1000").optional(),
3790
+ timeoutMs: z.coerce.number().describe("Timeout for the query in milliseconds. Defaults to 30000").optional(),
3758
3791
  maximumBytesProcessed: z
3759
3792
  .string()
3760
3793
  .describe("Maximum bytes to process for the query. Defaults to 500000000 (500MB). Use -1 for no limit")
@@ -3779,8 +3812,8 @@ export const googleOauthQueryGoogleBigQueryOutputSchema = z.object({
3779
3812
  });
3780
3813
  export const googlemailSearchGmailMessagesParamsSchema = z.object({
3781
3814
  query: z.string().describe('Gmail search query (e.g. "from:alice subject:urgent")'),
3782
- maxResults: z.number().describe("Maximum number of messages to return (optional)").optional(),
3783
- timeout: z.number().describe("Timeout for the query in seconds (optional)").optional(),
3815
+ maxResults: z.coerce.number().describe("Maximum number of messages to return (optional)").optional(),
3816
+ timeout: z.coerce.number().describe("Timeout for the query in seconds (optional)").optional(),
3784
3817
  });
3785
3818
  export const googlemailSearchGmailMessagesOutputSchema = z.object({
3786
3819
  success: z.boolean(),
@@ -3809,7 +3842,7 @@ export const googlemailSearchGmailMessagesOutputSchema = z.object({
3809
3842
  });
3810
3843
  export const googlemailListGmailThreadsParamsSchema = z.object({
3811
3844
  query: z.string().describe('Gmail search query (e.g. "from:alice subject:project")'),
3812
- maxResults: z.number().describe("Maximum number of threads to return").optional(),
3845
+ maxResults: z.coerce.number().describe("Maximum number of threads to return").optional(),
3813
3846
  });
3814
3847
  export const googlemailListGmailThreadsOutputSchema = z.object({
3815
3848
  success: z.boolean(),
@@ -3875,7 +3908,7 @@ export const googleSearchCustomSearchParamsSchema = z.object({
3875
3908
  .string()
3876
3909
  .describe("Identifies a word or phrase that should not appear in any documents in the search results")
3877
3910
  .optional(),
3878
- num: z.number().int().gte(1).lte(10).describe("Number of search results to return (1-10)").optional(),
3911
+ num: z.coerce.number().int().gte(1).lte(10).describe("Number of search results to return (1-10)").optional(),
3879
3912
  siteSearch: z
3880
3913
  .string()
3881
3914
  .describe("Specifies a given site which should always be included or excluded from results")
@@ -3884,7 +3917,7 @@ export const googleSearchCustomSearchParamsSchema = z.object({
3884
3917
  .enum(["e", "i"])
3885
3918
  .describe("Controls whether to include or exclude results from the site named in siteSearch (e=exclude, i=include)")
3886
3919
  .optional(),
3887
- start: z.number().int().gte(1).lte(100).describe("The index of the first result to return").optional(),
3920
+ start: z.coerce.number().int().gte(1).lte(100).describe("The index of the first result to return").optional(),
3888
3921
  });
3889
3922
  export const googleSearchCustomSearchOutputSchema = z.object({
3890
3923
  success: z.boolean().describe("Whether the search was successful"),
@@ -3899,7 +3932,7 @@ export const googleSearchCustomSearchOutputSchema = z.object({
3899
3932
  .optional(),
3900
3933
  searchInformation: z
3901
3934
  .object({
3902
- searchTime: z.number().describe("Time taken to perform the search").optional(),
3935
+ searchTime: z.coerce.number().describe("Time taken to perform the search").optional(),
3903
3936
  totalResults: z.string().describe("Total number of search results available").optional(),
3904
3937
  })
3905
3938
  .describe("Metadata about the search")
@@ -3950,7 +3983,7 @@ export const finnhubGetBasicFinancialsOutputSchema = z.object({
3950
3983
  .array(z
3951
3984
  .object({
3952
3985
  period: z.string().describe("The period of the financial metric in YYYY-MM-DD format").optional(),
3953
- v: z.number().describe("The value of the financial metric").optional(),
3986
+ v: z.coerce.number().describe("The value of the financial metric").optional(),
3954
3987
  })
3955
3988
  .describe("The value of the financial metric"))
3956
3989
  .describe("The series of values for the financial metric")
@@ -3967,7 +4000,7 @@ export const finnhubGetBasicFinancialsOutputSchema = z.object({
3967
4000
  .array(z
3968
4001
  .object({
3969
4002
  period: z.string().describe("The period of the financial metric in YYYY-MM-DD format").optional(),
3970
- v: z.number().describe("The value of the financial metric").optional(),
4003
+ v: z.coerce.number().describe("The value of the financial metric").optional(),
3971
4004
  })
3972
4005
  .describe("The value of the financial metric"))
3973
4006
  .describe("The series of values for the financial metric")
@@ -4051,8 +4084,8 @@ export const salesforceSearchAllSalesforceRecordsParamsSchema = z.object({
4051
4084
  .boolean()
4052
4085
  .describe('Whether your Salesforce instance uses lightning knowledge articles ("true" or "false"). Ask the user if unsure.')
4053
4086
  .optional(),
4054
- limit: z.number().describe("The maximum number of records to return").optional(),
4055
- maxLimit: z.number().describe("The absolute maximum limit for records that can be returned").optional(),
4087
+ limit: z.coerce.number().describe("The maximum number of records to return").optional(),
4088
+ maxLimit: z.coerce.number().describe("The absolute maximum limit for records that can be returned").optional(),
4056
4089
  });
4057
4090
  export const salesforceSearchAllSalesforceRecordsOutputSchema = z.object({
4058
4091
  success: z.boolean().describe("Whether the records were successfully retrieved"),
@@ -4114,8 +4147,8 @@ export const salesforceSearchSalesforceRecordsParamsSchema = z.object({
4114
4147
  keyword: z.string().describe("The keyword to search for"),
4115
4148
  recordType: z.string().describe("The type of record to search for"),
4116
4149
  fieldsToSearch: z.array(z.string()).describe("The fields to search for the keyword"),
4117
- limit: z.number().describe("The maximum number of records to return").optional(),
4118
- maxLimit: z.number().describe("The absolute maximum limit for records that can be returned").optional(),
4150
+ limit: z.coerce.number().describe("The maximum number of records to return").optional(),
4151
+ maxLimit: z.coerce.number().describe("The absolute maximum limit for records that can be returned").optional(),
4119
4152
  });
4120
4153
  export const salesforceSearchSalesforceRecordsOutputSchema = z.object({
4121
4154
  success: z.boolean().describe("Whether the records were successfully retrieved"),
@@ -4147,7 +4180,7 @@ export const salesforceSearchSalesforceRecordsOutputSchema = z.object({
4147
4180
  });
4148
4181
  export const salesforceGetSalesforceRecordsByQueryParamsSchema = z.object({
4149
4182
  query: z.string().describe("The SOQL query to execute"),
4150
- limit: z.number().describe("The maximum number of records to retrieve").optional(),
4183
+ limit: z.coerce.number().describe("The maximum number of records to retrieve").optional(),
4151
4184
  });
4152
4185
  export const salesforceGetSalesforceRecordsByQueryOutputSchema = z.object({
4153
4186
  success: z.boolean().describe("Whether the records were successfully retrieved"),
@@ -4293,7 +4326,7 @@ export const githubCreatePullRequestOutputSchema = z.object({
4293
4326
  success: z.boolean().describe("Whether the pull request was created successfully"),
4294
4327
  error: z.string().describe("The error that occurred if the pull request was not created successfully").optional(),
4295
4328
  pullRequestUrl: z.string().describe("The URL of the created pull request").optional(),
4296
- pullRequestNumber: z.number().describe("The number of the created pull request").optional(),
4329
+ pullRequestNumber: z.coerce.number().describe("The number of the created pull request").optional(),
4297
4330
  });
4298
4331
  export const githubListPullRequestsParamsSchema = z.object({
4299
4332
  repositoryOwner: z.string().describe("The owner of the repository, this is a GitHub username"),
@@ -4309,7 +4342,7 @@ export const githubListPullRequestsOutputSchema = z.object({
4309
4342
  url: z.string().describe("The URL of the pull request").optional(),
4310
4343
  contents: z
4311
4344
  .object({
4312
- number: z.number().describe("The number of the pull request").optional(),
4345
+ number: z.coerce.number().describe("The number of the pull request").optional(),
4313
4346
  title: z.string().describe("The title of the pull request").optional(),
4314
4347
  state: z.string().describe("The state of the pull request (e.g., open, closed)").optional(),
4315
4348
  url: z.string().describe("The URL of the pull request").optional(),
@@ -4330,14 +4363,14 @@ export const githubListPullRequestsOutputSchema = z.object({
4330
4363
  export const githubGetPullRequestDetailsParamsSchema = z.object({
4331
4364
  repositoryOwner: z.string().describe("The owner of the repository, this is a GitHub username"),
4332
4365
  repositoryName: z.string().describe("The name of the repository"),
4333
- pullRequestNumber: z.number().describe("The number of the pull request to get details for"),
4366
+ pullRequestNumber: z.coerce.number().describe("The number of the pull request to get details for"),
4334
4367
  });
4335
4368
  export const githubGetPullRequestDetailsOutputSchema = z.object({
4336
4369
  success: z.boolean().describe("Whether the operation was successful"),
4337
4370
  error: z.string().describe("The error that occurred if the operation was not successful").optional(),
4338
4371
  pullRequest: z
4339
4372
  .object({
4340
- number: z.number().describe("The number of the pull request").optional(),
4373
+ number: z.coerce.number().describe("The number of the pull request").optional(),
4341
4374
  title: z.string().describe("The title of the pull request").optional(),
4342
4375
  description: z.string().nullable().describe("The body/description of the pull request").optional(),
4343
4376
  state: z.enum(["open", "closed", "merged"]).describe("The state of the pull request").optional(),
@@ -4403,10 +4436,10 @@ export const githubGetPullRequestDetailsOutputSchema = z.object({
4403
4436
  mergeable: z.boolean().nullable().describe("Whether the pull request can be merged").optional(),
4404
4437
  mergeableState: z.string().nullable().describe("The mergeable state of the pull request").optional(),
4405
4438
  merged: z.boolean().describe("Whether the pull request has been merged").optional(),
4406
- commits: z.number().describe("The number of commits in the pull request").optional(),
4407
- additions: z.number().describe("The number of additions in the pull request").optional(),
4408
- deletions: z.number().describe("The number of deletions in the pull request").optional(),
4409
- changedFiles: z.number().describe("The number of files changed in the pull request").optional(),
4439
+ commits: z.coerce.number().describe("The number of commits in the pull request").optional(),
4440
+ additions: z.coerce.number().describe("The number of additions in the pull request").optional(),
4441
+ deletions: z.coerce.number().describe("The number of deletions in the pull request").optional(),
4442
+ changedFiles: z.coerce.number().describe("The number of files changed in the pull request").optional(),
4410
4443
  milestone: z
4411
4444
  .object({
4412
4445
  title: z.string().describe("The title of the milestone").optional(),
@@ -4436,7 +4469,7 @@ export const githubGetFileContentOutputSchema = z.object({
4436
4469
  contents: z
4437
4470
  .object({
4438
4471
  content: z.string().describe("The decoded file content as a string").optional(),
4439
- size: z.number().describe("The size of the file in bytes").optional(),
4472
+ size: z.coerce.number().describe("The size of the file in bytes").optional(),
4440
4473
  name: z.string().describe("The name of the file").optional(),
4441
4474
  htmlUrl: z.string().describe("The URL of the file in the Github UI").optional(),
4442
4475
  })
@@ -4461,7 +4494,7 @@ export const githubListDirectoryOutputSchema = z.object({
4461
4494
  .object({
4462
4495
  path: z.string().describe("The path of the file"),
4463
4496
  type: z.string().describe("The type of the file"),
4464
- size: z.number().describe("The size of the file in bytes"),
4497
+ size: z.coerce.number().describe("The size of the file in bytes"),
4465
4498
  })
4466
4499
  .describe("The contents of the file"),
4467
4500
  }))
@@ -4491,7 +4524,7 @@ export const githubSearchOrganizationOutputSchema = z.object({
4491
4524
  path: z.string().describe("The path of the file that had a match."),
4492
4525
  sha: z.string().describe("The short SHA of the commit containing the match."),
4493
4526
  url: z.string().describe("The API URL of the file that had a match."),
4494
- score: z.number().describe("The similarity score of the match."),
4527
+ score: z.coerce.number().describe("The similarity score of the match."),
4495
4528
  textMatches: z
4496
4529
  .array(z.object({
4497
4530
  object_url: z.string().describe("The API URL of the matched object.").optional(),
@@ -4500,7 +4533,10 @@ export const githubSearchOrganizationOutputSchema = z.object({
4500
4533
  matches: z
4501
4534
  .array(z.object({
4502
4535
  text: z.string().describe("The text that matched.").optional(),
4503
- indices: z.array(z.number()).describe("Start and end indices of the match.").optional(),
4536
+ indices: z
4537
+ .array(z.coerce.number())
4538
+ .describe("Start and end indices of the match.")
4539
+ .optional(),
4504
4540
  }))
4505
4541
  .describe("List of matches found in the fragment."),
4506
4542
  }))
@@ -4526,7 +4562,7 @@ export const githubSearchOrganizationOutputSchema = z.object({
4526
4562
  })
4527
4563
  .describe("The GitHub user who authored the commit.")
4528
4564
  .optional(),
4529
- score: z.number().describe("The commit search relevance score."),
4565
+ score: z.coerce.number().describe("The commit search relevance score."),
4530
4566
  files: z
4531
4567
  .array(z.object({
4532
4568
  filename: z.string().describe("The filename of the changed file."),
@@ -4539,7 +4575,7 @@ export const githubSearchOrganizationOutputSchema = z.object({
4539
4575
  .describe("Commit search result content."),
4540
4576
  z
4541
4577
  .object({
4542
- number: z.number().describe("The issue or pull request number."),
4578
+ number: z.coerce.number().describe("The issue or pull request number."),
4543
4579
  title: z.string().describe("The title of the issue or pull request."),
4544
4580
  html_url: z.string().describe("The URL of the issue or pull request."),
4545
4581
  state: z.enum(["open", "closed"]).describe("The state of the issue or pull request."),
@@ -4551,7 +4587,7 @@ export const githubSearchOrganizationOutputSchema = z.object({
4551
4587
  email: z.string().describe("The user’s email address, if available.").optional(),
4552
4588
  })
4553
4589
  .describe("The user who created the issue or pull request."),
4554
- score: z.number().describe("The search result relevance score."),
4590
+ score: z.coerce.number().describe("The search result relevance score."),
4555
4591
  files: z
4556
4592
  .array(z.object({
4557
4593
  filename: z.string().describe("File name in the PR diff."),
@@ -4614,14 +4650,14 @@ export const githubGetBranchOutputSchema = z.object({
4614
4650
  .describe("The commit tree")
4615
4651
  .optional(),
4616
4652
  url: z.string().describe("The commit URL").optional(),
4617
- comment_count: z.number().describe("Number of comments on the commit").optional(),
4653
+ comment_count: z.coerce.number().describe("Number of comments on the commit").optional(),
4618
4654
  })
4619
4655
  .describe("The git commit object")
4620
4656
  .optional(),
4621
4657
  author: z
4622
4658
  .object({
4623
4659
  login: z.string().optional(),
4624
- id: z.number().optional(),
4660
+ id: z.coerce.number().optional(),
4625
4661
  node_id: z.string().optional(),
4626
4662
  avatar_url: z.string().optional(),
4627
4663
  html_url: z.string().optional(),
@@ -4633,7 +4669,7 @@ export const githubGetBranchOutputSchema = z.object({
4633
4669
  committer: z
4634
4670
  .object({
4635
4671
  login: z.string().optional(),
4636
- id: z.number().optional(),
4672
+ id: z.coerce.number().optional(),
4637
4673
  node_id: z.string().optional(),
4638
4674
  avatar_url: z.string().optional(),
4639
4675
  html_url: z.string().optional(),
@@ -4691,8 +4727,8 @@ export const githubListCommitsParamsSchema = z.object({
4691
4727
  .describe("Only show commits before this date (ISO 8601 format, e.g., 2023-12-31T23:59:59Z)")
4692
4728
  .optional(),
4693
4729
  author: z.string().describe("Filter commits by author (GitHub username or email)").optional(),
4694
- perPage: z.number().describe("Number of commits to return per page (default 30, max 100)").optional(),
4695
- page: z.number().describe("Page number for pagination (default 1)").optional(),
4730
+ perPage: z.coerce.number().describe("Number of commits to return per page (default 30, max 100)").optional(),
4731
+ page: z.coerce.number().describe("Page number for pagination (default 1)").optional(),
4696
4732
  });
4697
4733
  export const githubListCommitsOutputSchema = z.object({
4698
4734
  success: z.boolean().describe("Whether the operation was successful"),
@@ -4718,7 +4754,7 @@ export const githubListCommitsOutputSchema = z.object({
4718
4754
  sha: z.string().describe("The SHA of the tree object"),
4719
4755
  url: z.string().describe("The API URL of the tree object"),
4720
4756
  }),
4721
- commentCount: z.number().describe("The number of comments on the commit").optional(),
4757
+ commentCount: z.coerce.number().describe("The number of comments on the commit").optional(),
4722
4758
  }),
4723
4759
  author: z
4724
4760
  .object({ login: z.string().describe("The GitHub username of the commit author").optional() })
@@ -4734,7 +4770,7 @@ export const githubListCommitsOutputSchema = z.object({
4734
4770
  }))
4735
4771
  .describe("List of commits in the repository")
4736
4772
  .optional(),
4737
- totalCount: z.number().describe("Total number of commits (if available)").optional(),
4773
+ totalCount: z.coerce.number().describe("Total number of commits (if available)").optional(),
4738
4774
  hasMore: z.boolean().describe("Whether there are more commits available on subsequent pages").optional(),
4739
4775
  });
4740
4776
  export const notionSearchByTitleParamsSchema = z.object({
@@ -4771,9 +4807,9 @@ export const gitlabSearchGroupOutputSchema = z.object({
4771
4807
  .object({
4772
4808
  metadata: z
4773
4809
  .object({
4774
- id: z.number().describe("The ID of the merge request"),
4775
- iid: z.number().describe("The internal ID of the merge request"),
4776
- project_id: z.number().describe("The ID of the project the merge request belongs to"),
4810
+ id: z.coerce.number().describe("The ID of the merge request"),
4811
+ iid: z.coerce.number().describe("The internal ID of the merge request"),
4812
+ project_id: z.coerce.number().describe("The ID of the project the merge request belongs to"),
4777
4813
  title: z.string().describe("The title of the merge request"),
4778
4814
  web_url: z.string().describe("The URL of the merge request"),
4779
4815
  description: z.string().describe("The description of the merge request").optional(),
@@ -4803,9 +4839,9 @@ export const gitlabSearchGroupOutputSchema = z.object({
4803
4839
  path: z.string().describe("The path of the blob"),
4804
4840
  basename: z.string().describe("The basename of the blob"),
4805
4841
  data: z.string().describe("The data of the blob"),
4806
- project_id: z.number().describe("The ID of the project the blob belongs to"),
4842
+ project_id: z.coerce.number().describe("The ID of the project the blob belongs to"),
4807
4843
  ref: z.string().describe("The ref of the blob"),
4808
- startline: z.number().describe("The start line of the blob"),
4844
+ startline: z.coerce.number().describe("The start line of the blob"),
4809
4845
  filename: z.string().describe("The filename of the blob"),
4810
4846
  web_url: z.string().describe("The URL of the blob"),
4811
4847
  }),
@@ -4854,7 +4890,7 @@ export const gitlabSearchGroupOutputSchema = z.object({
4854
4890
  .optional(),
4855
4891
  });
4856
4892
  export const gitlabGetFileContentParamsSchema = z.object({
4857
- project_id: z.number().describe("Numeric project ID in GitLab (unique per project)"),
4893
+ project_id: z.coerce.number().describe("Numeric project ID in GitLab (unique per project)"),
4858
4894
  path: z.string().describe("The file path to get content from (e.g., src/index.js)"),
4859
4895
  ref: z
4860
4896
  .string()
@@ -4870,7 +4906,7 @@ export const gitlabGetFileContentOutputSchema = z.object({
4870
4906
  url: z.string().describe("The url of the file"),
4871
4907
  contents: z.object({
4872
4908
  content: z.string().describe("The decoded file content as a string"),
4873
- size: z.number().describe("The size of the file in bytes"),
4909
+ size: z.coerce.number().describe("The size of the file in bytes"),
4874
4910
  name: z.string().describe("The name of the file"),
4875
4911
  htmlUrl: z.string().describe("The URL of the file in the GitLab UI"),
4876
4912
  }),
@@ -4879,7 +4915,7 @@ export const gitlabGetFileContentOutputSchema = z.object({
4879
4915
  .optional(),
4880
4916
  });
4881
4917
  export const gitlabGetMergeRequestParamsSchema = z.object({
4882
- project_id: z
4918
+ project_id: z.coerce
4883
4919
  .number()
4884
4920
  .describe("Numeric project ID in GitLab (unique per project). Either this or the project path is required.")
4885
4921
  .optional(),
@@ -4895,9 +4931,9 @@ export const gitlabGetMergeRequestOutputSchema = z.object({
4895
4931
  results: z
4896
4932
  .array(z.object({
4897
4933
  metadata: z.object({
4898
- iid: z.number().describe("The internal ID of the merge request"),
4899
- id: z.number().describe("The ID of the merge request"),
4900
- project_id: z.number().describe("The ID of the project the merge request belongs to"),
4934
+ iid: z.coerce.number().describe("The internal ID of the merge request"),
4935
+ id: z.coerce.number().describe("The ID of the merge request"),
4936
+ project_id: z.coerce.number().describe("The ID of the project the merge request belongs to"),
4901
4937
  title: z.string().describe("The title of the merge request"),
4902
4938
  description: z.string().describe("The description of the merge request"),
4903
4939
  state: z.string().describe("The state of the merge request"),
@@ -4913,7 +4949,7 @@ export const gitlabGetMergeRequestOutputSchema = z.object({
4913
4949
  head_sha: z.string().describe("The head SHA of the merge request"),
4914
4950
  }),
4915
4951
  author: z.object({
4916
- id: z.number().describe("The ID of the author"),
4952
+ id: z.coerce.number().describe("The ID of the author"),
4917
4953
  name: z.string().describe("The name of the author"),
4918
4954
  username: z.string().describe("The username of the author"),
4919
4955
  }),
@@ -4960,7 +4996,7 @@ export const gitlabListDirectoryOutputSchema = z.object({
4960
4996
  name: z.string().describe("The name of the file or directory"),
4961
4997
  path: z.string().describe("The path of the file or directory"),
4962
4998
  type: z.string().describe('The type of the entry (either "blob" for file or "tree" for directory)'),
4963
- size: z
4999
+ size: z.coerce
4964
5000
  .number()
4965
5001
  .describe("The size of the file in bytes (only for blobs; omitted or 0 for trees)")
4966
5002
  .optional(),
@@ -4973,7 +5009,7 @@ export const gitlabListDirectoryOutputSchema = z.object({
4973
5009
  });
4974
5010
  export const linearGetIssuesParamsSchema = z.object({
4975
5011
  query: z.string().describe("Optional query string to filter issues").optional(),
4976
- maxResults: z.number().describe("Optional limit to number of results").optional(),
5012
+ maxResults: z.coerce.number().describe("Optional limit to number of results").optional(),
4977
5013
  });
4978
5014
  export const linearGetIssuesOutputSchema = z.object({
4979
5015
  success: z.boolean().describe("Whether the operation was successful"),
@@ -5058,8 +5094,8 @@ export const linearGetIssueDetailsOutputSchema = z.object({
5058
5094
  })
5059
5095
  .describe("The project the issue belongs to")
5060
5096
  .optional(),
5061
- priority: z.number().describe("The issue priority (0-4)").optional(),
5062
- estimate: z.number().describe("The issue estimate in story points").optional(),
5097
+ priority: z.coerce.number().describe("The issue priority (0-4)").optional(),
5098
+ estimate: z.coerce.number().describe("The issue estimate in story points").optional(),
5063
5099
  dueDate: z.string().describe("The issue due date").optional(),
5064
5100
  createdAt: z.string().describe("When the issue was created").optional(),
5065
5101
  updatedAt: z.string().describe("When the issue was last updated").optional(),
@@ -5103,7 +5139,7 @@ export const linearGetProjectsOutputSchema = z.object({
5103
5139
  })
5104
5140
  .describe("The project lead")
5105
5141
  .optional(),
5106
- progress: z.number().describe("The project progress percentage").optional(),
5142
+ progress: z.coerce.number().describe("The project progress percentage").optional(),
5107
5143
  url: z.string().describe("The project URL").optional(),
5108
5144
  }))
5109
5145
  .describe("List of all projects")
@@ -5121,7 +5157,7 @@ export const linearGetProjectDetailsOutputSchema = z.object({
5121
5157
  name: z.string().describe("The project name").optional(),
5122
5158
  description: z.string().describe("The project description").optional(),
5123
5159
  state: z.string().describe("The project state").optional(),
5124
- progress: z.number().describe("The project progress percentage").optional(),
5160
+ progress: z.coerce.number().describe("The project progress percentage").optional(),
5125
5161
  targetDate: z.string().describe("The project target date").optional(),
5126
5162
  createdAt: z.string().describe("When the project was created").optional(),
5127
5163
  updatedAt: z.string().describe("When the project was last updated").optional(),
@@ -5197,14 +5233,14 @@ export const linearCreateIssueParamsSchema = z.object({
5197
5233
  description: z.string().describe("The description of the issue in markdown format").optional(),
5198
5234
  teamId: z.string().describe("The ID of the team to create the issue for"),
5199
5235
  assigneeId: z.string().describe("The ID of the user to assign the issue to").optional(),
5200
- priority: z
5236
+ priority: z.coerce
5201
5237
  .number()
5202
5238
  .describe("The priority of the issue: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low")
5203
5239
  .optional(),
5204
5240
  projectId: z.string().describe("The ID of the project to associate the issue with").optional(),
5205
5241
  dueDate: z.string().describe("The due date of the issue in ISO 8601 format (e.g. 2024-12-31)").optional(),
5206
5242
  labelIds: z.array(z.string()).describe("Array of label IDs to apply to the issue").optional(),
5207
- estimate: z.number().describe("The estimate in story points for the issue").optional(),
5243
+ estimate: z.coerce.number().describe("The estimate in story points for the issue").optional(),
5208
5244
  });
5209
5245
  export const linearCreateIssueOutputSchema = z.object({
5210
5246
  success: z.boolean().describe("Whether the issue was created successfully"),
@@ -5224,7 +5260,7 @@ export const hubspotGetContactsParamsSchema = z.object({
5224
5260
  .string()
5225
5261
  .describe("Optional keyword search query to filter contacts by name, email, or other properties")
5226
5262
  .optional(),
5227
- limit: z.number().describe("Maximum number of contacts to return (default 100, max 100)").optional(),
5263
+ limit: z.coerce.number().describe("Maximum number of contacts to return (default 100, max 100)").optional(),
5228
5264
  });
5229
5265
  export const hubspotGetContactsOutputSchema = z.object({
5230
5266
  success: z.boolean().describe("Whether the operation was successful"),
@@ -5275,7 +5311,7 @@ export const hubspotGetCompaniesParamsSchema = z.object({
5275
5311
  .string()
5276
5312
  .describe("Optional keyword search query to filter companies by name, domain, or other properties")
5277
5313
  .optional(),
5278
- limit: z.number().describe("Maximum number of companies to return (default 100, max 100)").optional(),
5314
+ limit: z.coerce.number().describe("Maximum number of companies to return (default 100, max 100)").optional(),
5279
5315
  });
5280
5316
  export const hubspotGetCompaniesOutputSchema = z.object({
5281
5317
  success: z.boolean().describe("Whether the operation was successful"),
@@ -5320,7 +5356,7 @@ export const hubspotGetCompanyDetailsOutputSchema = z.object({
5320
5356
  });
5321
5357
  export const hubspotGetDealsParamsSchema = z.object({
5322
5358
  query: z.string().describe("Optional search query to filter deals by name, stage, or other properties").optional(),
5323
- limit: z.number().describe("Maximum number of deals to return (default 100, max 100)").optional(),
5359
+ limit: z.coerce.number().describe("Maximum number of deals to return (default 100, max 100)").optional(),
5324
5360
  });
5325
5361
  export const hubspotGetDealsOutputSchema = z.object({
5326
5362
  success: z.boolean().describe("Whether the operation was successful"),
@@ -5367,7 +5403,7 @@ export const hubspotGetTicketsParamsSchema = z.object({
5367
5403
  .string()
5368
5404
  .describe("Optional search query to filter tickets by subject, status, or other properties")
5369
5405
  .optional(),
5370
- limit: z.number().describe("Maximum number of tickets to return (default 100, max 100)").optional(),
5406
+ limit: z.coerce.number().describe("Maximum number of tickets to return (default 100, max 100)").optional(),
5371
5407
  });
5372
5408
  export const hubspotGetTicketsOutputSchema = z.object({
5373
5409
  success: z.boolean().describe("Whether the operation was successful"),