openmates 0.18.0-alpha.41 → 0.18.0-alpha.42

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.
@@ -17164,7 +17164,7 @@ Note: The 'id' field is auto-generated if not provided.
17164
17164
  },
17165
17165
  "start_date": {
17166
17166
  "type": "string",
17167
- "description": "Start of date range in ISO 8601 format. Include timezone if known (e.g. '2026-03-01T00:00:00+01:00[Europe/Berlin]'). If omitted, defaults to now."
17167
+ "description": "Start of date range in ISO 8601 format. Include UTC offset if known (e.g. '2026-03-01T00:00:00+01:00'). An optional matching IANA annotation such as [Europe/Berlin] is accepted. Preserve the user's requested date range. If omitted, defaults to now."
17168
17168
  },
17169
17169
  "end_date": {
17170
17170
  "type": "string",
@@ -17262,10 +17262,205 @@ Note: The 'id' field is auto-generated if not provided.
17262
17262
  "type": "object",
17263
17263
  "properties": {
17264
17264
  "summary": {
17265
- "type": "string"
17265
+ "type": "string",
17266
+ "example": "Events search completed"
17266
17267
  },
17267
17268
  "result_count": {
17268
- "type": "integer"
17269
+ "type": "integer",
17270
+ "example": 1
17271
+ },
17272
+ "provider": {
17273
+ "type": "string",
17274
+ "example": "Example events provider"
17275
+ },
17276
+ "results": {
17277
+ "type": "array",
17278
+ "items": {
17279
+ "type": "object",
17280
+ "properties": {
17281
+ "id": {
17282
+ "type": "string",
17283
+ "example": "example-event"
17284
+ },
17285
+ "source_id": {
17286
+ "type": "string",
17287
+ "example": "example-event"
17288
+ },
17289
+ "title": {
17290
+ "type": "string",
17291
+ "example": "AI community meetup"
17292
+ },
17293
+ "url": {
17294
+ "type": "string",
17295
+ "example": "https://example.invalid/events/ai"
17296
+ },
17297
+ "canonical_url": {
17298
+ "type": "string",
17299
+ "example": "https://example.invalid/events/ai"
17300
+ },
17301
+ "provider": {
17302
+ "type": "string",
17303
+ "example": "Example events provider"
17304
+ },
17305
+ "description": {
17306
+ "type": "string",
17307
+ "example": "An example meetup for people working with AI."
17308
+ },
17309
+ "date_start": {
17310
+ "type": "string",
17311
+ "example": "2026-09-23T18:00:00+02:00"
17312
+ },
17313
+ "date_end": {
17314
+ "type": "string",
17315
+ "example": "2026-09-23T20:00:00+02:00"
17316
+ },
17317
+ "location": {
17318
+ "type": "string",
17319
+ "example": "Berlin"
17320
+ },
17321
+ "event_type": {
17322
+ "type": "string",
17323
+ "example": "PHYSICAL"
17324
+ },
17325
+ "price_amount": {
17326
+ "type": [
17327
+ "number",
17328
+ "null"
17329
+ ],
17330
+ "example": 0
17331
+ }
17332
+ },
17333
+ "example": {
17334
+ "id": "example-event",
17335
+ "source_id": "example-event",
17336
+ "title": "AI community meetup",
17337
+ "url": "https://example.invalid/events/ai",
17338
+ "canonical_url": "https://example.invalid/events/ai",
17339
+ "provider": "Example events provider",
17340
+ "date_start": "2026-09-23T18:00:00+02:00",
17341
+ "date_end": "2026-09-23T20:00:00+02:00",
17342
+ "location": "Berlin",
17343
+ "event_type": "PHYSICAL",
17344
+ "description": "An example meetup for people working with AI.",
17345
+ "price_amount": 0
17346
+ }
17347
+ },
17348
+ "example": [
17349
+ {
17350
+ "id": "example-event",
17351
+ "source_id": "example-event",
17352
+ "title": "AI community meetup",
17353
+ "url": "https://example.invalid/events/ai",
17354
+ "canonical_url": "https://example.invalid/events/ai",
17355
+ "provider": "Example events provider",
17356
+ "date_start": "2026-09-23T18:00:00+02:00",
17357
+ "date_end": "2026-09-23T20:00:00+02:00",
17358
+ "location": "Berlin",
17359
+ "event_type": "PHYSICAL",
17360
+ "description": "An example meetup for people working with AI.",
17361
+ "price_amount": 0
17362
+ }
17363
+ ]
17364
+ },
17365
+ "events": {
17366
+ "type": "array",
17367
+ "items": {
17368
+ "type": "object",
17369
+ "properties": {
17370
+ "id": {
17371
+ "type": "string",
17372
+ "example": "example-event"
17373
+ },
17374
+ "source_id": {
17375
+ "type": "string",
17376
+ "example": "example-event"
17377
+ },
17378
+ "title": {
17379
+ "type": "string",
17380
+ "example": "AI community meetup"
17381
+ },
17382
+ "url": {
17383
+ "type": "string",
17384
+ "example": "https://example.invalid/events/ai"
17385
+ },
17386
+ "canonical_url": {
17387
+ "type": "string",
17388
+ "example": "https://example.invalid/events/ai"
17389
+ },
17390
+ "provider": {
17391
+ "type": "string",
17392
+ "example": "Example events provider"
17393
+ },
17394
+ "description": {
17395
+ "type": "string",
17396
+ "example": "An example meetup for people working with AI."
17397
+ },
17398
+ "date_start": {
17399
+ "type": "string",
17400
+ "example": "2026-09-23T18:00:00+02:00"
17401
+ },
17402
+ "date_end": {
17403
+ "type": "string",
17404
+ "example": "2026-09-23T20:00:00+02:00"
17405
+ },
17406
+ "location": {
17407
+ "type": "string",
17408
+ "example": "Berlin"
17409
+ },
17410
+ "event_type": {
17411
+ "type": "string",
17412
+ "example": "PHYSICAL"
17413
+ },
17414
+ "price_amount": {
17415
+ "type": [
17416
+ "number",
17417
+ "null"
17418
+ ],
17419
+ "example": 0
17420
+ }
17421
+ },
17422
+ "example": {
17423
+ "id": "example-event",
17424
+ "source_id": "example-event",
17425
+ "title": "AI community meetup",
17426
+ "url": "https://example.invalid/events/ai",
17427
+ "canonical_url": "https://example.invalid/events/ai",
17428
+ "provider": "Example events provider",
17429
+ "date_start": "2026-09-23T18:00:00+02:00",
17430
+ "date_end": "2026-09-23T20:00:00+02:00",
17431
+ "location": "Berlin",
17432
+ "event_type": "PHYSICAL",
17433
+ "description": "An example meetup for people working with AI.",
17434
+ "price_amount": 0
17435
+ }
17436
+ },
17437
+ "example": [
17438
+ {
17439
+ "id": "example-event",
17440
+ "source_id": "example-event",
17441
+ "title": "AI community meetup",
17442
+ "url": "https://example.invalid/events/ai",
17443
+ "canonical_url": "https://example.invalid/events/ai",
17444
+ "provider": "Example events provider",
17445
+ "date_start": "2026-09-23T18:00:00+02:00",
17446
+ "date_end": "2026-09-23T20:00:00+02:00",
17447
+ "location": "Berlin",
17448
+ "event_type": "PHYSICAL",
17449
+ "description": "An example meetup for people working with AI.",
17450
+ "price_amount": 0
17451
+ }
17452
+ ]
17453
+ },
17454
+ "warnings": {
17455
+ "type": "array",
17456
+ "items": {
17457
+ "type": "string"
17458
+ },
17459
+ "example": []
17460
+ },
17461
+ "partial": {
17462
+ "type": "boolean",
17463
+ "example": false
17269
17464
  }
17270
17465
  }
17271
17466
  }
