@ingenx-io/valets-schema-mcp-server 0.1.10 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/data/docs/collections/firestore-paths.md +20 -0
  2. package/data/docs/enums/attention-status.md +1 -1
  3. package/data/docs/enums/booking-status.md +1 -1
  4. package/data/docs/enums/customer-payment-status.md +1 -1
  5. package/data/docs/enums/customer-payment-target-type.md +1 -1
  6. package/data/docs/enums/delivery-type.md +1 -1
  7. package/data/docs/enums/deployment-link-type.md +1 -1
  8. package/data/docs/enums/event-status.md +1 -1
  9. package/data/docs/enums/fulfillment-status.md +1 -1
  10. package/data/docs/enums/loyalty-transaction-type.md +1 -1
  11. package/data/docs/enums/order-status.md +1 -1
  12. package/data/docs/enums/outbound-message-format.md +22 -0
  13. package/data/docs/enums/outbound-message-purpose.md +24 -0
  14. package/data/docs/enums/outbound-message-status.md +4 -4
  15. package/data/docs/enums/payment-method.md +2 -2
  16. package/data/docs/enums/payment-proof-status.md +2 -2
  17. package/data/docs/enums/payment-status.md +2 -2
  18. package/data/docs/enums/pending-issue.md +2 -2
  19. package/data/docs/enums/return-status.md +2 -2
  20. package/data/docs/enums/session-status.md +2 -2
  21. package/data/docs/enums/site-status.md +2 -2
  22. package/data/docs/enums/stocktake-frequency.md +2 -2
  23. package/data/docs/enums/stocktake-item-status.md +2 -2
  24. package/data/docs/enums/stocktake-status.md +2 -2
  25. package/data/docs/enums/ticket-status.md +2 -2
  26. package/data/docs/enums/waba-label.md +2 -2
  27. package/data/docs/enums/whatsapp-button-sub-type.md +22 -0
  28. package/data/docs/enums/whatsapp-template-component.md +23 -0
  29. package/data/docs/enums/whatsapp-template-status.md +26 -0
  30. package/data/docs/index.md +11 -5
  31. package/data/docs/models/allowed-user.md +1 -1
  32. package/data/docs/models/analytics-backfill.md +1 -1
  33. package/data/docs/models/analytics-daily.md +1 -1
  34. package/data/docs/models/analytics-event.md +1 -1
  35. package/data/docs/models/analytics-hourly.md +1 -1
  36. package/data/docs/models/booking-version.md +1 -1
  37. package/data/docs/models/booking.md +1 -1
  38. package/data/docs/models/customer-payment-allocation.md +1 -1
  39. package/data/docs/models/customer-payment.md +1 -1
  40. package/data/docs/models/customer.md +1 -1
  41. package/data/docs/models/event.md +1 -1
  42. package/data/docs/models/loyalty-config.md +1 -1
  43. package/data/docs/models/loyalty-reward.md +1 -1
  44. package/data/docs/models/loyalty-status.md +1 -1
  45. package/data/docs/models/loyalty-transaction.md +1 -1
  46. package/data/docs/models/magic-link-request.md +1 -1
  47. package/data/docs/models/metrics-current.md +1 -1
  48. package/data/docs/models/metrics-daily.md +1 -1
  49. package/data/docs/models/metrics-monthly.md +1 -1
  50. package/data/docs/models/order-item.md +1 -1
  51. package/data/docs/models/order.md +1 -1
  52. package/data/docs/models/sale.md +1 -1
  53. package/data/docs/models/site-payment.md +1 -1
  54. package/data/docs/models/site.md +1 -1
  55. package/data/docs/models/stocktake-item.md +1 -1
  56. package/data/docs/models/stocktake.md +1 -1
  57. package/data/docs/models/ticket.md +1 -1
  58. package/data/docs/models/whatsapp-inbound-message.md +1 -1
  59. package/data/docs/models/whatsapp-outbound-lifecycle-event.md +310 -0
  60. package/data/docs/models/whatsapp-outbound-message.md +395 -172
  61. package/data/docs/models/whatsapp-template.md +283 -0
  62. package/data/static/llms.txt +129 -32
  63. package/data/static/openapi.yaml +329 -66
  64. package/data/static/schemas.json +414 -69
  65. package/package.json +1 -1
  66. package/data/docs/enums/outbound-message-kind.md +0 -23
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "description": "@valets/schema \u2014 consolidated schema bundle",
4
- "generated": "2026-05-16T00:20:07.691826+00:00",
4
+ "generated": "2026-05-27T13:06:59.435619+00:00",
5
5
  "schemas": {
6
6
  "allowed-user": {
7
7
  "type": "object",
@@ -4394,25 +4394,34 @@
4394
4394
  ]
4395
4395
  }
