@coldbirds/mcp-server 1.0.9 → 1.0.13

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.
@@ -102,6 +102,219 @@
102
102
  "path": "/api/v1/dashboard"
103
103
  }
104
104
  },
105
+ {
106
+ "name": "get_contact_list_analytics",
107
+ "title": "Get Contact List Analytics",
108
+ "description": "Returns deliverability, segmentation, and hygiene analytics for a contact list — the same multi-deck snapshot the in-app list dashboard shows. Includes the stoplight (sendable / risky / unsendable / unverified), validation status breakdown, provider mix (Google / Microsoft / other / unknown), validation freshness, top sending domains and free-mail count, suppression count, campaigns currently enrolling these contacts elsewhere (collision warning), standard + custom field coverage, top job titles, and contact-age cohorts. Use this to answer 'is this list ready to send?' or 'what does this list look like?' questions.",
109
+ "inputSchema": {
110
+ "type": "object",
111
+ "properties": {
112
+ "listId": {
113
+ "type": "string",
114
+ "description": "Contact list ID."
115
+ }
116
+ },
117
+ "required": ["listId"],
118
+ "additionalProperties": false
119
+ },
120
+ "outputSchema": {
121
+ "type": "object",
122
+ "properties": {
123
+ "listId": { "type": "string" },
124
+ "listName": { "type": "string" },
125
+ "total": { "type": "integer", "description": "Total non-deleted contacts in the list." },
126
+ "stoplight": {
127
+ "type": "object",
128
+ "description": "High-level decision-driving counts.",
129
+ "properties": {
130
+ "total": { "type": "integer" },
131
+ "sendable": { "type": "integer", "description": "VALID contacts." },
132
+ "risky": { "type": "integer", "description": "CATCH_ALL + ROLE + DISPOSABLE." },
133
+ "unsendable": { "type": "integer", "description": "INVALID + BOUNCED + FAILED + UNSUBSCRIBED + COMPLAINED." },
134
+ "unverified": { "type": "integer", "description": "UNKNOWN + PENDING." }
135
+ },
136
+ "required": ["total", "sendable", "risky", "unsendable", "unverified"]
137
+ },
138
+ "validationStatus": {
139
+ "type": "array",
140
+ "items": {
141
+ "type": "object",
142
+ "properties": {
143
+ "status": { "type": "string", "description": "ContactStatus enum value." },
144
+ "count": { "type": "integer" }
145
+ },
146
+ "required": ["status", "count"]
147
+ }
148
+ },
149
+ "providers": {
150
+ "type": "array",
151
+ "description": "Email provider mix derived from MX lookups.",
152
+ "items": {
153
+ "type": "object",
154
+ "properties": {
155
+ "provider": { "type": "string", "enum": ["GOOGLE", "MICROSOFT", "OTHER", "UNKNOWN"] },
156
+ "count": { "type": "integer" }
157
+ },
158
+ "required": ["provider", "count"]
159
+ }
160
+ },
161
+ "freshness": {
162
+ "type": "array",
163
+ "description": "How recently each contact's email was validated.",
164
+ "items": {
165
+ "type": "object",
166
+ "properties": {
167
+ "bucket": { "type": "string", "enum": ["LT_30D", "D30_90", "GT_90D", "NEVER"] },
168
+ "count": { "type": "integer" }
169
+ },
170
+ "required": ["bucket", "count"]
171
+ }
172
+ },
173
+ "topDomains": {
174
+ "type": "array",
175
+ "description": "Top 10 email domains by contact count.",
176
+ "items": {
177
+ "type": "object",
178
+ "properties": {
179
+ "domain": { "type": "string" },
180
+ "count": { "type": "integer" }
181
+ },
182
+ "required": ["domain", "count"]
183
+ }
184
+ },
185
+ "freeMailCount": { "type": "integer", "description": "Contacts on free providers (gmail/yahoo/outlook/...)." },
186
+ "suppressedCount": { "type": "integer", "description": "Suppressed (UNSUBSCRIBED / COMPLAINED / global suppression)." },
187
+ "activeEnrollmentsElsewhere": {
188
+ "type": "array",
189
+ "description": "Campaigns currently enrolling some of this list's contacts — useful to avoid collision.",
190
+ "items": {
191
+ "type": "object",
192
+ "properties": {
193
+ "campaignId": { "type": "string" },
194
+ "campaignName": { "type": "string" },
195
+ "status": { "type": "string", "description": "CampaignStatus enum (DRAFT, ACTIVE, PAUSED)." },
196
+ "dailyLimit": { "type": "integer" },
197
+ "contactCount": { "type": "integer" }
198
+ },
199
+ "required": ["campaignId", "campaignName", "status", "dailyLimit", "contactCount"]
200
+ }
201
+ },
202
+ "fieldCoverage": {
203
+ "type": "array",
204
+ "description": "Standard field population counts.",
205
+ "items": {
206
+ "type": "object",
207
+ "properties": {
208
+ "field": { "type": "string", "enum": ["firstName", "lastName", "company", "title"] },
209
+ "populated": { "type": "integer" }
210
+ },
211
+ "required": ["field", "populated"]
212
+ }
213
+ },
214
+ "customFields": {
215
+ "type": "array",
216
+ "description": "Custom field coverage and value distribution.",
217
+ "items": {
218
+ "type": "object",
219
+ "properties": {
220
+ "key": { "type": "string" },
221
+ "populated": { "type": "integer" },
222
+ "distinct": { "type": "integer" },
223
+ "topValues": {
224
+ "type": "array",
225
+ "items": {
226
+ "type": "object",
227
+ "properties": {
228
+ "value": { "type": "string" },
229
+ "count": { "type": "integer" }
230
+ },
231
+ "required": ["value", "count"]
232
+ }
233
+ },
234
+ "categorical": { "type": "boolean", "description": "True when distinct <= 20." },
235
+ "numeric": {
236
+ "type": "object",
237
+ "nullable": true,
238
+ "description": "Set when >= 80% of values parse as numbers.",
239
+ "properties": {
240
+ "min": { "type": "number" },
241
+ "max": { "type": "number" },
242
+ "median": { "type": "number" },
243
+ "bins": {
244
+ "type": "array",
245
+ "items": {
246
+ "type": "object",
247
+ "properties": {
248
+ "from": { "type": "number" },
249
+ "to": { "type": "number" },
250
+ "count": { "type": "integer" }
251
+ },
252
+ "required": ["from", "to", "count"]
253
+ }
254
+ }
255
+ },
256
+ "required": ["min", "max", "median", "bins"]
257
+ }
258
+ },
259
+ "required": ["key", "populated", "distinct", "topValues", "categorical", "numeric"]
260
+ }
261
+ },
262
+ "topTitles": {
263
+ "type": "array",
264
+ "description": "Top 20 job titles by contact count.",
265
+ "items": {
266
+ "type": "object",
267
+ "properties": {
268
+ "title": { "type": "string" },
269
+ "count": { "type": "integer" }
270
+ },
271
+ "required": ["title", "count"]
272
+ }
273
+ },
274
+ "addedAt": {
275
+ "type": "array",
276
+ "description": "When contacts were added to the list.",
277
+ "items": {
278
+ "type": "object",
279
+ "properties": {
280
+ "bucket": { "type": "string", "enum": ["THIS_WEEK", "THIS_MONTH", "M1_3", "M3_6", "GT_6M"] },
281
+ "count": { "type": "integer" }
282
+ },
283
+ "required": ["bucket", "count"]
284
+ }
285
+ },
286
+ "computedAt": { "type": "string", "description": "ISO timestamp when this snapshot was computed (cached for 5 minutes)." }
287
+ },
288
+ "required": [
289
+ "listId",
290
+ "listName",
291
+ "total",
292
+ "stoplight",
293
+ "validationStatus",
294
+ "providers",
295
+ "freshness",
296
+ "topDomains",
297
+ "freeMailCount",
298
+ "suppressedCount",
299
+ "activeEnrollmentsElsewhere",
300
+ "fieldCoverage",
301
+ "customFields",
302
+ "topTitles",
303
+ "addedAt",
304
+ "computedAt"
305
+ ]
306
+ },
307
+ "annotations": {
308
+ "readOnlyHint": true,
309
+ "destructiveHint": false,
310
+ "idempotentHint": true,
311
+ "openWorldHint": false
312
+ },
313
+ "_http": {
314
+ "method": "GET",
315
+ "path": "/api/v1/lists/{listId}/analytics"
316
+ }
317
+ },
105
318
  {
106
319
  "name": "get_account",
107
320
  "title": "Get Account",
@@ -1175,6 +1388,123 @@
1175
1388
  "path": "/api/v1/campaigns/{campaignId}/enrollments"
1176
1389
  }