@@ -17456,11 +17651,13 @@ Note: The 'id' field is auto-generated if not provided.
17456
17651
  "max_doctors": {
17457
17652
  "type": "integer",
17458
17653
  "description": "Maximum number of doctors to check for availability. Higher values return more results but take longer. Defaults to 10.\n",
17459
- "default": 10
17654
+ "default": 10,
17655
+ "minimum": 1,
17656
+ "maximum": 30
17460
17657
  },
17461
17658
  "visit_motive_category": {
17462
17659
  "type": "string",
17463
- "description": 'Filter results by appointment type category. When set, the skill searches a larger pool of doctors and filters by the Doctolib visit motive name to return only relevant appointment types. "general" = consultation, acute visit, new patient examination. "checkup" = preventive screening, health check, cancer screening. "vaccination" = immunisation appointments. "followup" = follow-up visit, existing patient, check-up after treatment.\n',
17660
+ "description": 'Filter results by appointment type category for both providers. Omission means general consultation unless a supported specific procedure (such as CT or MRT) was requested. An initial injury examination must not be replaced by a treatment appointment. Matching filters apply before availability ranking. "general" = consultation, acute visit, new patient examination. "checkup" = preventive screening, health check, cancer screening. "vaccination" = immunisation appointments. "followup" = follow-up visit, existing patient, check-up after treatment.\n',
17464
17661
  "enum": [
17465
17662
  "general",
17466
17663
  "checkup",
@@ -17538,6 +17735,39 @@ Note: The 'id' field is auto-generated if not provided.
17538
17735
  ]
17539
17736
  }
17540
17737
  },