4396
4396
  },
4397
- "outbound-message-kind": {
4397
+ "outbound-message-format": {
4398
+ "type": "string",
4399
+ "enum": [
4400
+ "text",
4401
+ "template"
4402
+ ],
4403
+ "description": "Outbound WhatsApp message format. `text` is a free-form body (only valid inside the 24h customer-care window); `template` is a pre-approved WhatsApp template send. The backend is the authority on which is allowed (GH#43)."
4404
+ },
4405
+ "outbound-message-purpose": {
4398
4406
  "type": "string",
4399
4407
  "enum": [
4400
4408
  "otp",
4401
4409
  "review_request",
4402
- "adhoc"
4410
+ "adhoc",
4411
+ "conversational"
4403
4412
  ],
4404
- "description": "Outbound WhatsApp message kind. Strict enum \u2014 new kinds require a schema version bump (GH#38)."
4413
+ "description": "Business purpose of an outbound WhatsApp message \u2014 orthogonal to its format (see OutboundMessageFormat). `otp`/`review_request`/`adhoc` are system-originated; `conversational` is a human agent reply from the dashboard inbox. Optional signal carried for analytics/triggers (GH#43; supersedes the GH#38 OutboundMessageKind)."
4405
4414
  },
4406
4415
  "outbound-message-status": {
4407
4416
  "type": "string",
4408
4417
  "enum": [
4409
- "accepted",
4418
+ "queued",
4410
4419
  "sent",
4411
4420
  "delivered",
4412
4421
  "read",
4413
4422
  "failed"
4414
4423
  ],
4415
- "description": "Outbound WhatsApp message delivery status. Lifecycle: accepted \u2192 sent \u2192 delivered \u2192 read, or accepted \u2192 failed. Updated in-place by Meta delivery callbacks (GH#38)."
4424
+ "description": "Outbound WhatsApp message delivery status. Lifecycle: queued \u2192 sent \u2192 delivered \u2192 read, or queued \u2192 failed. The dashboard creates the message with status `queued`; the whatsapp-server backend owns every transition after, updating in place from Meta delivery callbacks (GH#43)."
4416
4425
  },
4417
4426
  "payment-method": {
4418
4427
  "type": "string",
@@ -5556,6 +5565,14 @@
5556
5565
  ],
5557
5566
  "description": "Human-readable WABA label identifying which Meta business number received the message (GH#36)."
5558
5567
  },
5568
+ "whatsapp-button-sub-type": {
5569
+ "type": "string",
5570
+ "enum": [
5571
+ "url",
5572
+ "quick_reply"
5573
+ ],
5574
+ "description": "Sub-type of a WhatsApp template button parameter. Set when WhatsappTemplateParameter.component === \"button\" \u2014 maps to Meta `components[].sub_type` (GH#46)."
5575
+ },
5559
5576
  "whatsapp-inbound-message": {
5560
5577
  "type": "object",
5561
5578
  "properties": {
@@ -5704,30 +5721,138 @@
5704
5721
  "context": null
5705
5722
  }
5706
5723
  },