1177
1390
  },
1391
+ {
1392
+ "name": "get_campaign_sync",
1393
+ "title": "Get Campaign Sync Overview",
1394
+ "description": "Returns the rolling-enrollment state of a campaign: the lists it draws from (each with its auto-sync toggle and live member count) and the review buffer — synced-list members awaiting validation that have not yet been auto-enrolled. Use to inspect which lists keep the sequence in sync and who is waiting.",
1395
+ "inputSchema": {
1396
+ "type": "object",
1397
+ "properties": {
1398
+ "id": {
1399
+ "type": "string",
1400
+ "description": "Campaign ID."
1401
+ }
1402
+ },
1403
+ "required": ["id"],
1404
+ "additionalProperties": false
1405
+ },
1406
+ "outputSchema": {
1407
+ "type": "object",
1408
+ "additionalProperties": true,
1409
+ "description": "Sync overview with `lists` (listId, name, autoSync, memberCount) and `pendingLeads` (contactId, email, firstName, lastName, status)."
1410
+ },
1411
+ "annotations": {
1412
+ "readOnlyHint": true,
1413
+ "destructiveHint": false,
1414
+ "idempotentHint": true,
1415
+ "openWorldHint": false
1416
+ },
1417
+ "_http": {
1418
+ "method": "GET",
1419
+ "path": "/api/v1/campaigns/{id}/sync"
1420
+ }
1421
+ },
1422
+ {
1423
+ "name": "set_list_auto_sync",
1424
+ "title": "Toggle Rolling Enrollment for a List",
1425
+ "description": "Turns rolling enrollment (auto-sync) on or off for one of a campaign's lists. When on, new VALID members added to that list are enrolled into the campaign automatically by the sync cron; unverified members wait in the review buffer. When off, the list is a static snapshot.",
1426
+ "inputSchema": {
1427
+ "type": "object",
1428
+ "properties": {
1429
+ "id": {
1430
+ "type": "string",
1431
+ "description": "Campaign ID."
1432
+ },
1433
+ "listId": {
1434
+ "type": "string",
1435
+ "description": "Contact list ID to toggle."
1436
+ },
1437
+ "autoSync": {
1438
+ "type": "boolean",
1439
+ "description": "true to enable rolling enrollment, false to disable."
1440
+ }
1441
+ },
1442
+ "required": ["id", "listId", "autoSync"],
1443
+ "additionalProperties": false
1444
+ },
1445
+ "outputSchema": {
1446
+ "type": "object",
1447
+ "properties": {
1448
+ "autoSync": {
1449
+ "type": "boolean",
1450
+ "description": "The new auto-sync state for the list."
1451
+ }
1452
+ },
1453
+ "required": ["autoSync"],
1454
+ "additionalProperties": false
1455
+ },
1456
+ "annotations": {
1457
+ "readOnlyHint": false,
1458
+ "destructiveHint": false,
1459
+ "idempotentHint": true,
1460
+ "openWorldHint": false
1461
+ },
1462
+ "_http": {
1463
+ "method": "PATCH",
1464
+ "path": "/api/v1/campaigns/{id}/sync"
1465
+ }
1466
+ },
1467
+ {
1468
+ "name": "release_pending_lead",
1469
+ "title": "Release a Buffered Lead",
1470
+ "description": "Manually enrolls a contact sitting in a campaign's rolling-enrollment review buffer, regardless of validation status. Use to push an unverified-but-wanted lead into the sequence immediately instead of waiting for validation.",
1471
+ "inputSchema": {
1472
+ "type": "object",
1473
+ "properties": {
1474
+ "id": {
1475
+ "type": "string",
1476
+ "description": "Campaign ID."
1477
+ },
1478
+ "contactId": {
1479
+ "type": "string",
1480
+ "description": "Contact ID to release from the buffer and enroll."
1481
+ }
1482
+ },
1483
+ "required": ["id", "contactId"],
1484
+ "additionalProperties": false
1485
+ },
1486
+ "outputSchema": {
1487
+ "type": "object",
1488
+ "properties": {
1489
+ "enrolled": {
1490
+ "type": "boolean",
1491
+ "description": "True when a new enrollment was created."
1492
+ }
1493
+ },
1494
+ "required": ["enrolled"],
1495
+ "additionalProperties": false
1496
+ },
1497
+ "annotations": {
1498
+ "readOnlyHint": false,
1499
+ "destructiveHint": false,
1500
+ "idempotentHint": false,
1501
+ "openWorldHint": false
1502
+ },
1503
+ "_http": {
1504
+ "method": "POST",
1505
+ "path": "/api/v1/campaigns/{id}/sync/release"
1506
+ }
1507
+ },
1178
1508
  {
1179
1509
  "name": "get_enrollment",
1180
1510
  "title": "Get Enrollment",
@@ -3423,6 +3753,459 @@
3423
3753
  "method": "GET",
3424
3754
  "path": "/api/v1/campaigns/{campaignId}/variables"
3425
3755
  }