17738
+ "property_type": {
17739
+ "type": "string",
17740
+ "enum": [
17741
+ "apartment",
17742
+ "shared_room"
17743
+ ],
17744
+ "default": "apartment",
17745
+ "description": "Entire apartments or shared rooms. Shared rooms use WG-Gesucht."
17746
+ },
17747
+ "sort": {
17748
+ "type": "string",
17749
+ "enum": [
17750
+ "price_asc",
17751
+ "newest"
17752
+ ],
17753
+ "default": "price_asc",
17754
+ "description": "Price ascending, or discovery order for monitoring. Newest order is supported by Kleinanzeigen; other providers retain their source order."
17755
+ },
17756
+ "max_price_eur": {
17757
+ "type": "number",
17758
+ "minimum": 0,
17759
+ "description": "Maximum advertised monthly rent or purchase price in EUR. Price basis varies by provider."
17760
+ },
17761
+ "min_rooms": {
17762
+ "type": "number",
17763
+ "minimum": 0,
17764
+ "description": "Minimum advertised rooms. Results with unknown rooms are excluded when set."
17765
+ },
17766
+ "min_size_sqm": {
17767
+ "type": "number",
17768
+ "minimum": 0,
17769
+ "description": "Minimum advertised area in square metres. Unknown area is excluded when set."
17770
+ },
17541
17771
  "max_results": {
17542
17772
  "type": "integer",
17543
17773
  "description": "Maximum number of listings to return (1-20, default 10).",
@@ -17555,6 +17785,248 @@ Note: The 'id' field is auto-generated if not provided.
17555
17785
  "required": [
17556
17786
  "requests"
17557
17787
  ]
17788
+ },
17789
+ "output_schema": {
17790
+ "type": "object",
17791
+ "properties": {
17792
+ "summary": {
17793
+ "type": "string",
17794
+ "example": "Home search completed"
17795
+ },
17796
+ "result_count": {
17797
+ "type": "integer",
17798
+ "example": 1
17799
+ },
17800
+ "provider": {
17801
+ "type": "string",
17802
+ "example": "Example housing provider"
17803
+ },
17804
+ "results": {
17805
+ "type": "array",
17806
+ "items": {
17807
+ "type": "object",
17808
+ "properties": {
17809
+ "id": {
17810
+ "type": "string",
17811
+ "example": "example-listing"
17812
+ },
17813
+ "source_id": {
17814
+ "type": "string",
17815
+ "example": "example-listing"
17816
+ },
17817
+ "title": {
17818
+ "type": "string",
17819
+ "example": "Two-room apartment"
17820
+ },
17821
+ "url": {
17822
+ "type": "string",
17823
+ "example": "https://example.invalid/apartments/one"
17824
+ },
17825
+ "canonical_url": {
17826
+ "type": "string",
17827
+ "example": "https://example.invalid/apartments/one"
17828
+ },
17829
+ "provider": {
17830
+ "type": "string",
17831
+ "example": "Example housing provider"
17832
+ },
17833
+ "price": {
17834
+ "type": [
17835
+ "number",
17836
+ "null"
17837
+ ],
17838
+ "example": 1100
17839
+ },
17840
+ "price_label": {
17841
+ "type": "string",
17842
+ "example": "1.100 EUR/month"
17843
+ },
17844
+ "size_sqm": {
17845
+ "type": [
17846
+ "number",
17847
+ "null"
17848
+ ],
17849
+ "example": 55
17850
+ },
17851
+ "rooms": {
17852
+ "type": [
17853
+ "number",
17854
+ "null"
17855
+ ],
17856
+ "example": 2
17857
+ },
17858
+ "address": {
17859
+ "type": "string",
17860
+ "example": "Berlin"
17861
+ },
17862
+ "property_type": {
17863
+ "type": "string",
17864
+ "example": "apartment"
17865
+ },
17866
+ "listing_type": {
17867
+ "type": "string",
17868
+ "example": "rent"
17869
+ },
17870
+ "available_from": {
17871
+ "type": [
17872
+ "string",
17873
+ "null"
17874
+ ]
17875
+ }
17876
+ },
17877
+ "example": {
17878
+ "id": "example-listing",
17879
+ "source_id": "example-listing",
17880
+ "title": "Two-room apartment",
17881
+ "url": "https://example.invalid/apartments/one",
17882
+ "canonical_url": "https://example.invalid/apartments/one",
17883
+ "provider": "Example housing provider",
17884
+ "price": 1100,
17885
+ "price_label": "1.100 EUR/month",
17886
+ "size_sqm": 55,
17887
+ "rooms": 2,
17888
+ "address": "Berlin",
17889
+ "property_type": "apartment",
17890
+ "listing_type": "rent"
17891
+ }
17892
+ },
17893
+ "example": [
17894
+ {
17895
+ "id": "example-listing",
17896
+ "source_id": "example-listing",
17897
+ "title": "Two-room apartment",
17898
+ "url": "https://example.invalid/apartments/one",
17899
+ "canonical_url": "https://example.invalid/apartments/one",
17900
+ "provider": "Example housing provider",
17901
+ "price": 1100,
17902
+ "price_label": "1.100 EUR/month",
17903
+ "size_sqm": 55,
17904
+ "rooms": 2,
17905
+ "address": "Berlin",
17906
+ "property_type": "apartment",
17907
+ "listing_type": "rent"
17908
+ }
17909
+ ]
17910
+ },
17911
+ "listings": {
17912
+ "type": "array",
17913
+ "items": {
17914
+ "type": "object",
17915
+ "properties": {
17916
+ "id": {
17917
+ "type": "string",
17918
+ "example": "example-listing"
17919
+ },
17920
+ "source_id": {
17921
+ "type": "string",
17922
+ "example": "example-listing"
17923
+ },
17924
+ "title": {
17925
+ "type": "string",
17926
+ "example": "Two-room apartment"
17927
+ },
17928
+ "url": {
17929
+ "type": "string",
17930
+ "example": "https://example.invalid/apartments/one"
17931
+ },
17932
+ "canonical_url": {
17933
+ "type": "string",
17934
+ "example": "https://example.invalid/apartments/one"
17935
+ },
17936
+ "provider": {
17937
+ "type": "string",
17938
+ "example": "Example housing provider"
17939
+ },
17940
+ "price": {
17941
+ "type": [
17942
+ "number",
17943
+ "null"
17944
+ ],
17945
+ "example": 1100
17946
+ },
17947
+ "price_label": {
17948
+ "type": "string",
17949
+ "example": "1.100 EUR/month"
17950
+ },
17951
+ "size_sqm": {
17952
+ "type": [
17953
+ "number",
17954
+ "null"
17955
+ ],
17956
+ "example": 55
17957
+ },
17958
+ "rooms": {
17959
+ "type": [
17960
+ "number",
17961
+ "null"
17962
+ ],
17963
+ "example": 2
17964
+ },
17965
+ "address": {
17966
+ "type": "string",
17967
+ "example": "Berlin"
17968
+ },
17969
+ "property_type": {
17970
+ "type": "string",
17971
+ "example": "apartment"
17972
+ },
17973
+ "listing_type": {
17974
+ "type": "string",
17975
+ "example": "rent"
17976
+ },
17977
+ "available_from": {
17978
+ "type": [
17979
+ "string",
17980
+ "null"
17981
+ ]
17982
+ }
17983
+ },
17984
+ "example": {
17985
+ "id": "example-listing",
17986
+ "source_id": "example-listing",
17987
+ "title": "Two-room apartment",
17988
+ "url": "https://example.invalid/apartments/one",
17989
+ "canonical_url": "https://example.invalid/apartments/one",
17990
+ "provider": "Example housing provider",
17991
+ "price": 1100,
17992
+ "price_label": "1.100 EUR/month",
17993
+ "size_sqm": 55,
17994
+ "rooms": 2,
17995
+ "address": "Berlin",
17996
+ "property_type": "apartment",
17997
+ "listing_type": "rent"
17998
+ }
17999
+ },
18000
+ "example": [
18001
+ {
18002
+ "id": "example-listing",
18003
+ "source_id": "example-listing",
18004
+ "title": "Two-room apartment",
18005
+ "url": "https://example.invalid/apartments/one",
18006
+ "canonical_url": "https://example.invalid/apartments/one",
18007
+ "provider": "Example housing provider",
18008
+ "price": 1100,
18009
+ "price_label": "1.100 EUR/month",
18010
+ "size_sqm": 55,
18011
+ "rooms": 2,
18012
+ "address": "Berlin",
18013
+ "property_type": "apartment",
18014
+ "listing_type": "rent"
18015
+ }
18016
+ ]
18017
+ },
18018
+ "warnings": {
18019
+ "type": "array",
18020
+ "items": {
18021
+ "type": "string"
18022
+ },
18023
+ "example": []
18024
+ },
18025
+ "partial": {
18026
+ "type": "boolean",
18027
+ "example": false
18028
+ }
18029
+ }
17558
18030
  }