5707
- "whatsapp-outbound-message": {
5724
+ "whatsapp-outbound-lifecycle-event": {
5708
5725
  "type": "object",
5709
5726
  "properties": {
5710
5727
  "id": {
5711
5728
  "readOnly": true,
5712
- "description": "(Read-only) Firestore document ID \u2014 wamid on success, generated UUID on failure.",
5729
+ "description": "(Read-only) Firestore document ID, auto-generated.",
5713
5730
  "type": [
5714
5731
  "string",
5715
5732
  "null"
5716
5733
  ]
5717
5734
  },
5718
- "messageId": {
5719
- "type": "string",
5720
- "x-immutable": true,
5721
- "description": "(Immutable) WhatsApp message ID (wamid) on success; generated UUID on send failure."
5735
+ "type": {
5736
+ "anyOf": [
5737
+ {
5738
+ "type": "string",
5739
+ "enum": [
5740
+ "send_attempt",
5741
+ "status_callback",
5742
+ "error"
5743
+ ]
5744
+ },
5745
+ {
5746
+ "type": "string"
5747
+ }
5748
+ ],
5749
+ "description": "(Read-only) Event type \u2014 send_attempt | status_callback | error | future string.",
5750
+ "readOnly": true
5751
+ },
5752
+ "at": {
5753
+ "$ref": "#/definitions/firestore-timestamp",
5754
+ "description": "(Read-only) When the event was recorded server-side.",
5755
+ "readOnly": true
5756
+ },
5757
+ "status": {
5758
+ "anyOf": [
5759
+ {
5760
+ "$ref": "#/definitions/outbound-message-status"
5761
+ },
5762
+ {
5763
+ "type": "null"
5764
+ }
5765
+ ],
5766
+ "readOnly": true,
5767
+ "description": "(Read-only) Resulting/observed status, when this event implies one."
5768
+ },
5769
+ "wamid": {
5770
+ "readOnly": true,
5771
+ "description": "(Read-only) WhatsApp message ID, if known at this point in the lifecycle.",
5772
+ "type": [
5773
+ "string",
5774
+ "null"
5775
+ ]
5776
+ },
5777
+ "phoneNumberId": {
5778
+ "readOnly": true,
5779
+ "description": "(Read-only) Meta phone number ID (the specific line within the WABA) used for the attempt.",
5780
+ "type": [
5781
+ "string",
5782
+ "null"
5783
+ ]
5784
+ },
5785
+ "contactWaId": {
5786
+ "readOnly": true,
5787
+ "description": "(Read-only) Normalized wa_id returned by Meta. May differ from the recipient `to`.",
5788
+ "type": [
5789
+ "string",
5790
+ "null"
5791
+ ]
5792
+ },
5793
+ "metaRequest": {
5794
+ "readOnly": true,
5795
+ "description": "(Read-only) Raw outbound payload sent to the Meta Graph API."
5796
+ },
5797
+ "metaResponse": {
5798
+ "readOnly": true,
5799
+ "description": "(Read-only) Raw Meta Graph API response."
5800
+ },
5801
+ "errorCode": {
5802
+ "readOnly": true,
5803
+ "description": "(Read-only) Meta error code. Present on failed attempts.",
5804
+ "type": [
5805
+ "integer",
5806
+ "null"
5807
+ ],
5808
+ "minimum": -9007199254740991,
5809
+ "maximum": 9007199254740991
5810
+ },
5811
+ "errorDetail": {
5812
+ "readOnly": true,
5813
+ "description": "(Read-only) Raw Meta error object(s)."
5814
+ }
5815
+ },
5816
+ "required": [
5817
+ "type",
5818
+ "at"
5819
+ ],
5820
+ "additionalProperties": false,
5821
+ "x-internal": true,
5822
+ "description": "\u26a0\ufe0f BACKEND-INTERNAL \u2014 not a consumer contract. WhatsappOutboundLifecycleEvent: append-only backend log for reconstituting an outbound message lifecycle (GH#43). Collection: whatsapp_outbound_messages/{messageId}/lifecycle_events/{eventId}. Written/read only by the whatsapp-server backend.",
5823
+ "example": {
5824
+ "id": null,
5825
+ "type": "phone",
5826
+ "at": "at",
5827
+ "status": "status",
5828
+ "wamid": null,
5829
+ "phoneNumberId": null,
5830
+ "contactWaId": null,
5831
+ "metaRequest": "metaRequest",
5832
+ "metaResponse": "metaResponse",
5833
+ "errorCode": null,
5834
+ "errorDetail": "errorDetail"
5835
+ }
5836
+ },
5837
+ "whatsapp-outbound-message": {
5838
+ "type": "object",
5839
+ "properties": {
5840
+ "id": {
5841
+ "readOnly": true,
5842
+ "description": "(Read-only) Firestore document ID \u2014 auto-generated at enqueue time.",
5843
+ "type": [
5844
+ "string",
5845
+ "null"
5846
+ ]
5722
5847
  },
5723
5848
  "to": {
5724
5849
  "type": "string",
5725
5850
  "x-immutable": true,
5726
- "description": "(Immutable) Recipient phone number in E.164 format. Mirrors inbound `from`."
5851
+ "description": "(Immutable) Recipient phone number in E.164 format. Must match the inbound `from` for the same conversation."
5727
5852
  },
5728
5853
  "waba": {
5729
5854
  "$ref": "#/definitions/waba-label",
5730
- "description": "(Immutable) WABA that sent the message. Mirrors inbound `waba`.",
5855
+ "description": "(Immutable) WABA that will send the message. Mirrors inbound `waba`.",
5731
5856
  "x-immutable": true
5732
5857
  },
5733
5858
  "wabaId": {
@@ -5735,52 +5860,119 @@
5735
5860
  "x-immutable": true,
5736
5861
  "description": "(Immutable) Meta WABA ID. Mirrors inbound `wabaId`."
5737
5862
  },
5738
- "sentAt": {
5739
- "$ref": "#/definitions/firestore-timestamp",
5740
- "description": "(Read-only) Server-side send timestamp. Mirrors inbound `receivedAt`.",
5741
- "readOnly": true
5742
- },
5743
- "phoneNumberId": {
5744
- "type": "string",
5745
- "x-immutable": true,
5746
- "description": "(Immutable) Meta phone number ID used for the send (specific line within the WABA)."
5747
- },
5748
5863
  "kind": {
5749
- "$ref": "#/definitions/outbound-message-kind",
5750
- "description": "(Immutable) Message kind.",
5864
+ "$ref": "#/definitions/outbound-message-format",
5865
+ "description": "(Immutable) Message format: `text` or `template`. Set `text` xor `template` to match.",
5751
5866
  "x-immutable": true
5752
5867
  },
5753
- "templateName": {
5754
- "type": "string",
5755
- "x-immutable": true,
5756
- "description": "(Immutable) WhatsApp template name used for the send."
5868
+ "text": {
5869
+ "x-when": "Set only when kind === \"text\" \u2014 the free-form message body.",
5870
+ "description": "Free-form message body. Present only when kind=text.",
5871
+ "type": [
5872
+ "string",
5873
+ "null"
5874
+ ]
5757
5875
  },
5758
- "status": {
5759
- "$ref": "#/definitions/outbound-message-status",
5760
- "description": "Delivery status. Updated in-place by Meta delivery callbacks."
5876
+ "template": {
5877
+ "x-when": "Set only when kind === \"template\".",
5878
+ "description": "Template send payload. Present only when kind=template.",
5879
+ "type": [
5880
+ "object",
5881
+ "null"
5882
+ ],
5883
+ "properties": {
5884
+ "name": {
5885
+ "type": "string",
5886
+ "description": "WhatsApp template name (must exist and be APPROVED in whatsapp_templates)."
5887
+ },
5888
+ "language": {
5889
+ "type": "string",
5890
+ "description": "Template language/locale code (e.g. \"en\", \"fr\")."
5891
+ },
5892
+ "variables": {
5893
+ "description": "Template variable values, keyed by the variable name declared on the template.",
5894
+ "type": "object",
5895
+ "propertyNames": {
5896
+ "type": "string"
5897
+ },
5898
+ "additionalProperties": {
5899
+ "type": "string"
5900
+ }
5901
+ }
5902
+ },
5903
+ "required": [
5904
+ "name",
5905
+ "language"
5906
+ ],
5907
+ "additionalProperties": false
5761
5908
  },
5762
- "contactWaId": {
5763
- "description": "Normalized wa_id returned by Meta on success. May differ from `to`.",
5909
+ "purpose": {
5910
+ "anyOf": [
5911
+ {
5912
+ "$ref": "#/definitions/outbound-message-purpose"
5913
+ },
5914
+ {
5915
+ "type": "null"
5916
+ }
5917
+ ],
5918
+ "x-immutable": true,
5919
+ "x-note": "Business purpose, orthogonal to `kind`. Carried for analytics/triggers; defaults to conversational for dashboard agent replies.",
5920
+ "description": "Business purpose (otp | review_request | adhoc | conversational). Optional."
5921
+ },
5922
+ "orderUuid": {
5923
+ "x-immutable": true,
5924
+ "description": "Order reference. Present on review_request messages.",
5764
5925
  "type": [
5765
5926
  "string",
5766
5927
  "null"
5767
5928
  ]
5768
5929
  },
5769
- "appId": {
5770
- "description": "Tenant appId when applicable.",
5930
+ "sentBy": {
5931
+ "type": "object",
5932
+ "properties": {
5933
+ "uid": {
5934
+ "type": "string",
5935
+ "description": "Firebase Auth UID of the dashboard user who enqueued the message."
5936
+ },
5937
+ "email": {
5938
+ "description": "Email of the sender, if available.",
5939
+ "type": "string"
5940
+ }
5941
+ },
5942
+ "required": [
5943
+ "uid"
5944
+ ],
5945
+ "additionalProperties": false,
5946
+ "x-immutable": true,
5947
+ "description": "(Immutable) Dashboard actor who enqueued the message."
5948
+ },
5949
+ "createdAt": {
5950
+ "$ref": "#/definitions/firestore-timestamp",
5951
+ "description": "(Immutable) Enqueue timestamp, set by the dashboard at create.",
5952
+ "x-immutable": true
5953
+ },
5954
+ "status": {
5955
+ "$ref": "#/definitions/outbound-message-status",
5956
+ "description": "Delivery status. Created as `queued` by the dashboard; updated in place by the backend.",
5957
+ "x-note": "Dashboard must create with `queued`. The backend owns every transition after (sent \u2192 delivered \u2192 read, or failed)."
5958
+ },
5959
+ "wamid": {
5960
+ "readOnly": true,
5961
+ "description": "(Read-only) WhatsApp message ID returned by Meta once the backend sends. Absent while queued or on failure.",
5771
5962
  "type": [
5772
5963
  "string",
5773
5964
  "null"
5774
5965
  ]
5775
5966
  },
5776
- "orderUuid": {
5777
- "description": "Order reference. Present on review_request messages only.",
5967
+ "error": {
5968
+ "readOnly": true,
5969
+ "description": "(Read-only) Human-readable failure reason. Present on status=failed. Raw Meta error detail lives in the lifecycle_events subcollection.",
5778
5970
  "type": [
5779
5971
  "string",
5780
5972
  "null"
5781
5973
  ]
5782
5974
  },
5783
- "statusUpdatedAt": {
5975
+ "sentAt": {
5784
5976
  "anyOf": [
5785
5977
  {
5786
5978
  "$ref": "#/definitions/firestore-timestamp"
@@ -5789,58 +5981,211 @@
5789
5981
  "type": "null"
5790
5982
  }
5791
5983
  ],
5792
- "description": "Timestamp of the last status update from a Meta delivery callback."
5984
+ "readOnly": true,
5985
+ "description": "(Read-only) When the backend sent the message to Meta."
5793
5986
  },
5794
- "failureCode": {
5795
- "description": "Meta error code. Present on failed sends only.",
5796
- "type": [
5797
- "integer",
5798
- "null"
5987
+ "deliveredAt": {
5988
+ "anyOf": [
5989
+ {
5990
+ "$ref": "#/definitions/firestore-timestamp"
5991
+ },
5992
+ {
5993
+ "type": "null"
5994
+ }
5799
5995
  ],
5800
- "minimum": -9007199254740991,
5801
- "maximum": 9007199254740991
5996
+ "readOnly": true,
5997
+ "description": "(Read-only) When Meta reported delivery."
5802
5998
  },
5803
- "failureErrors": {
5804
- "description": "Raw Meta error objects. Present on failed sends only.",
5805
- "type": [
5806
- "array",
5807
- "null"
5999
+ "readAt": {
6000
+ "anyOf": [
6001
+ {
6002
+ "$ref": "#/definitions/firestore-timestamp"
6003
+ },
6004
+ {
6005
+ "type": "null"
6006
+ }
6007
+ ],
6008
+ "readOnly": true,
6009
+ "description": "(Read-only) When Meta reported the recipient read the message."
6010
+ },
6011
+ "failedAt": {
6012
+ "anyOf": [
6013
+ {
6014
+ "$ref": "#/definitions/firestore-timestamp"
6015
+ },
6016
+ {
6017
+ "type": "null"
6018
+ }
5808
6019
  ],
5809
- "items": {}
6020
+ "readOnly": true,
6021
+ "description": "(Read-only) When the send failed."
5810
6022
  }
5811
6023
  },
5812
6024
  "required": [
5813
- "messageId",
5814
6025
  "to",
5815
6026
  "waba",
5816
6027
  "wabaId",
5817
- "sentAt",
5818
- "phoneNumberId",
5819
6028
  "kind",
5820
- "templateName",
6029
+ "sentBy",
6030
+ "createdAt",
5821
6031
  "status"
5822
6032
  ],
5823
6033
  "additionalProperties": false,
5824
- "description": "WhatsappOutboundMessage \u2014 outbound WhatsApp message persisted at send time (GH#38). Collection: whatsapp_outbound_messages/{docId}. Top-level scope. Symmetric counterpart to WhatsappInboundMessage (GH#36).",
6034
+ "description": "WhatsappOutboundMessage \u2014 Firestore-as-the-bus outbox doc (GH#43). Collection: whatsapp_outbound_messages/{docId}. Top-level scope; mirrors WhatsappInboundMessage. Dashboard enqueues `queued`; backend sends and owns the lifecycle.",
5825
6035
  "example": {
5826
6036
  "id": null,
5827
- "messageId": "mes_ref123",
5828
6037
  "to": "to",
5829
6038
  "waba": "waba",
5830
6039
  "wabaId": "wab_ref123",
5831
- "sentAt": "sentAt",
5832
- "phoneNumberId": "pho_ref123",
5833
6040
  "kind": "kind",
5834
- "templateName": "templateName",
5835
- "status": "status",
5836
- "contactWaId": null,
5837
- "appId": null,
6041
+ "text": null,
6042
+ "template": null,
6043
+ "purpose": "purpose",
5838
6044
  "orderUuid": null,
5839
- "statusUpdatedAt": "statusUpdatedAt",
5840
- "failureCode": null,
5841
- "failureErrors": null
6045
+ "sentBy": {
6046
+ "uid": "user_u8x92kqm"
6047
+ },
6048
+ "createdAt": "createdAt",
6049
+ "status": "status",
6050
+ "wamid": null,
6051
+ "error": null,
6052
+ "sentAt": "sentAt",
6053
+ "deliveredAt": "deliveredAt",
6054
+ "readAt": "readAt",
6055
+ "failedAt": "failedAt"
6056
+ }
6057
+ },
6058
+ "whatsapp-template": {
6059
+ "type": "object",
6060
+ "properties": {
6061
+ "id": {
6062
+ "readOnly": true,
6063
+ "description": "(Read-only) Firestore document ID \u2014 composite `{waba}__{name}__{language}`.",
6064
+ "type": [
6065
+ "string",
6066
+ "null"
6067
+ ]
6068
+ },
6069
+ "waba": {
6070
+ "$ref": "#/definitions/waba-label",
6071
+ "description": "(Read-only) WABA label this template is approved on. Templates are WABA-scoped. Mirrors WhatsappOutboundMessage.waba.",
6072
+ "readOnly": true
6073
+ },
6074
+ "wabaId": {
6075
+ "type": "string",
6076
+ "readOnly": true,
6077
+ "description": "(Read-only) Meta WABA ID this template belongs to. The sender must verify its phone number belongs to this WABA before using the template."
6078
+ },
6079
+ "name": {
6080
+ "type": "string",
6081
+ "readOnly": true,
6082
+ "description": "(Read-only) Template name as registered with Meta."
6083
+ },
6084
+ "language": {
6085
+ "type": "string",
6086
+ "readOnly": true,
6087
+ "description": "(Read-only) Template language/locale code (e.g. \"en\", \"fr\")."
6088
+ },
6089
+ "category": {
6090
+ "type": "string",
6091
+ "readOnly": true,
6092
+ "description": "(Read-only) Meta template category (e.g. MARKETING, UTILITY, AUTHENTICATION)."
6093
+ },
6094
+ "status": {
6095
+ "$ref": "#/definitions/whatsapp-template-status",
6096
+ "description": "(Read-only) Meta review status. Only APPROVED templates can be sent.",
6097
+ "readOnly": true
6098
+ },
6099
+ "parameters": {
6100
+ "type": "array",
6101
+ "items": {
6102
+ "type": "object",
6103
+ "properties": {
6104
+ "name": {
6105
+ "type": "string",
6106
+ "description": "Parameter name/placeholder (e.g. \"1\"). Matches a key in WhatsappOutboundMessage.template.variables."
6107
+ },
6108
+ "component": {
6109
+ "$ref": "#/definitions/whatsapp-template-component",
6110
+ "description": "Which template component this parameter targets: header | body | button."
6111
+ },
6112
+ "buttonIndex": {
6113
+ "description": "0-based button position. Present only when component=button (Meta requires a string index at send time).",
6114
+ "type": "integer",
6115
+ "minimum": -9007199254740991,
6116
+ "maximum": 9007199254740991
6117
+ },
6118
+ "buttonSubType": {
6119
+ "$ref": "#/definitions/whatsapp-button-sub-type",
6120
+ "description": "Button sub-type (url | quick_reply). Present only when component=button."
6121
+ }
6122
+ },
6123
+ "required": [
6124
+ "name",
6125
+ "component"
6126
+ ],
6127
+ "additionalProperties": false,
6128
+ "description": "Declared WhatsApp template parameter with component placement (GH#46)."
6129
+ },
6130
+ "readOnly": true,
6131
+ "description": "(Read-only) Declared parameters with component placement. Supersedes the flat `variables` list (GH#46) \u2014 lets the send group values into the correct header/body/button components. A message supplies values keyed by `name` via WhatsappOutboundMessage.template.variables."
6132
+ },
6133
+ "preview": {
6134
+ "type": "string",
6135
+ "readOnly": true,
6136
+ "description": "(Read-only) Rendered preview text for display in the dashboard picker."
6137
+ }
6138
+ },
6139
+ "required": [
6140
+ "waba",
6141
+ "wabaId",
6142
+ "name",
6143
+ "language",
6144
+ "category",
6145
+ "status",
6146
+ "parameters",
6147
+ "preview"
6148
+ ],
6149
+ "additionalProperties": false,
6150
+ "description": "WhatsappTemplate \u2014 Meta-approved template synced from the WhatsApp Business API (GH#43; parameter placement GH#46). Collection: whatsapp_templates/{docId}, doc ID `{waba}__{name}__{language}`. WABA-scoped; backend-synced; dashboard reads only.",
6151
+ "example": {
6152
+ "id": null,
6153
+ "waba": "waba",
6154
+ "wabaId": "wab_ref123",
6155
+ "name": "Amadou Diallo",
6156
+ "language": "language",
6157
+ "category": "category",
6158
+ "status": "status",
6159
+ "parameters": [
6160
+ {
6161
+ "name": "Amadou Diallo",
6162
+ "component": "component"
6163
+ }
6164
+ ],
6165
+ "preview": "preview"
5842
6166
  }
5843
6167
  },
6168
+ "whatsapp-template-component": {
6169
+ "type": "string",
6170
+ "enum": [
6171
+ "header",
6172
+ "body",
6173
+ "button"
6174
+ ],
6175
+ "description": "WhatsApp template component a parameter targets. Determines which Meta `components` entry the supplied value is placed in at send time (GH#46)."
6176
+ },
6177
+ "whatsapp-template-status": {
6178
+ "type": "string",
6179
+ "enum": [
6180
+ "APPROVED",
6181
+ "PENDING",
6182
+ "REJECTED",
6183
+ "PAUSED",
6184
+ "DISABLED",
6185
+ "IN_APPEAL"
6186
+ ],
6187
+ "description": "Meta review status of a WhatsApp message template, synced from the WhatsApp Business API. Only APPROVED templates can be sent. The fuller Meta status set is used deliberately (vs just APPROVED/PENDING/REJECTED) so this enum has a distinct value signature from PaymentProofStatus in the JSON-Schema $ref matcher (GH#43)."
6188
+ },
5844
6189
  "payment-summary": {
5845
6190
  "type": "object",
5846
6191
  "properties": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ingenx-io/valets-schema-mcp-server",
3
- "version": "0.1.10",
3
+ "version": "0.2.1",
4
4
  "description": "MCP server exposing @valets/schema documentation to AI agents",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -1,23 +0,0 @@
1
- ---
2
- title: "OutboundMessageKind"
3
- sidebar_label: "OutboundMessageKind"
4
- sidebar_position: 11
5
- ---
6
-
7
- # OutboundMessageKind
8
-
9
- | | |
10
- | -------------- | ----------------------------------- |
11
- | **Type** | `enum (of string)` |
12
- | **Required** | No |
13
- | **Defined in** | #/definitions/outbound-message-kind |
14
-
15
- **Description:** Outbound WhatsApp message kind. Strict enum — new kinds require a schema version bump (GH#38).
16
-
17
- Must be one of:
18
- * "otp"
19
- * "review_request"
20
- * "adhoc"
21
-
22
- ----------------------------------------------------------------------------------------------------------------------------
23
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-16 at 00:20:07 +0000