openmates 0.18.0-alpha.40 → 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
  */
@@ -66352,6 +67435,15 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
66352
67435
  },
66353
67436
  open_embed: {
66354
67437
  text: "Open result"
67438
+ },
67439
+ workflow_run: {
67440
+ text: "Workflow run"
67441
+ },
67442
+ workflow_test: {
67443
+ text: "Workflow test"
67444
+ },
67445
+ workflow_app_activity: {
67446
+ text: "App activity"
66355
67447
  }
66356
67448
  },
66357
67449
  apps: {
@@ -70630,10 +71722,10 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
70630
71722
  text: "Choose"
70631
71723
  },
70632
71724
  true: {
70633
- text: "true"
71725
+ text: "Yes"
70634
71726
  },
70635
71727
  false: {
70636
- text: "false"
71728
+ text: "No"
70637
71729
  },
70638
71730
  today: {
70639
71731
  text: "Today"
@@ -70656,6 +71748,36 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
70656
71748
  details: {
70657
71749
  text: "Details"
70658
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
+ },
70659
71781
  time_trigger: {
70660
71782
  text: "Time trigger"
70661
71783
  },
@@ -70852,7 +71974,7 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
70852
71974
  text: "Else"
70853
71975
  },
70854
71976
  do_nothing: {
70855
- text: "Do nothing. Add a step below."
71977
+ text: "Do nothing."
70856
71978
  },
70857
71979
  then: {
70858
71980
  text: "then"
@@ -70912,7 +72034,7 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
70912
72034
  text: "Click to add description"
70913
72035
  },
70914
72036
  workflow_on: {
70915
- text: "Workflow enabled"
72037
+ text: "Workflow on"
70916
72038
  },
70917
72039
  enabled: {
70918
72040
  text: "Enabled"
@@ -70964,6 +72086,146 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
70964
72086
  },
70965
72087
  sunday: {
70966
72088
  text: "Sunday"
72089
+ },
72090
+ output_type_text: {
72091
+ text: "Text"
72092
+ },
72093
+ output_type_number: {
72094
+ text: "Number"
72095
+ },
72096
+ output_type_date: {
72097
+ text: "Date"
72098
+ },
72099
+ output_type_list: {
72100
+ text: "List"
72101
+ },
72102
+ output_type_object: {
72103
+ text: "Details"
72104
+ },
72105
+ output_type_boolean: {
72106
+ text: "Yes / No"
72107
+ },
72108
+ output_empty_list: {
72109
+ text: "No results"
72110
+ },
72111
+ output_item_count: {
72112
+ text: "{count} items"
72113
+ },
72114
+ output_open_link: {
72115
+ text: "Open source"
72116
+ },
72117
+ output_open_chat: {
72118
+ text: "Open chat"
72119
+ },
72120
+ output_test_failed: {
72121
+ text: "This step could not be tested. Please check its inputs and try again."
72122
+ },
72123
+ output_preview_failed: {
72124
+ text: "This message could not be previewed. Please check its title and selected outputs."
72125
+ },
72126
+ output_step_failed: {
72127
+ text: "This step could not finish. Please check its inputs and try again."
72128
+ },
72129
+ output_step_skipped: {
72130
+ text: "This step was not needed for this run."
72131
+ },
72132
+ do_nothing_add_step: {
72133
+ text: "Do nothing.\nOr click here to add a step."
72134
+ },
72135
+ workflow_off: {
72136
+ text: "Workflow off"
72137
+ },
72138
+ sharing_soon: {
72139
+ text: "Workflow sharing is coming soon."
72140
+ }
72141
+ },
72142
+ runs: {
72143
+ history: {
72144
+ text: "Run history"
72145
+ },
72146
+ run: {
72147
+ text: "Run"
72148
+ },
72149
+ select_run: {
72150
+ text: "Select a run"
72151
+ },
72152
+ back_to_workflow: {
72153
+ text: "Back to workflow"
72154
+ },
72155
+ timeline: {
72156
+ text: "Workflow run timeline"
72157
+ },
72158
+ next: {
72159
+ text: "Next"
72160
+ },
72161
+ cancel: {
72162
+ text: "Cancel run"
72163
+ },
72164
+ empty: {
72165
+ text: "No workflow runs yet."
72166
+ },
72167
+ loading: {
72168
+ text: "Loading run\u2026"
72169
+ },
72170
+ delivery_pending: {
72171
+ text: "Waiting for chat delivery"
72172
+ },
72173
+ content_unavailable: {
72174
+ text: "Saved inputs and results are no longer available. Run and step statuses remain visible."
72175
+ },
72176
+ execution_failed: {
72177
+ text: "This run failed. Check the highlighted step before trying again."
72178
+ },
72179
+ cancel_title: {
72180
+ text: "Cancel this run?"
72181
+ },
72182
+ cancel_explanation: {
72183
+ text: "This run will stop at the next safe point."
72184
+ },
72185
+ keep_running: {
72186
+ text: "Keep running"
72187
+ },
72188
+ cancelling: {
72189
+ text: "Cancelling\u2026"
72190
+ },
72191
+ load_failed: {
72192
+ text: "This run could not be loaded. Try again."
72193
+ },
72194
+ delete_failed: {
72195
+ text: "This run could not be deleted. Try again."
72196
+ },
72197
+ cancel_failed: {
72198
+ text: "This run could not be cancelled. Try again."
72199
+ },
72200
+ time_unavailable: {
72201
+ text: "Time unavailable"
72202
+ },
72203
+ status_completed: {
72204
+ text: "Completed"
72205
+ },
72206
+ status_failed: {
72207
+ text: "Failed"
72208
+ },
72209
+ status_cancelled: {
72210
+ text: "Cancelled"
72211
+ },
72212
+ status_skipped: {
72213
+ text: "Skipped"
72214
+ },
72215
+ status_queued: {
72216
+ text: "Queued"
72217
+ },
72218
+ status_running: {
72219
+ text: "Running"
72220
+ },
72221
+ status_waiting: {
72222
+ text: "Waiting"
72223
+ },
72224
+ status_cancellation_requested: {
72225
+ text: "Cancellation requested"
72226
+ },
72227
+ status_unavailable: {
72228
+ text: "Status unavailable"
70967
72229
  }
70968
72230
  }
70969
72231
  }