17559
18031
  },
17560
18032
  {
@@ -18285,10 +18757,145 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
18285
18757
  "type": "object",
18286
18758
  "properties": {
18287
18759
  "summary": {
18288
- "type": "string"
18760
+ "type": "string",
18761
+ "example": "News search completed"
18289
18762
  },
18290
18763
  "result_count": {
18291
- "type": "integer"
18764
+ "type": "integer",
18765
+ "example": 1
18766
+ },
18767
+ "provider": {
18768
+ "type": "string",
18769
+ "example": "Example news provider"
18770
+ },
18771
+ "results": {
18772
+ "type": "array",
18773
+ "items": {
18774
+ "type": "object",
18775
+ "properties": {
18776
+ "id": {
18777
+ "type": "string"
18778
+ },
18779
+ "source_id": {
18780
+ "type": "string",
18781
+ "example": "https://example.invalid/news/ai"
18782
+ },
18783
+ "title": {
18784
+ "type": "string",
18785
+ "example": "New developments in artificial intelligence"
18786
+ },
18787
+ "url": {
18788
+ "type": "string",
18789
+ "example": "https://example.invalid/news/ai"
18790
+ },
18791
+ "canonical_url": {
18792
+ "type": "string",
18793
+ "example": "https://example.invalid/news/ai"
18794
+ },
18795
+ "provider": {
18796
+ "type": "string",
18797
+ "example": "Example news provider"
18798
+ },
18799
+ "description": {
18800
+ "type": "string",
18801
+ "example": "An example article excerpt from the search result."
18802
+ },
18803
+ "page_age": {
18804
+ "type": "string",
18805
+ "example": "2026-09-21T08:00:00Z"
18806
+ }
18807
+ },
18808
+ "example": {
18809
+ "title": "New developments in artificial intelligence",
18810
+ "url": "https://example.invalid/news/ai",
18811
+ "canonical_url": "https://example.invalid/news/ai",
18812
+ "source_id": "https://example.invalid/news/ai",
18813
+ "provider": "Example news provider",
18814
+ "description": "An example article excerpt from the search result.",
18815
+ "page_age": "2026-09-21T08:00:00Z"
18816
+ }
18817
+ },
18818
+ "example": [
18819
+ {
18820
+ "title": "New developments in artificial intelligence",
18821
+ "url": "https://example.invalid/news/ai",
18822
+ "canonical_url": "https://example.invalid/news/ai",
18823
+ "source_id": "https://example.invalid/news/ai",
18824
+ "provider": "Example news provider",
18825
+ "description": "An example article excerpt from the search result.",
18826
+ "page_age": "2026-09-21T08:00:00Z"
18827
+ }
18828
+ ]
18829
+ },
18830
+ "articles": {
18831
+ "type": "array",
18832
+ "items": {
18833
+ "type": "object",
18834
+ "properties": {
18835
+ "id": {
18836
+ "type": "string"
18837
+ },
18838
+ "source_id": {
18839
+ "type": "string",
18840
+ "example": "https://example.invalid/news/ai"
18841
+ },
18842
+ "title": {
18843
+ "type": "string",
18844
+ "example": "New developments in artificial intelligence"
18845
+ },
18846
+ "url": {
18847
+ "type": "string",
18848
+ "example": "https://example.invalid/news/ai"
18849
+ },
18850
+ "canonical_url": {
18851
+ "type": "string",
18852
+ "example": "https://example.invalid/news/ai"
18853
+ },
18854
+ "provider": {
18855
+ "type": "string",
18856
+ "example": "Example news provider"
18857
+ },
18858
+ "description": {
18859
+ "type": "string",
18860
+ "example": "An example article excerpt from the search result."
18861
+ },
18862
+ "page_age": {
18863
+ "type": "string",
18864
+ "example": "2026-09-21T08:00:00Z"
18865
+ }
18866
+ },
18867
+ "example": {
18868
+ "title": "New developments in artificial intelligence",
18869
+ "url": "https://example.invalid/news/ai",
18870
+ "canonical_url": "https://example.invalid/news/ai",
18871
+ "source_id": "https://example.invalid/news/ai",
18872
+ "provider": "Example news provider",
18873
+ "description": "An example article excerpt from the search result.",
18874
+ "page_age": "2026-09-21T08:00:00Z"
18875
+ }
18876
+ },
18877
+ "example": [
18878
+ {
18879
+ "title": "New developments in artificial intelligence",
18880
+ "url": "https://example.invalid/news/ai",
18881
+ "canonical_url": "https://example.invalid/news/ai",
18882
+ "source_id": "https://example.invalid/news/ai",
18883
+ "provider": "Example news provider",
18884
+ "description": "An example article excerpt from the search result.",
18885
+ "page_age": "2026-09-21T08:00:00Z"
18886
+ }
18887
+ ]
18888
+ },
18889
+ "warnings": {
18890
+ "type": "array",
18891
+ "items": {
18892
+ "type": "string"
18893
+ },
18894
+ "example": []
18895
+ },
18896
+ "partial": {
18897
+ "type": "boolean",
18898
+ "example": false
18292
18899
  }
18293
18900
  }
18294
18901
  }
