@lanes-sh/link 0.6.10 → 0.7.0
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.
- package/.gcloudignore +25 -15
- package/README.md +62 -45
- package/instructions/skills/lanes-link/SKILL.md +25 -0
- package/package.json +3 -2
- package/src/audit/conformance.ts +1 -1
- package/src/cli/argv.ts +14 -1
- package/src/cli/commands/connect/acquire.ts +100 -0
- package/src/cli/commands/connect/custom/index.ts +1 -1
- package/src/cli/commands/connect/declare.ts +19 -0
- package/src/cli/commands/connect/index.ts +54 -56
- package/src/cli/commands/connect/requirements.ts +23 -1
- package/src/cli/commands/connect/setup.ts +1 -1
- package/src/cli/commands/connect/variables.ts +220 -0
- package/src/cli/commands/knowledge/index.ts +22 -4
- package/src/cli/commands/knowledge/migrate.ts +61 -43
- package/src/cli/commands/operate/tools.ts +1 -1
- package/src/cli/commands/owner/entities.ts +244 -0
- package/src/cli/commands/owner/shared.ts +14 -0
- package/src/cli/commands/owner/vault.ts +2 -2
- package/src/cli/commands/owner.ts +13 -3
- package/src/cli/commands/setup.ts +12 -0
- package/src/cli/config-edit.ts +16 -6
- package/src/cli/config-repair.ts +10 -0
- package/src/cli/dispatch-owner.ts +30 -1
- package/src/cli/main.ts +2 -1
- package/src/cli/runtime/open.ts +14 -7
- package/src/cli/runtime/registry.ts +6 -1
- package/src/cli/selection.ts +11 -0
- package/src/cli/usage.ts +13 -2
- package/src/connectivity/auth/strategy/index.ts +1 -1
- package/src/connectivity/capability.ts +1 -1
- package/src/connectivity/context.ts +1 -1
- package/src/connectivity/index.ts +1 -1
- package/src/connectivity/mail/attachments.ts +42 -73
- package/src/connectivity/mail/content-type.ts +71 -0
- package/src/connectivity/mail/index.ts +1 -1
- package/src/connectivity/manifest/provider.ts +50 -0
- package/src/connectivity/manifest/variables.ts +173 -0
- package/src/connectivity/transports/factory.ts +74 -1
- package/src/connectivity/transports/http/index.ts +8 -2
- package/src/connectivity/transports/http/keys.ts +83 -0
- package/src/connectivity/transports/imap/attachment.ts +53 -10
- package/src/connectivity/transports/imap/capabilities.ts +28 -0
- package/src/connectivity/transports/imap/download.ts +111 -0
- package/src/connectivity/transports/imap/index.ts +13 -0
- package/src/connectivity/transports/imap/operations.ts +1 -0
- package/src/deployments/adapters/s3.ts +1 -1
- package/src/deployments/gcp/provision.ts +1 -1
- package/src/deployments/knowledge.ts +44 -18
- package/src/deployments/prepare.ts +1 -1
- package/src/deployments/serving.ts +1 -1
- package/src/dispatch/dispatch.ts +17 -10
- package/src/dispatch/staging.ts +76 -1
- package/src/profile/knowledge.ts +19 -11
- package/src/profile/schema.ts +2 -2
- package/src/providers/README.md +189 -0
- package/src/providers/airtable/index.ts +10 -0
- package/src/providers/algolia/index.ts +10 -0
- package/src/providers/amplitude/index.ts +10 -0
- package/src/providers/apify/index.ts +10 -0
- package/src/providers/asana/index.ts +10 -0
- package/src/providers/assets/provider.ts +11 -4
- package/src/providers/atlassian/index.ts +19 -0
- package/src/providers/attio/index.ts +10 -0
- package/src/providers/betterstack/index.ts +10 -0
- package/src/providers/box/index.ts +64 -0
- package/src/providers/brightdata/index.ts +10 -0
- package/src/providers/buildkite/index.ts +10 -0
- package/src/providers/bunq/index.ts +2 -2
- package/src/providers/calendly/index.ts +10 -0
- package/src/providers/canva/index.ts +10 -0
- package/src/providers/circleci/index.ts +10 -0
- package/src/providers/clickup/index.ts +10 -0
- package/src/providers/close/index.ts +10 -0
- package/src/providers/cloudflare_bindings/index.ts +14 -0
- package/src/providers/cloudflare_observability/index.ts +10 -0
- package/src/providers/contentful/index.ts +10 -0
- package/src/providers/custom/load.ts +1 -1
- package/src/providers/datadog/index.ts +10 -0
- package/src/providers/discord/index.ts +1 -1
- package/src/providers/discord/specs/discord.v10.json +0 -88
- package/src/providers/discord/specs/vendor.ts +1 -1
- package/src/providers/dropbox/index.ts +10 -0
- package/src/providers/entities/catalogue.ts +366 -0
- package/src/providers/entities/find.ts +279 -0
- package/src/providers/entities/provider.ts +334 -0
- package/src/providers/entities/render.ts +142 -0
- package/src/providers/entities/store.ts +276 -0
- package/src/providers/entities/writes.ts +279 -0
- package/src/providers/example/provider.ts +1 -1
- package/src/providers/expensify/index.ts +10 -0
- package/src/providers/fastmail/calendar/index.ts +21 -0
- package/src/providers/fastmail/contacts/index.ts +17 -0
- package/src/providers/fastmail/index.ts +4 -0
- package/src/providers/fastmail/mail/index.ts +38 -0
- package/src/providers/fastmail/shared/setup.ts +52 -0
- package/src/providers/figma/index.ts +10 -0
- package/src/providers/fireflies/index.ts +10 -0
- package/src/providers/flagsmith/index.ts +10 -0
- package/src/providers/gamma/index.ts +10 -0
- package/src/providers/github/index.ts +2 -2
- package/src/providers/google/gmail/attachment.ts +16 -1
- package/src/providers/google/gmail-imap/index.ts +7 -2
- package/src/providers/google/shared/oauth.ts +1 -1
- package/src/providers/google/shared/service-account.ts +1 -1
- package/src/providers/google/shared/setup.ts +1 -1
- package/src/providers/google/specs/calendar.v3.json +0 -32
- package/src/providers/google/specs/docs.v1.json +0 -76
- package/src/providers/google/specs/drive.v3.json +0 -32
- package/src/providers/google/specs/gmail.v1.json +0 -76
- package/src/providers/google/specs/people.v1.json +0 -77
- package/src/providers/google/specs/sheets.v4.json +0 -76
- package/src/providers/google/specs/tasks.v1.json +0 -76
- package/src/providers/grafana/index.ts +10 -0
- package/src/providers/heroku/index.ts +10 -0
- package/src/providers/hubspot/index.ts +75 -0
- package/src/providers/hygraph/index.ts +10 -0
- package/src/providers/icloud/mail/index.ts +5 -0
- package/src/providers/icloud/shared/setup.ts +1 -1
- package/src/providers/index.ts +255 -0
- package/src/providers/insightly/index.ts +10 -0
- package/src/providers/jam/index.ts +10 -0
- package/src/providers/klaviyo/index.ts +10 -0
- package/src/providers/mailbox/index.ts +87 -0
- package/src/providers/memory/provider.ts +3 -8
- package/src/providers/mercury/index.ts +10 -0
- package/src/providers/microsoft/calendar/index.ts +49 -0
- package/src/providers/microsoft/contacts/index.ts +50 -0
- package/src/providers/microsoft/drive/index.ts +62 -0
- package/src/providers/microsoft/index.ts +12 -0
- package/src/providers/microsoft/mail/index.ts +76 -0
- package/src/providers/microsoft/shared/oauth.ts +58 -0
- package/src/providers/microsoft/shared/scopes.ts +56 -0
- package/src/providers/microsoft/shared/setup.ts +45 -0
- package/src/providers/microsoft/specs/microsoft-todo.v1.json +755 -0
- package/src/providers/microsoft/specs/onedrive.v1.json +993 -0
- package/src/providers/microsoft/specs/outlook-calendar.v1.json +1743 -0
- package/src/providers/microsoft/specs/outlook-contacts.v1.json +430 -0
- package/src/providers/microsoft/specs/outlook-mail.v1.json +901 -0
- package/src/providers/microsoft/specs/vendor.ts +232 -0
- package/src/providers/microsoft/todo/index.ts +54 -0
- package/src/providers/miro/index.ts +10 -0
- package/src/providers/mixpanel/index.ts +10 -0
- package/src/providers/monday/index.ts +10 -0
- package/src/providers/mux/index.ts +10 -0
- package/src/providers/navan/index.ts +10 -0
- package/src/providers/neon/index.ts +10 -0
- package/src/providers/netlify/index.ts +10 -0
- package/src/providers/nextcloud/calendar/index.ts +28 -0
- package/src/providers/nextcloud/contacts/index.ts +18 -0
- package/src/providers/nextcloud/index.ts +3 -0
- package/src/providers/nextcloud/shared/setup.ts +59 -0
- package/src/providers/owner.ts +15 -3
- package/src/providers/paddle/index.ts +10 -0
- package/src/providers/paypal/index.ts +10 -0
- package/src/providers/posthog/index.ts +10 -0
- package/src/providers/prisma/index.ts +10 -0
- package/src/providers/ramp/index.ts +10 -0
- package/src/providers/recurly/index.ts +10 -0
- package/src/providers/reddit/index.ts +1 -1
- package/src/providers/remote/index.ts +10 -0
- package/src/providers/render/index.ts +35 -0
- package/src/providers/replicate/index.ts +10 -0
- package/src/providers/resend/index.ts +10 -0
- package/src/providers/riverside/index.ts +10 -0
- package/src/providers/rootly/index.ts +10 -0
- package/src/providers/rudderstack/index.ts +10 -0
- package/src/providers/salesloft/index.ts +10 -0
- package/src/providers/sanity/index.ts +10 -0
- package/src/providers/scopes.ts +2 -0
- package/src/providers/sentry/index.ts +10 -0
- package/src/providers/setup/plan.ts +11 -0
- package/src/providers/setup/provider.ts +12 -0
- package/src/providers/shared/openapi.ts +70 -0
- package/src/providers/shared/slug.ts +28 -0
- package/src/providers/shared/vendor-operations.ts +43 -1
- package/src/providers/shared/vendor-spec.ts +98 -17
- package/src/providers/shortcut/index.ts +10 -0
- package/src/providers/slack/index.ts +2 -2
- package/src/providers/square/index.ts +10 -0
- package/src/providers/storyblok/index.ts +10 -0
- package/src/providers/stripe/index.ts +10 -0
- package/src/providers/supabase/index.ts +10 -0
- package/src/providers/tasks/store.ts +2 -7
- package/src/providers/tavily/index.ts +10 -0
- package/src/providers/todoist/index.ts +10 -0
- package/src/providers/untested.ts +105 -0
- package/src/providers/vault/provider.ts +1 -1
- package/src/providers/vercel/index.ts +10 -0
- package/src/providers/vimeo/index.ts +10 -0
- package/src/providers/webflow/index.ts +10 -0
- package/src/providers/whimsical/index.ts +10 -0
- package/src/providers/wix/index.ts +10 -0
- package/src/providers/workable/index.ts +10 -0
- package/src/providers/yahoo_mail/index.ts +73 -0
- package/src/providers/zapier/index.ts +10 -0
- package/src/providers/zoho_mail/index.ts +79 -0
- package/src/secrets/document.ts +1 -1
- package/src/server/attachments.ts +129 -5
- package/src/server/index.ts +3 -3
- package/src/server/mcp/instructions.ts +88 -18
- package/src/server/stdio.ts +1 -1
|
@@ -354,26 +354,6 @@
|
|
|
354
354
|
},
|
|
355
355
|
"components": {
|
|
356
356
|
"parameters": {
|
|
357
|
-
"_.xgafv": {
|
|
358
|
-
"description": "V1 error format.",
|
|
359
|
-
"in": "query",
|
|
360
|
-
"name": "$.xgafv",
|
|
361
|
-
"schema": {
|
|
362
|
-
"enum": [
|
|
363
|
-
"1",
|
|
364
|
-
"2"
|
|
365
|
-
],
|
|
366
|
-
"type": "string"
|
|
367
|
-
}
|
|
368
|
-
},
|
|
369
|
-
"access_token": {
|
|
370
|
-
"description": "OAuth access token.",
|
|
371
|
-
"in": "query",
|
|
372
|
-
"name": "access_token",
|
|
373
|
-
"schema": {
|
|
374
|
-
"type": "string"
|
|
375
|
-
}
|
|
376
|
-
},
|
|
377
357
|
"alt": {
|
|
378
358
|
"description": "Data format for response.",
|
|
379
359
|
"in": "query",
|
|
@@ -387,14 +367,6 @@
|
|
|
387
367
|
"type": "string"
|
|
388
368
|
}
|
|
389
369
|
},
|
|
390
|
-
"callback": {
|
|
391
|
-
"description": "JSONP",
|
|
392
|
-
"in": "query",
|
|
393
|
-
"name": "callback",
|
|
394
|
-
"schema": {
|
|
395
|
-
"type": "string"
|
|
396
|
-
}
|
|
397
|
-
},
|
|
398
370
|
"fields": {
|
|
399
371
|
"description": "Selector specifying which fields to include in a partial response.",
|
|
400
372
|
"in": "query",
|
|
@@ -402,57 +374,8 @@
|
|
|
402
374
|
"schema": {
|
|
403
375
|
"type": "string"
|
|
404
376
|
}
|
|
405
|
-
},
|
|
406
|
-
"key": {
|
|
407
|
-
"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
|
|
408
|
-
"in": "query",
|
|
409
|
-
"name": "key",
|
|
410
|
-
"schema": {
|
|
411
|
-
"type": "string"
|
|
412
|
-
}
|
|
413
|
-
},
|
|
414
|
-
"oauth_token": {
|
|
415
|
-
"description": "OAuth 2.0 token for the current user.",
|
|
416
|
-
"in": "query",
|
|
417
|
-
"name": "oauth_token",
|
|
418
|
-
"schema": {
|
|
419
|
-
"type": "string"
|
|
420
|
-
}
|
|
421
|
-
},
|
|
422
|
-
"prettyPrint": {
|
|
423
|
-
"description": "Returns response with indentations and line breaks.",
|
|
424
|
-
"in": "query",
|
|
425
|
-
"name": "prettyPrint",
|
|
426
|
-
"schema": {
|
|
427
|
-
"type": "boolean"
|
|
428
|
-
}
|
|
429
|
-
},
|
|
430
|
-
"quotaUser": {
|
|
431
|
-
"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
|
|
432
|
-
"in": "query",
|
|
433
|
-
"name": "quotaUser",
|
|
434
|
-
"schema": {
|
|
435
|
-
"type": "string"
|
|
436
|
-
}
|
|
437
|
-
},
|
|
438
|
-
"uploadType": {
|
|
439
|
-
"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
|
|
440
|
-
"in": "query",
|
|
441
|
-
"name": "uploadType",
|
|
442
|
-
"schema": {
|
|
443
|
-
"type": "string"
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
"upload_protocol": {
|
|
447
|
-
"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
|
|
448
|
-
"in": "query",
|
|
449
|
-
"name": "upload_protocol",
|
|
450
|
-
"schema": {
|
|
451
|
-
"type": "string"
|
|
452
|
-
}
|
|
453
377
|
}
|
|
454
378
|
},
|
|
455
|
-
"schemas": {},
|
|
456
379
|
"securitySchemes": {
|
|
457
380
|
"Oauth2": {
|
|
458
381
|
"description": "Oauth 2.0 implicit authentication",
|
|
@@ -999,26 +999,6 @@
|
|
|
999
999
|
},
|
|
1000
1000
|
"components": {
|
|
1001
1001
|
"parameters": {
|
|
1002
|
-
"_.xgafv": {
|
|
1003
|
-
"description": "V1 error format.",
|
|
1004
|
-
"in": "query",
|
|
1005
|
-
"name": "$.xgafv",
|
|
1006
|
-
"schema": {
|
|
1007
|
-
"enum": [
|
|
1008
|
-
"1",
|
|
1009
|
-
"2"
|
|
1010
|
-
],
|
|
1011
|
-
"type": "string"
|
|
1012
|
-
}
|
|
1013
|
-
},
|
|
1014
|
-
"access_token": {
|
|
1015
|
-
"description": "OAuth access token.",
|
|
1016
|
-
"in": "query",
|
|
1017
|
-
"name": "access_token",
|
|
1018
|
-
"schema": {
|
|
1019
|
-
"type": "string"
|
|
1020
|
-
}
|
|
1021
|
-
},
|
|
1022
1002
|
"alt": {
|
|
1023
1003
|
"description": "Data format for response.",
|
|
1024
1004
|
"in": "query",
|
|
@@ -1032,14 +1012,6 @@
|
|
|
1032
1012
|
"type": "string"
|
|
1033
1013
|
}
|
|
1034
1014
|
},
|
|
1035
|
-
"callback": {
|
|
1036
|
-
"description": "JSONP",
|
|
1037
|
-
"in": "query",
|
|
1038
|
-
"name": "callback",
|
|
1039
|
-
"schema": {
|
|
1040
|
-
"type": "string"
|
|
1041
|
-
}
|
|
1042
|
-
},
|
|
1043
1015
|
"fields": {
|
|
1044
1016
|
"description": "Selector specifying which fields to include in a partial response.",
|
|
1045
1017
|
"in": "query",
|
|
@@ -1047,54 +1019,6 @@
|
|
|
1047
1019
|
"schema": {
|
|
1048
1020
|
"type": "string"
|
|
1049
1021
|
}
|
|
1050
|
-
},
|
|
1051
|
-
"key": {
|
|
1052
|
-
"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
|
|
1053
|
-
"in": "query",
|
|
1054
|
-
"name": "key",
|
|
1055
|
-
"schema": {
|
|
1056
|
-
"type": "string"
|
|
1057
|
-
}
|
|
1058
|
-
},
|
|
1059
|
-
"oauth_token": {
|
|
1060
|
-
"description": "OAuth 2.0 token for the current user.",
|
|
1061
|
-
"in": "query",
|
|
1062
|
-
"name": "oauth_token",
|
|
1063
|
-
"schema": {
|
|
1064
|
-
"type": "string"
|
|
1065
|
-
}
|
|
1066
|
-
},
|
|
1067
|
-
"prettyPrint": {
|
|
1068
|
-
"description": "Returns response with indentations and line breaks.",
|
|
1069
|
-
"in": "query",
|
|
1070
|
-
"name": "prettyPrint",
|
|
1071
|
-
"schema": {
|
|
1072
|
-
"type": "boolean"
|
|
1073
|
-
}
|
|
1074
|
-
},
|
|
1075
|
-
"quotaUser": {
|
|
1076
|
-
"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
|
|
1077
|
-
"in": "query",
|
|
1078
|
-
"name": "quotaUser",
|
|
1079
|
-
"schema": {
|
|
1080
|
-
"type": "string"
|
|
1081
|
-
}
|
|
1082
|
-
},
|
|
1083
|
-
"uploadType": {
|
|
1084
|
-
"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
|
|
1085
|
-
"in": "query",
|
|
1086
|
-
"name": "uploadType",
|
|
1087
|
-
"schema": {
|
|
1088
|
-
"type": "string"
|
|
1089
|
-
}
|
|
1090
|
-
},
|
|
1091
|
-
"upload_protocol": {
|
|
1092
|
-
"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
|
|
1093
|
-
"in": "query",
|
|
1094
|
-
"name": "upload_protocol",
|
|
1095
|
-
"schema": {
|
|
1096
|
-
"type": "string"
|
|
1097
|
-
}
|
|
1098
1022
|
}
|
|
1099
1023
|
},
|
|
1100
1024
|
"schemas": {
|
|
@@ -596,26 +596,6 @@
|
|
|
596
596
|
},
|
|
597
597
|
"components": {
|
|
598
598
|
"parameters": {
|
|
599
|
-
"_.xgafv": {
|
|
600
|
-
"description": "V1 error format.",
|
|
601
|
-
"in": "query",
|
|
602
|
-
"name": "$.xgafv",
|
|
603
|
-
"schema": {
|
|
604
|
-
"enum": [
|
|
605
|
-
"1",
|
|
606
|
-
"2"
|
|
607
|
-
],
|
|
608
|
-
"type": "string"
|
|
609
|
-
}
|
|
610
|
-
},
|
|
611
|
-
"access_token": {
|
|
612
|
-
"description": "OAuth access token.",
|
|
613
|
-
"in": "query",
|
|
614
|
-
"name": "access_token",
|
|
615
|
-
"schema": {
|
|
616
|
-
"type": "string"
|
|
617
|
-
}
|
|
618
|
-
},
|
|
619
599
|
"alt": {
|
|
620
600
|
"description": "Data format for response.",
|
|
621
601
|
"in": "query",
|
|
@@ -629,14 +609,6 @@
|
|
|
629
609
|
"type": "string"
|
|
630
610
|
}
|
|
631
611
|
},
|
|
632
|
-
"callback": {
|
|
633
|
-
"description": "JSONP",
|
|
634
|
-
"in": "query",
|
|
635
|
-
"name": "callback",
|
|
636
|
-
"schema": {
|
|
637
|
-
"type": "string"
|
|
638
|
-
}
|
|
639
|
-
},
|
|
640
612
|
"fields": {
|
|
641
613
|
"description": "Selector specifying which fields to include in a partial response.",
|
|
642
614
|
"in": "query",
|
|
@@ -644,54 +616,6 @@
|
|
|
644
616
|
"schema": {
|
|
645
617
|
"type": "string"
|
|
646
618
|
}
|
|
647
|
-
},
|
|
648
|
-
"key": {
|
|
649
|
-
"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
|
|
650
|
-
"in": "query",
|
|
651
|
-
"name": "key",
|
|
652
|
-
"schema": {
|
|
653
|
-
"type": "string"
|
|
654
|
-
}
|
|
655
|
-
},
|
|
656
|
-
"oauth_token": {
|
|
657
|
-
"description": "OAuth 2.0 token for the current user.",
|
|
658
|
-
"in": "query",
|
|
659
|
-
"name": "oauth_token",
|
|
660
|
-
"schema": {
|
|
661
|
-
"type": "string"
|
|
662
|
-
}
|
|
663
|
-
},
|
|
664
|
-
"prettyPrint": {
|
|
665
|
-
"description": "Returns response with indentations and line breaks.",
|
|
666
|
-
"in": "query",
|
|
667
|
-
"name": "prettyPrint",
|
|
668
|
-
"schema": {
|
|
669
|
-
"type": "boolean"
|
|
670
|
-
}
|
|
671
|
-
},
|
|
672
|
-
"quotaUser": {
|
|
673
|
-
"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
|
|
674
|
-
"in": "query",
|
|
675
|
-
"name": "quotaUser",
|
|
676
|
-
"schema": {
|
|
677
|
-
"type": "string"
|
|
678
|
-
}
|
|
679
|
-
},
|
|
680
|
-
"uploadType": {
|
|
681
|
-
"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
|
|
682
|
-
"in": "query",
|
|
683
|
-
"name": "uploadType",
|
|
684
|
-
"schema": {
|
|
685
|
-
"type": "string"
|
|
686
|
-
}
|
|
687
|
-
},
|
|
688
|
-
"upload_protocol": {
|
|
689
|
-
"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
|
|
690
|
-
"in": "query",
|
|
691
|
-
"name": "upload_protocol",
|
|
692
|
-
"schema": {
|
|
693
|
-
"type": "string"
|
|
694
|
-
}
|
|
695
619
|
}
|
|
696
620
|
},
|
|
697
621
|
"schemas": {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Grafana registers us at connect time — nothing for an operator to set up. */
|
|
4
|
+
export const grafana = defineProvider({
|
|
5
|
+
id: 'grafana',
|
|
6
|
+
name: 'Grafana',
|
|
7
|
+
description: 'Dashboards, datasources, queries, and alert rules, via Grafana\'s official MCP server.',
|
|
8
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.grafana.com/mcp' },
|
|
9
|
+
auth: { kind: 'oauth', registration: 'dynamic' },
|
|
10
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Heroku registers us at connect time — nothing for an operator to set up. */
|
|
4
|
+
export const heroku = defineProvider({
|
|
5
|
+
id: 'heroku',
|
|
6
|
+
name: 'Heroku',
|
|
7
|
+
description: 'Apps, dynos, add-ons, releases, and logs, via Heroku\'s official MCP server.',
|
|
8
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.heroku.com/mcp' },
|
|
9
|
+
auth: { kind: 'oauth', registration: 'dynamic' },
|
|
10
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Where the client the operator registers is kept. */
|
|
4
|
+
export const HUBSPOT_APP = 'hubspot';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The loopback redirect HubSpot is told about, verbatim.
|
|
8
|
+
*
|
|
9
|
+
* HubSpot matches the whole redirect URL rather than accepting any loopback
|
|
10
|
+
* port, so the port cannot be one the kernel picked at run time — the console
|
|
11
|
+
* was told a number months earlier and the grant is refused with
|
|
12
|
+
* `redirect_uri_mismatch` otherwise. Same arrangement as Reddit's, and the
|
|
13
|
+
* reason `auth.redirect_uri` exists (ADR-045).
|
|
14
|
+
*/
|
|
15
|
+
const HUBSPOT_REDIRECT_URI = 'http://127.0.0.1:8771/callback';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* HubSpot, through the server HubSpot runs.
|
|
19
|
+
*
|
|
20
|
+
* No dynamic client registration, so a client has to exist before the browser
|
|
21
|
+
* opens — and HubSpot's is a purpose-built one rather than an ordinary developer
|
|
22
|
+
* app: an "MCP auth app", created inside the account it will read. Until Lanes
|
|
23
|
+
* operates one, that client is the operator's, which is the `reddit` shape.
|
|
24
|
+
*
|
|
25
|
+
* Declaring both endpoints is what takes this off the SDK's flow and onto the
|
|
26
|
+
* one this repository drives, which is what makes the fixed redirect above
|
|
27
|
+
* possible. See ADR-040.
|
|
28
|
+
*/
|
|
29
|
+
export const hubspot = defineProvider({
|
|
30
|
+
id: 'hubspot',
|
|
31
|
+
name: 'HubSpot',
|
|
32
|
+
description: 'CRM contacts, companies, deals, and engagements, via HubSpot\'s official MCP server.',
|
|
33
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.hubspot.com' },
|
|
34
|
+
auth: {
|
|
35
|
+
kind: 'oauth',
|
|
36
|
+
registration: 'manual',
|
|
37
|
+
app: HUBSPOT_APP,
|
|
38
|
+
authorize_url: 'https://mcp.hubspot.com/oauth/authorize/user',
|
|
39
|
+
token_url: 'https://mcp.hubspot.com/oauth/v3/token',
|
|
40
|
+
redirect_uri: HUBSPOT_REDIRECT_URI,
|
|
41
|
+
},
|
|
42
|
+
setup: {
|
|
43
|
+
summary:
|
|
44
|
+
'HubSpot needs an "MCP auth app" of your own, created inside the HubSpot account you want to ' +
|
|
45
|
+
'reach. It is free, it is not the same thing as a public developer app, and it takes a couple ' +
|
|
46
|
+
'of minutes.',
|
|
47
|
+
docs_url: 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server',
|
|
48
|
+
steps: [
|
|
49
|
+
'Sign in to HubSpot and open Development → MCP Auth Apps in the left sidebar, then "Create MCP auth app" at the top right.',
|
|
50
|
+
'Name it "Lanes Link". A description is optional.',
|
|
51
|
+
`For the redirect URL, enter exactly: ${HUBSPOT_REDIRECT_URI} — the whole URL, including the port. HubSpot matches it literally, so a different port here means every sign-in is refused.`,
|
|
52
|
+
'Create the app. You are taken to its details page, which shows the client ID and client secret.',
|
|
53
|
+
'Copy both. They are asked for below, and they are stored encrypted rather than in any config file.',
|
|
54
|
+
],
|
|
55
|
+
troubleshooting:
|
|
56
|
+
'redirect_uri_mismatch means the URL registered on the app is not the one above — check the port, and that it is 127.0.0.1 rather than localhost, which HubSpot treats as a different string. ' +
|
|
57
|
+
'If the app was created under the wrong HubSpot account, the sign-in succeeds and the tool list is empty: create the MCP auth app inside the account whose CRM you want to reach.',
|
|
58
|
+
prompts: [
|
|
59
|
+
{
|
|
60
|
+
key: 'client_id',
|
|
61
|
+
label: 'HubSpot MCP auth app client ID',
|
|
62
|
+
secret: false,
|
|
63
|
+
scope: 'shared' as const,
|
|
64
|
+
credential_ref: `${HUBSPOT_APP}/client_id`,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: 'client_secret',
|
|
68
|
+
label: 'HubSpot MCP auth app client secret',
|
|
69
|
+
secret: true,
|
|
70
|
+
scope: 'shared' as const,
|
|
71
|
+
credential_ref: `${HUBSPOT_APP}/client_secret`,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Hygraph registers us at connect time — nothing for an operator to set up. */
|
|
4
|
+
export const hygraph = defineProvider({
|
|
5
|
+
id: 'hygraph',
|
|
6
|
+
name: 'Hygraph',
|
|
7
|
+
description: 'Content entries, models, and schema, via Hygraph\'s official MCP server.',
|
|
8
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.hygraph.com/mcp' },
|
|
9
|
+
auth: { kind: 'oauth', registration: 'dynamic' },
|
|
10
|
+
});
|
|
@@ -19,6 +19,11 @@ export const icloudMail = defineProvider({
|
|
|
19
19
|
// the search terms — a query is content, and "who did I email about the
|
|
20
20
|
// diagnosis" is the whole message.
|
|
21
21
|
search_messages: ['mailbox', 'limit', 'unseen', 'flagged'],
|
|
22
|
+
// Identifiers only, and all of them: which mailbox, which message, which
|
|
23
|
+
// attachment. What the file turned out to be — name, size, type, digest —
|
|
24
|
+
// is recorded by the handler through `audit.annotate`, the same way the send
|
|
25
|
+
// path records what it attached.
|
|
26
|
+
get_attachment: ['mailbox', 'uid', 'message_id', 'attachment_id'],
|
|
22
27
|
get_message: ['mailbox', 'uid', 'include_body'],
|
|
23
28
|
mark_messages: ['mailbox', 'add_flags', 'remove_flags'],
|
|
24
29
|
// `destination_flag` alongside `destination`: they are two spellings of the
|
|
@@ -28,7 +28,7 @@ export const icloudSetup = (product: string) => ({
|
|
|
28
28
|
`${product} uses an app-specific password. Your Apple Account password will not work — Apple refuses it ` +
|
|
29
29
|
`for third-party clients — and Lanes Link never sees it. You are asked once: the same password covers ` +
|
|
30
30
|
`Mail, Calendar, and Contacts, because Apple issues it per account rather than per service.`,
|
|
31
|
-
docs: 'docs/
|
|
31
|
+
docs: 'https://lanes.sh/docs/link/icloud',
|
|
32
32
|
docs_url: 'https://support.apple.com/en-us/102654',
|
|
33
33
|
steps: [
|
|
34
34
|
'Sign in at https://account.apple.com and open "Sign-In and Security".',
|