3756
+ },
3757
+ {
3758
+ "name": "list_inbox_messages",
3759
+ "title": "List Inbox Messages",
3760
+ "description": "Lists inbound email messages across all connected mailboxes. Supports folder filtering (inbox, replies, auto-replies, bounces, spam, starred, archived, all, warmup), free-text search, sender filter, mailbox/label filtering, read/unread state, starred flag, and date range. Cursor-paginated by receivedAt.",
3761
+ "inputSchema": {
3762
+ "type": "object",
3763
+ "properties": {
3764
+ "folder": {
3765
+ "type": "string",
3766
+ "enum": ["inbox", "replies", "auto-replies", "bounces", "spam", "starred", "archived", "all", "warmup"],
3767
+ "default": "inbox",
3768
+ "description": "Folder to list. Virtual folders (starred, archived, all, warmup) filter across real folders."
3769
+ },
3770
+ "cursor": {
3771
+ "type": "string",
3772
+ "format": "date-time",
3773
+ "description": "ISO-8601 cursor from the previous page's nextCursor."
3774
+ },
3775
+ "limit": {
3776
+ "type": "integer",
3777
+ "minimum": 1,
3778
+ "maximum": 100,
3779
+ "default": 50,
3780
+ "description": "Number of messages per page."
3781
+ },
3782
+ "q": {
3783
+ "type": "string",
3784
+ "description": "Free-text search across subject, snippet, body, and sender."
3785
+ },
3786
+ "from": {
3787
+ "type": "string",
3788
+ "description": "Filter by sender name or email (substring match)."
3789
+ },
3790
+ "mailboxIds": {
3791
+ "type": "string",
3792
+ "description": "Comma-separated mailbox IDs to restrict results."
3793
+ },
3794
+ "labelIds": {
3795
+ "type": "string",
3796
+ "description": "Comma-separated label IDs to filter by (OR semantics)."
3797
+ },
3798
+ "read": {
3799
+ "type": "string",
3800
+ "enum": ["read", "unread"],
3801
+ "description": "Filter by read status."
3802
+ },
3803
+ "starred": {
3804
+ "type": "string",
3805
+ "enum": ["true"],
3806
+ "description": "When 'true', only return starred messages."
3807
+ },
3808
+ "dateFrom": {
3809
+ "type": "string",
3810
+ "format": "date-time",
3811
+ "description": "Inclusive lower bound on receivedAt (ISO-8601)."
3812
+ },
3813
+ "dateTo": {
3814
+ "type": "string",
3815
+ "format": "date-time",
3816
+ "description": "Inclusive upper bound on receivedAt (ISO-8601)."
3817
+ }
3818
+ },
3819
+ "additionalProperties": false
3820
+ },
3821
+ "annotations": {
3822
+ "readOnlyHint": true,
3823
+ "destructiveHint": false,
3824
+ "idempotentHint": true,
3825
+ "openWorldHint": false
3826
+ },
3827
+ "_http": {
3828
+ "method": "GET",
3829
+ "path": "/api/v1/inbox/messages"
3830
+ }
3831
+ },
3832
+ {
3833
+ "name": "get_inbox_message",
3834
+ "title": "Get Inbox Message",
3835
+ "description": "Returns full details of a single inbound message including HTML/text body, headers, and a presigned download URL for the raw RFC822. Automatically marks the message as read on first access.",
3836
+ "inputSchema": {
3837
+ "type": "object",
3838
+ "properties": {
3839
+ "id": {
3840
+ "type": "string",
3841
+ "description": "Inbound message ID."
3842
+ }
3843
+ },
3844
+ "required": ["id"],
3845
+ "additionalProperties": false
3846
+ },
3847
+ "annotations": {
3848
+ "readOnlyHint": false,
3849
+ "destructiveHint": false,
3850
+ "idempotentHint": true,
3851
+ "openWorldHint": false
3852
+ },
3853
+ "_http": {
3854
+ "method": "GET",
3855
+ "path": "/api/v1/inbox/messages/{id}"
3856
+ }
3857
+ },
3858
+ {
3859
+ "name": "update_inbox_message",
3860
+ "title": "Update Inbox Message",
3861
+ "description": "Updates mutable fields on an inbound message: mark as read/unread, star/unstar, archive/unarchive, or assign/clear a label. Only provided fields are changed.",
3862
+ "inputSchema": {
3863
+ "type": "object",
3864
+ "properties": {
3865
+ "id": {
3866
+ "type": "string",
3867
+ "description": "Inbound message ID."
3868
+ },
3869
+ "read": {
3870
+ "type": "boolean",
3871
+ "description": "Set true to mark as read, false to mark unread."
3872
+ },
3873
+ "starred": {
3874
+ "type": "boolean",
3875
+ "description": "Set true to star, false to unstar."
3876
+ },
3877
+ "archived": {
3878
+ "type": "boolean",
3879
+ "description": "Set true to archive, false to unarchive."
3880
+ },
3881
+ "labelId": {
3882
+ "type": ["string", "null"],
3883
+ "description": "Inbox label ID to assign, or null to clear the label."
3884
+ }
3885
+ },
3886
+ "required": ["id"],
3887
+ "additionalProperties": false
3888
+ },
3889
+ "annotations": {
3890
+ "readOnlyHint": false,
3891
+ "destructiveHint": false,
3892
+ "idempotentHint": true,
3893
+ "openWorldHint": false
3894
+ },
3895
+ "_http": {
3896
+ "method": "PATCH",
3897
+ "path": "/api/v1/inbox/messages/{id}"
3898
+ }
3899
+ },
3900
+ {
3901
+ "name": "reply_to_message",
3902
+ "title": "Reply to Inbox Message",
3903
+ "description": "Sends a reply to an inbound message using the mailbox that originally received it. Automatically threads via In-Reply-To/References headers and includes quoted context.",
3904
+ "inputSchema": {
3905
+ "type": "object",
3906
+ "properties": {
3907
+ "id": {
3908
+ "type": "string",
3909
+ "description": "Inbound message ID to reply to."
3910
+ },
3911
+ "body": {
3912
+ "type": "string",
3913
+ "minLength": 1,
3914
+ "maxLength": 50000,
3915
+ "description": "Reply body in HTML."
3916
+ },
3917
+ "subject": {
3918
+ "type": "string",
3919
+ "maxLength": 998,
3920
+ "description": "Optional subject override. Defaults to 'Re: <original subject>'."
3921
+ }
3922
+ },
3923
+ "required": ["id", "body"],
3924
+ "additionalProperties": false
3925
+ },
3926
+ "annotations": {
3927
+ "readOnlyHint": false,
3928
+ "destructiveHint": false,
3929
+ "idempotentHint": false,
3930
+ "openWorldHint": true
3931
+ },
3932
+ "_http": {
3933
+ "method": "POST",
3934
+ "path": "/api/v1/inbox/messages/{id}/reply"
3935
+ }
3936
+ },
3937
+ {
3938
+ "name": "list_message_replies",
3939
+ "title": "List Message Replies",
3940
+ "description": "Lists all outbound replies sent for a specific inbound message, ordered chronologically. Useful for viewing the full reply thread.",
3941
+ "inputSchema": {
3942
+ "type": "object",
3943
+ "properties": {
3944
+ "id": {
3945
+ "type": "string",
3946
+ "description": "Inbound message ID."
3947
+ }
3948
+ },
3949
+ "required": ["id"],
3950
+ "additionalProperties": false
3951
+ },
3952
+ "annotations": {
3953
+ "readOnlyHint": true,
3954
+ "destructiveHint": false,
3955
+ "idempotentHint": true,
3956
+ "openWorldHint": false
3957
+ },
3958
+ "_http": {
3959
+ "method": "GET",
3960
+ "path": "/api/v1/inbox/messages/{id}/replies"
3961
+ }
3962
+ },
3963
+ {
3964
+ "name": "list_sent_messages",
3965
+ "title": "List Sent Messages",
3966
+ "description": "Lists outbound replies and composed emails sent by the user, collapsed by thread (toEmail + normalized subject). Cursor-paginated by sentAt.",
3967
+ "inputSchema": {
3968
+ "type": "object",
3969
+ "properties": {
3970
+ "cursor": {
3971
+ "type": "string",
3972
+ "format": "date-time",
3973
+ "description": "ISO-8601 cursor from the previous page's nextCursor."
3974
+ },
3975
+ "limit": {
3976
+ "type": "integer",
3977
+ "minimum": 1,
3978
+ "maximum": 100,
3979
+ "default": 50,
3980
+ "description": "Number of threads per page."
3981
+ },
3982
+ "q": {
3983
+ "type": "string",
3984
+ "description": "Free-text search across subject, body, and recipient."
3985
+ }
3986
+ },
3987
+ "additionalProperties": false
3988
+ },
3989
+ "annotations": {
3990
+ "readOnlyHint": true,
3991
+ "destructiveHint": false,
3992
+ "idempotentHint": true,
3993
+ "openWorldHint": false
3994
+ },
3995
+ "_http": {
3996
+ "method": "GET",
3997
+ "path": "/api/v1/inbox/sent"
3998
+ }
3999
+ },
4000
+ {
4001
+ "name": "compose_email",
4002
+ "title": "Compose Email",
4003
+ "description": "Compose and send a new email from a connected mailbox. Not a reply — creates a fresh thread. The email is sent immediately via the mailbox's configured transport (SMTP / Google / Microsoft).",
4004
+ "inputSchema": {
4005
+ "type": "object",
4006
+ "properties": {
4007
+ "mailboxId": {
4008
+ "type": "string",
4009
+ "description": "ID of the sender mailbox to use."
4010
+ },
4011
+ "to": {
4012
+ "type": "string",
4013
+ "format": "email",
4014
+ "description": "Recipient email address."
4015
+ },
4016
+ "subject": {
4017
+ "type": "string",
4018
+ "minLength": 1,
4019
+ "maxLength": 998,
4020
+ "description": "Email subject line."
4021
+ },
4022
+ "body": {
4023
+ "type": "string",
4024
+ "minLength": 1,
4025
+ "maxLength": 50000,
4026
+ "description": "Email body in HTML."
4027
+ },
4028
+ "cc": {
4029
+ "type": "array",
4030
+ "items": { "type": "string", "format": "email" },
4031
+ "description": "CC recipients."
4032
+ },
4033
+ "bcc": {
4034
+ "type": "array",
4035
+ "items": { "type": "string", "format": "email" },
4036
+ "description": "BCC recipients."
4037
+ }
4038
+ },
4039
+ "required": ["mailboxId", "to", "subject", "body"],
4040
+ "additionalProperties": false
4041
+ },
4042
+ "annotations": {
4043
+ "readOnlyHint": false,
4044
+ "destructiveHint": false,
4045
+ "idempotentHint": false,
4046
+ "openWorldHint": true
4047
+ },
4048
+ "_http": {
4049
+ "method": "POST",
4050
+ "path": "/api/v1/inbox/compose"
4051
+ }
4052
+ },
4053
+ {
4054
+ "name": "get_inbox_counts",
4055
+ "title": "Get Inbox Counts",
4056
+ "description": "Returns total and unread message counts per folder (inbox, replies, auto-replies, bounces, spam, starred, archived, all, warmup, sent) plus per-label message counts. Powers the sidebar badges.",
4057
+ "inputSchema": {
4058
+ "type": "object",
4059
+ "additionalProperties": false
4060
+ },
4061
+ "annotations": {
4062
+ "readOnlyHint": true,
4063
+ "destructiveHint": false,
4064
+ "idempotentHint": true,
4065
+ "openWorldHint": false
4066
+ },
4067
+ "_http": {
4068
+ "method": "GET",
4069
+ "path": "/api/v1/inbox/counts"
4070
+ }
4071
+ },
4072
+ {
4073
+ "name": "trigger_inbox_scan",
4074
+ "title": "Trigger Inbox Scan",
4075
+ "description": "Triggers an immediate IMAP scan to check for new messages. Optionally scope to a single mailbox by passing mailboxId; omit to scan all eligible mailboxes.",
4076
+ "inputSchema": {
4077
+ "type": "object",
4078
+ "properties": {
4079
+ "mailboxId": {
4080
+ "type": "string",
4081
+ "description": "Optional mailbox ID to scan. Omit to scan all mailboxes."
4082
+ }
4083
+ },
4084
+ "additionalProperties": false
4085
+ },
4086
+ "annotations": {
4087
+ "readOnlyHint": false,
4088
+ "destructiveHint": false,
4089
+ "idempotentHint": true,
4090
+ "openWorldHint": false
4091
+ },
4092
+ "_http": {
4093
+ "method": "POST",
4094
+ "path": "/api/v1/inbox/scan"
4095
+ }
4096
+ },
4097
+ {
4098
+ "name": "list_inbox_labels",
4099
+ "title": "List Inbox Labels",
4100
+ "description": "Lists the user's inbox message labels (Auto-reply, OOO, Opportunity, Positive reply, Negative reply, custom labels) with message counts and classification rule counts.",
4101
+ "inputSchema": {
4102
+ "type": "object",
4103
+ "additionalProperties": false
4104
+ },
4105
+ "annotations": {
4106
+ "readOnlyHint": true,
4107
+ "destructiveHint": false,
4108
+ "idempotentHint": true,
4109
+ "openWorldHint": false
4110
+ },
4111
+ "_http": {
4112
+ "method": "GET",
4113
+ "path": "/api/v1/inbox/labels"
4114
+ }
4115
+ },
4116
+ {
4117
+ "name": "create_inbox_label",
4118
+ "title": "Create Inbox Label",
4119
+ "description": "Creates a new inbox message label. Names must be unique per account.",
4120
+ "inputSchema": {
4121
+ "type": "object",
4122
+ "properties": {
4123
+ "name": {
4124
+ "type": "string",
4125
+ "minLength": 1,
4126
+ "maxLength": 100,
4127
+ "description": "Label name."
4128
+ },
4129
+ "color": {
4130
+ "type": "string",
4131
+ "description": "Hex color code (e.g. '#6b7280'). Defaults to gray."
4132
+ }
4133
+ },
4134
+ "required": ["name"],
4135
+ "additionalProperties": false
4136
+ },
4137
+ "annotations": {
4138
+ "readOnlyHint": false,
4139
+ "destructiveHint": false,
4140
+ "idempotentHint": false,
4141
+ "openWorldHint": false
4142
+ },
4143
+ "_http": {
4144
+ "method": "POST",
4145
+ "path": "/api/v1/inbox/labels"
4146
+ }
4147
+ },
4148
+ {
4149
+ "name": "update_inbox_label",
4150
+ "title": "Update Inbox Label",
4151
+ "description": "Renames or recolors an inbox message label.",
4152
+ "inputSchema": {
4153
+ "type": "object",
4154
+ "properties": {
4155
+ "id": {
4156
+ "type": "string",
4157
+ "description": "Label ID."
4158
+ },
4159
+ "name": {
4160
+ "type": "string",
4161
+ "minLength": 1,
4162
+ "maxLength": 100,
4163
+ "description": "New label name."
4164
+ },
4165
+ "color": {
4166
+ "type": "string",
4167
+ "description": "New hex color code."
4168
+ }
4169
+ },
4170
+ "required": ["id"],
4171
+ "additionalProperties": false
4172
+ },
4173
+ "annotations": {
4174
+ "readOnlyHint": false,
4175
+ "destructiveHint": false,
4176
+ "idempotentHint": true,
4177
+ "openWorldHint": false
4178
+ },
4179
+ "_http": {
4180
+ "method": "PATCH",
4181
+ "path": "/api/v1/inbox/labels/{id}"
4182
+ }
4183
+ },
4184
+ {
4185
+ "name": "delete_inbox_label",
4186
+ "title": "Delete Inbox Label",
4187
+ "description": "Deletes an inbox message label. Messages tagged with this label will have their label cleared.",
4188
+ "inputSchema": {
4189
+ "type": "object",
4190
+ "properties": {
4191
+ "id": {
4192
+ "type": "string",
4193
+ "description": "Label ID to delete."
4194
+ }
4195
+ },
4196
+ "required": ["id"],
4197
+ "additionalProperties": false
4198
+ },
4199
+ "annotations": {
4200
+ "readOnlyHint": false,
4201
+ "destructiveHint": true,
4202
+ "idempotentHint": true,
4203
+ "openWorldHint": false
4204
+ },
4205
+ "_http": {
4206
+ "method": "DELETE",
4207
+ "path": "/api/v1/inbox/labels/{id}"
4208
+ }
3426
4209
  }
3427
4210
  ]
3428
4211
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coldbirds/mcp-server",
3
- "version": "1.0.9",
3
+ "version": "1.0.13",
4
4
  "description": "MCP server for ColdBirds Sequence — control campaigns, contacts, and mailboxes from AI assistants like Claude Desktop, Cursor, and Windsurf.",
5
5
  "keywords": [
6
6
  "coldbirds",