@@ -19240,6 +19847,11 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
19240
19847
  "items": {
19241
19848
  "type": "object",
19242
19849
  "properties": {
19850
+ "link_to_chat": {
19851
+ "type": "boolean",
19852
+ "default": true,
19853
+ "description": "Link to the current chat; false leaves the Task unlinked."
19854
+ },
19243
19855
  "title": {
19244
19856
  "type": "string"
19245
19857
  },
@@ -19265,6 +19877,11 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
19265
19877
  }
19266
19878
  }
19267
19879
  },
19880
+ "link_to_chat": {
19881
+ "type": "boolean",
19882
+ "default": true,
19883
+ "description": "Default chat-link choice for created Tasks; tasks[] can override it."
19884
+ },
19268
19885
  "title": {
19269
19886
  "type": "string",
19270
19887
  "description": "Single-task title when not using tasks[]."
@@ -19979,9 +20596,17 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
19979
20596
  "app_namespace_py": "weather",
19980
20597
  "skill_method_py": "forecast",
19981
20598
  "description_key": "apps.weather.forecast.description",
19982
- "description": "Get current and upcoming weather forecasts for a place, including daily weather, temperatures, rain likelihood, and hourly details stored in day embeds. Use this for weather questions, forecast requests, and trip/day planning involving weather.",
20599
+ "description": "Get current and upcoming weather forecasts for a place, including daily weather, temperatures, rain likelihood, and hourly details stored in day embeds. Use start_date and end_date for an inclusive date range. Use this for weather questions, forecast requests, and trip/day planning involving weather.",
19983
20600
  "schema": {
19984
20601
  "type": "object",
20602
+ "x-ui": {
20603
+ "control": "date-range",
20604
+ "start_field": "start_date",
20605
+ "end_field": "end_date",
20606
+ "min": "today",
20607
+ "max_offset_days": 13,
20608
+ "default": "today"
20609
+ },
19985
20610
  "properties": {
19986
20611
  "location": {
19987
20612
  "type": "string",
@@ -19989,10 +20614,23 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
19989
20614
  },
19990
20615
  "days": {
19991
20616
  "type": "integer",
19992
- "description": "Number of forecast days to return. Defaults to 7. Maximum 14.",
20617
+ "description": "Compatibility input for older clients. Number of days from today; defaults to 7 and cannot be combined with start_date/end_date.",
19993
20618
  "minimum": 1,
19994
20619
  "maximum": 14,
19995
- "default": 7
20620
+ "default": 7,
20621
+ "x-ui": {
20622
+ "hidden": true
20623
+ }
20624
+ },
20625
+ "start_date": {
20626
+ "type": "string",
20627
+ "format": "date",
20628
+ "description": "First forecast date, inclusive, in the location timezone. Must be today or later and supplied with end_date."
20629
+ },
20630
+ "end_date": {
20631
+ "type": "string",
20632
+ "format": "date",
20633
+ "description": "Last forecast date, inclusive, in the location timezone. Must be within the 14-day forecast window and supplied with start_date."
19996
20634
  },
19997
20635
  "latitude": {
19998
20636
  "type": "number",
@@ -20023,13 +20661,458 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
20023
20661
  "type": "object",
20024
20662
  "properties": {
20025
20663
  "summary": {
20026
- "type": "string"
20664
+ "type": "string",
20665
+ "example": "Weather forecast for Berlin"
20666
+ },
20667
+ "result_count": {
20668
+ "type": "integer",
20669
+ "example": 1
20670
+ },
20671
+ "start_date": {
20672
+ "type": "string",
20673
+ "format": "date",
20674
+ "example": "2026-09-21"
20675
+ },
20676
+ "end_date": {
20677
+ "type": "string",
20678
+ "format": "date",
20679
+ "example": "2026-09-21"
20027
20680
  },
20028
20681
  "rain_probability": {
20029
- "type": "number"
20682
+ "type": [
20683
+ "number",
20684
+ "null"
20685
+ ],
20686
+ "example": 60
20030
20687
  },
20031
20688
  "max_temperature_c": {
20032
- "type": "number"
20689
+ "type": [
20690
+ "number",
20691
+ "null"
20692
+ ],
20693
+ "example": 20
20694
+ },
20695
+ "rain_expected": {
20696
+ "type": [
20697
+ "boolean",
20698
+ "null"
20699
+ ],
20700
+ "example": true
20701
+ },
20702
+ "rain_summary": {
20703
+ "type": "string",
20704
+ "example": "Rain is forecast today: 12:00\u201314:00 (Europe/Berlin)."
20705
+ },
20706
+ "forecast_day": {
20707
+ "type": "object",
20708
+ "properties": {
20709
+ "date": {
20710
+ "type": "string",
20711
+ "example": "2026-09-21"
20712
+ },
20713
+ "title": {
20714
+ "type": "string",
20715
+ "example": "Berlin weather"
20716
+ },
20717
+ "timezone": {
20718
+ "type": "string",
20719
+ "example": "Europe/Berlin"
20720
+ },
20721
+ "condition": {
20722
+ "type": [
20723
+ "string",
20724
+ "null"
20725
+ ],
20726
+ "example": "rain"
20727
+ },
20728
+ "temperature_min_c": {
20729
+ "type": [
20730
+ "number",
20731
+ "null"
20732
+ ],
20733
+ "example": 12
20734
+ },
20735
+ "temperature_max_c": {
20736
+ "type": [
20737
+ "number",
20738
+ "null"
20739
+ ],
20740
+ "example": 20
20741
+ },
20742
+ "precipitation_total_mm": {
20743
+ "type": [
20744
+ "number",
20745
+ "null"
20746
+ ],
20747
+ "example": 1.2
20748
+ },
20749
+ "precipitation_probability_max_pct": {
20750
+ "type": [
20751
+ "number",
20752
+ "null"
20753
+ ],
20754
+ "example": 60
20755
+ },
20756
+ "hourly": {
20757
+ "type": "array",
20758
+ "items": {
20759
+ "type": "object",
20760
+ "properties": {
20761
+ "timestamp": {
20762
+ "type": "string",
20763
+ "example": "2026-09-21T12:00:00+02:00"
20764
+ },
20765
+ "time": {
20766
+ "type": "string",
20767
+ "example": "12:00"
20768
+ },
20769
+ "precipitation_mm": {
20770
+ "type": [
20771
+ "number",
20772
+ "null"
20773
+ ],
20774
+ "example": 0.4
20775
+ },
20776
+ "precipitation_probability_pct": {
20777
+ "type": [
20778
+ "number",
20779
+ "null"
20780
+ ],
20781
+ "example": 60
20782
+ },
20783
+ "condition": {
20784
+ "type": [
20785
+ "string",
20786
+ "null"
20787
+ ],
20788
+ "example": "rain"
20789
+ },
20790
+ "temperature_c": {
20791
+ "type": [
20792
+ "number",
20793
+ "null"
20794
+ ],
20795
+ "example": 18
20796
+ }
20797
+ },
20798
+ "example": {
20799
+ "timestamp": "2026-09-21T12:00:00+02:00",
20800
+ "time": "12:00",
20801
+ "precipitation_mm": 0.4,
20802
+ "precipitation_probability_pct": 60,
20803
+ "condition": "rain",
20804
+ "temperature_c": 18
20805
+ }
20806
+ },
20807
+ "example": [
20808
+ {
20809
+ "timestamp": "2026-09-21T12:00:00+02:00",
20810
+ "time": "12:00",
20811
+ "precipitation_mm": 0.4,
20812
+ "precipitation_probability_pct": 60,
20813
+ "condition": "rain",
20814
+ "temperature_c": 18
20815
+ }
20816
+ ]
20817
+ }
20818
+ },
20819
+ "example": {
20820
+ "date": "2026-09-21",
20821
+ "title": "Berlin weather",
20822
+ "timezone": "Europe/Berlin",
20823
+ "condition": "rain",
20824
+ "temperature_min_c": 12,
20825
+ "temperature_max_c": 20,
20826
+ "precipitation_total_mm": 1.2,
20827
+ "precipitation_probability_max_pct": 60,
20828
+ "hourly": [
20829
+ {
20830
+ "timestamp": "2026-09-21T12:00:00+02:00",
20831
+ "time": "12:00",
20832
+ "precipitation_mm": 0.4,
20833
+ "precipitation_probability_pct": 60,
20834
+ "condition": "rain",
20835
+ "temperature_c": 18
20836
+ }
20837
+ ]
20838
+ }
20839
+ },
20840
+ "forecast_days": {
20841
+ "type": "array",
20842
+ "items": {
20843
+ "type": "object",
20844
+ "properties": {
20845
+ "date": {
20846
+ "type": "string",
20847
+ "example": "2026-09-21"
20848
+ },
20849
+ "title": {
20850
+ "type": "string",
20851
+ "example": "Berlin weather"
20852
+ },
20853
+ "timezone": {
20854
+ "type": "string",
20855
+ "example": "Europe/Berlin"
20856
+ },
20857
+ "condition": {
20858
+ "type": [
20859
+ "string",
20860
+ "null"
20861
+ ],
20862
+ "example": "rain"
20863
+ },
20864
+ "temperature_min_c": {
20865
+ "type": [
20866
+ "number",
20867
+ "null"
20868
+ ],
20869
+ "example": 12
20870
+ },
20871
+ "temperature_max_c": {
20872
+ "type": [
20873
+ "number",
20874
+ "null"
20875
+ ],
20876
+ "example": 20
20877
+ },
20878
+ "precipitation_total_mm": {
20879
+ "type": [
20880
+ "number",
20881
+ "null"
20882
+ ],
20883
+ "example": 1.2
20884
+ },
20885
+ "precipitation_probability_max_pct": {
20886
+ "type": [
20887
+ "number",
20888
+ "null"
20889
+ ],
20890
+ "example": 60
20891
+ },
20892
+ "hourly": {
20893
+ "type": "array",
20894
+ "items": {
20895
+ "type": "object",
20896
+ "properties": {
20897
+ "timestamp": {
20898
+ "type": "string",
20899
+ "example": "2026-09-21T12:00:00+02:00"
20900
+ },
20901
+ "time": {
20902
+ "type": "string",
20903
+ "example": "12:00"
20904
+ },
20905
+ "precipitation_mm": {
20906
+ "type": [
20907
+ "number",
20908
+ "null"
20909
+ ],
20910
+ "example": 0.4
20911
+ },
20912
+ "precipitation_probability_pct": {
20913
+ "type": [
20914
+ "number",
20915
+ "null"
20916
+ ],
20917
+ "example": 60
20918
+ },
20919
+ "condition": {
20920
+ "type": [
20921
+ "string",
20922
+ "null"
20923
+ ],
20924
+ "example": "rain"
20925
+ },
20926
+ "temperature_c": {
20927
+ "type": [
20928
+ "number",
20929
+ "null"
20930
+ ],
20931
+ "example": 18
20932
+ }
20933
+ },
20934
+ "example": {
20935
+ "timestamp": "2026-09-21T12:00:00+02:00",
20936
+ "time": "12:00",
20937
+ "precipitation_mm": 0.4,
20938
+ "precipitation_probability_pct": 60,
20939
+ "condition": "rain",
20940
+ "temperature_c": 18
20941
+ }
20942
+ },
20943
+ "example": [
20944
+ {
20945
+ "timestamp": "2026-09-21T12:00:00+02:00",
20946
+ "time": "12:00",
20947
+ "precipitation_mm": 0.4,
20948
+ "precipitation_probability_pct": 60,
20949
+ "condition": "rain",
20950
+ "temperature_c": 18
20951
+ }
20952
+ ]
20953
+ }
20954
+ },
20955
+ "example": {
20956
+ "date": "2026-09-21",
20957
+ "title": "Berlin weather",
20958
+ "timezone": "Europe/Berlin",
20959
+ "condition": "rain",
20960
+ "temperature_min_c": 12,
20961
+ "temperature_max_c": 20,
20962
+ "precipitation_total_mm": 1.2,
20963
+ "precipitation_probability_max_pct": 60,
20964
+ "hourly": [
20965
+ {
20966
+ "timestamp": "2026-09-21T12:00:00+02:00",
20967
+ "time": "12:00",
20968
+ "precipitation_mm": 0.4,
20969
+ "precipitation_probability_pct": 60,
20970
+ "condition": "rain",
20971
+ "temperature_c": 18
20972
+ }
20973
+ ]
20974
+ }
20975
+ },
20976
+ "example": [
20977
+ {
20978
+ "date": "2026-09-21",
20979
+ "title": "Berlin weather",
20980
+ "timezone": "Europe/Berlin",
20981
+ "condition": "rain",
20982
+ "temperature_min_c": 12,
20983
+ "temperature_max_c": 20,
20984
+ "precipitation_total_mm": 1.2,
20985
+ "precipitation_probability_max_pct": 60,
20986
+ "hourly": [
20987
+ {
20988
+ "timestamp": "2026-09-21T12:00:00+02:00",
20989
+ "time": "12:00",
20990
+ "precipitation_mm": 0.4,
20991
+ "precipitation_probability_pct": 60,
20992
+ "condition": "rain",
20993
+ "temperature_c": 18
20994
+ }
20995
+ ]
20996
+ }
20997
+ ]
20998
+ },
20999
+ "hourly": {
21000
+ "type": "array",
21001
+ "items": {
21002
+ "type": "object",
21003
+ "properties": {
21004
+ "timestamp": {
21005
+ "type": "string",
21006
+ "example": "2026-09-21T12:00:00+02:00"
21007
+ },
21008
+ "time": {
21009
+ "type": "string",
21010
+ "example": "12:00"
21011
+ },
21012
+ "precipitation_mm": {
21013
+ "type": [
21014
+ "number",
21015
+ "null"
21016
+ ],
21017
+ "example": 0.4
21018
+ },
21019
+ "precipitation_probability_pct": {
21020
+ "type": [
21021
+ "number",
21022
+ "null"
21023
+ ],
21024
+ "example": 60
21025
+ },
21026
+ "condition": {
21027
+ "type": [
21028
+ "string",
21029
+ "null"
21030
+ ],
21031
+ "example": "rain"
21032
+ },
21033
+ "temperature_c": {
21034
+ "type": [
21035
+ "number",
21036
+ "null"
21037
+ ],
21038
+ "example": 18
21039
+ }
21040
+ },
21041
+ "example": {
21042
+ "timestamp": "2026-09-21T12:00:00+02:00",
21043
+ "time": "12:00",
21044
+ "precipitation_mm": 0.4,
21045
+ "precipitation_probability_pct": 60,
21046
+ "condition": "rain",
21047
+ "temperature_c": 18
21048
+ }
21049
+ },
21050
+ "example": [
21051
+ {
21052
+ "timestamp": "2026-09-21T12:00:00+02:00",
21053
+ "time": "12:00",
21054
+ "precipitation_mm": 0.4,
21055
+ "precipitation_probability_pct": 60,
21056
+ "condition": "rain",
21057
+ "temperature_c": 18
21058
+ }
21059
+ ]
21060
+ },
21061
+ "rain_periods": {
21062
+ "type": "array",
21063
+ "items": {
21064
+ "type": "object",
21065
+ "properties": {
21066
+ "start": {
21067
+ "type": "string",
21068
+ "example": "2026-09-21T12:00:00+02:00"
21069
+ },
21070
+ "end": {
21071
+ "type": "string",
21072
+ "example": "2026-09-21T14:00:00+02:00"
21073
+ },
21074
+ "start_time": {
21075
+ "type": "string",
21076
+ "example": "12:00"
21077
+ },
21078
+ "end_time": {
21079
+ "type": "string",
21080
+ "example": "14:00"
21081
+ },
21082
+ "timezone": {
21083
+ "type": [
21084
+ "string",
21085
+ "null"
21086
+ ],
21087
+ "example": "Europe/Berlin"
21088
+ },
21089
+ "probability_pct": {
21090
+ "type": [
21091
+ "number",
21092
+ "null"
21093
+ ],
21094
+ "example": 60
21095
+ }
21096
+ },
21097
+ "example": {
21098
+ "start": "2026-09-21T12:00:00+02:00",
21099
+ "end": "2026-09-21T14:00:00+02:00",
21100
+ "start_time": "12:00",
21101
+ "end_time": "14:00",
21102
+ "timezone": "Europe/Berlin",
21103
+ "probability_pct": 60
21104
+ }
21105
+ },
21106
+ "example": [
21107
+ {
21108
+ "start": "2026-09-21T12:00:00+02:00",
21109
+ "end": "2026-09-21T14:00:00+02:00",
21110
+ "start_time": "12:00",
21111
+ "end_time": "14:00",
21112
+ "timezone": "Europe/Berlin",
21113
+ "probability_pct": 60
21114
+ }
21115
+ ]
20033
21116
  }
20034
21117
  }
20035
21118
  }
@@ -20972,7 +22055,7 @@ var WeatherAppSkills = class {
20972
22055
  this.runSkill = runSkill;
20973
22056
  }
20974
22057
  /**
20975
- * Get current and upcoming weather forecasts for a place, including daily weather, temperatures, rain likelihood, and hourly details stored in day embeds. Use this for weather questions, forecast requests, and trip/day planning involving weather.
22058
+ * Get current and upcoming weather forecasts for a place, including daily weather, temperatures, rain likelihood, and hourly details stored in day embeds. Use start_date and end_date for an inclusive date range. Use this for weather questions, forecast requests, and trip/day planning involving weather.
20976
22059
  * Description key: apps.weather.forecast.description
20977
22060
  * Skill: weather/forecast
20978
22061
  */
@@ -70665,6 +71748,36 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
70665
71748
  details: {
70666
71749
  text: "Details"
70667
71750
  },
71751
+ location: {
71752
+ text: "Location"
71753
+ },
71754
+ choose_location: {
71755
+ text: "Choose a location"
71756
+ },
71757
+ home_location_scope: {
71758
+ text: "Search covers the selected city."
71759
+ },
71760
+ show_all_fields: {
71761
+ text: "Show all fields"
71762
+ },
71763
+ show_basic_fields: {
71764
+ text: "Show basic fields"
71765
+ },
71766
+ date_range: {
71767
+ text: "Date range"
71768
+ },
71769
+ specific_dates: {
71770
+ text: "Specific dates"
71771
+ },
71772
+ back_to_app_skill: {
71773
+ text: "App skill"
71774
+ },
71775
+ collapse: {
71776
+ text: "Collapse"
71777
+ },
71778
+ step_in_use: {
71779
+ text: "This step is used by {steps}. Update those fields before removing it."
71780
+ },
70668
71781
  time_trigger: {
70669
71782
  text: "Time trigger"
70670
71783
  },