connectkit 0.1.0__py3-none-any.whl

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 (560) hide show
  1. connectkit/__init__.py +26 -0
  2. connectkit/backends/__init__.py +0 -0
  3. connectkit/backends/cli.py +220 -0
  4. connectkit/backends/mcp.py +87 -0
  5. connectkit/bridge.py +116 -0
  6. connectkit/connectors/accelo.yaml +26 -0
  7. connectkit/connectors/active-campaign.yaml +28 -0
  8. connectkit/connectors/acuity-scheduling.yaml +20 -0
  9. connectkit/connectors/addepar.yaml +26 -0
  10. connectkit/connectors/adobe-commerce.yaml +34 -0
  11. connectkit/connectors/adobe-workfront.yaml +26 -0
  12. connectkit/connectors/adobe.yaml +20 -0
  13. connectkit/connectors/adyen.yaml +32 -0
  14. connectkit/connectors/affinity-v2.yaml +22 -0
  15. connectkit/connectors/affinity.yaml +22 -0
  16. connectkit/connectors/aimfox.yaml +22 -0
  17. connectkit/connectors/aircall.yaml +20 -0
  18. connectkit/connectors/airtable.yaml +47 -0
  19. connectkit/connectors/algolia.yaml +31 -0
  20. connectkit/connectors/amazon-selling-partner.yaml +46 -0
  21. connectkit/connectors/amazon.yaml +26 -0
  22. connectkit/connectors/amplitude.yaml +34 -0
  23. connectkit/connectors/anrok.yaml +22 -0
  24. connectkit/connectors/anthropic.yaml +28 -0
  25. connectkit/connectors/apaleo.yaml +20 -0
  26. connectkit/connectors/apify.yaml +25 -0
  27. connectkit/connectors/apollo.yaml +22 -0
  28. connectkit/connectors/apple-app-store.yaml +16 -0
  29. connectkit/connectors/appstle-subscriptions.yaml +22 -0
  30. connectkit/connectors/asana.yaml +20 -0
  31. connectkit/connectors/ashby.yaml +22 -0
  32. connectkit/connectors/atlas-so.yaml +22 -0
  33. connectkit/connectors/atlassian-service-account-api-token.yaml +34 -0
  34. connectkit/connectors/atlassian.yaml +26 -0
  35. connectkit/connectors/attention.yaml +22 -0
  36. connectkit/connectors/attio.yaml +20 -0
  37. connectkit/connectors/auth0.yaml +28 -0
  38. connectkit/connectors/autodesk.yaml +20 -0
  39. connectkit/connectors/autotask.yaml +40 -0
  40. connectkit/connectors/auvik.yaml +34 -0
  41. connectkit/connectors/avalara.yaml +34 -0
  42. connectkit/connectors/avoma.yaml +22 -0
  43. connectkit/connectors/aws-iam.yaml +34 -0
  44. connectkit/connectors/aws-inspector2.yaml +34 -0
  45. connectkit/connectors/aws-multi-service.yaml +40 -0
  46. connectkit/connectors/aws.yaml +38 -0
  47. connectkit/connectors/axiom.yaml +28 -0
  48. connectkit/connectors/azure-devops.yaml +28 -0
  49. connectkit/connectors/bamboohr.yaml +31 -0
  50. connectkit/connectors/basecamp.yaml +34 -0
  51. connectkit/connectors/battlenet.yaml +32 -0
  52. connectkit/connectors/beehiiv.yaml +28 -0
  53. connectkit/connectors/bettercontact.yaml +22 -0
  54. connectkit/connectors/bigcommerce.yaml +35 -0
  55. connectkit/connectors/bill.yaml +20 -0
  56. connectkit/connectors/bing-webmasters.yaml +20 -0
  57. connectkit/connectors/bird.yaml +34 -0
  58. connectkit/connectors/bitbucket.yaml +23 -0
  59. connectkit/connectors/bitdefender.yaml +28 -0
  60. connectkit/connectors/bitly.yaml +20 -0
  61. connectkit/connectors/blackbaud.yaml +20 -0
  62. connectkit/connectors/blandai.yaml +22 -0
  63. connectkit/connectors/boldsign.yaml +20 -0
  64. connectkit/connectors/booking-com.yaml +34 -0
  65. connectkit/connectors/box.yaml +62 -0
  66. connectkit/connectors/braintree.yaml +23 -0
  67. connectkit/connectors/braze.yaml +28 -0
  68. connectkit/connectors/brevo-api-key.yaml +22 -0
  69. connectkit/connectors/brex-api-key.yaml +22 -0
  70. connectkit/connectors/brex-staging.yaml +20 -0
  71. connectkit/connectors/brex.yaml +24 -0
  72. connectkit/connectors/builder-io-private.yaml +28 -0
  73. connectkit/connectors/builder-io-public.yaml +28 -0
  74. connectkit/connectors/buildium.yaml +28 -0
  75. connectkit/connectors/builtwith.yaml +22 -0
  76. connectkit/connectors/bullhorn.yaml +42 -0
  77. connectkit/connectors/cal-com-v1.yaml +22 -0
  78. connectkit/connectors/cal-com-v2.yaml +22 -0
  79. connectkit/connectors/calendly.yaml +20 -0
  80. connectkit/connectors/callrail.yaml +22 -0
  81. connectkit/connectors/candis.yaml +20 -0
  82. connectkit/connectors/canny.yaml +22 -0
  83. connectkit/connectors/canva.yaml +20 -0
  84. connectkit/connectors/canvas-lms.yaml +26 -0
  85. connectkit/connectors/certn.yaml +22 -0
  86. connectkit/connectors/chargebee.yaml +28 -0
  87. connectkit/connectors/chattermill.yaml +28 -0
  88. connectkit/connectors/checkhq.yaml +22 -0
  89. connectkit/connectors/checkr-partner-staging.yaml +26 -0
  90. connectkit/connectors/checkr-partner.yaml +26 -0
  91. connectkit/connectors/chorus.yaml +22 -0
  92. connectkit/connectors/cin7-core.yaml +28 -0
  93. connectkit/connectors/circle-so.yaml +22 -0
  94. connectkit/connectors/clari-copilot.yaml +28 -0
  95. connectkit/connectors/clay.yaml +28 -0
  96. connectkit/connectors/clearbit.yaml +46 -0
  97. connectkit/connectors/clerk.yaml +22 -0
  98. connectkit/connectors/cleverreach.yaml +22 -0
  99. connectkit/connectors/clickhouse.yaml +28 -0
  100. connectkit/connectors/clicksend.yaml +28 -0
  101. connectkit/connectors/clickup.yaml +51 -0
  102. connectkit/connectors/clio.yaml +27 -0
  103. connectkit/connectors/close.yaml +23 -0
  104. connectkit/connectors/cloudbeds.yaml +20 -0
  105. connectkit/connectors/cloudflare.yaml +25 -0
  106. connectkit/connectors/cloudtalk.yaml +28 -0
  107. connectkit/connectors/clover.yaml +32 -0
  108. connectkit/connectors/coda.yaml +22 -0
  109. connectkit/connectors/codeclimate.yaml +28 -0
  110. connectkit/connectors/codegen.yaml +22 -0
  111. connectkit/connectors/companycam.yaml +22 -0
  112. connectkit/connectors/connectwise-psa-staging.yaml +28 -0
  113. connectkit/connectors/connectwise-psa.yaml +52 -0
  114. connectkit/connectors/constant-contact.yaml +20 -0
  115. connectkit/connectors/conta-azul.yaml +20 -0
  116. connectkit/connectors/contactout.yaml +22 -0
  117. connectkit/connectors/contentful.yaml +29 -0
  118. connectkit/connectors/contentstack.yaml +38 -0
  119. connectkit/connectors/convertkit.yaml +42 -0
  120. connectkit/connectors/copper-api-key.yaml +28 -0
  121. connectkit/connectors/copper.yaml +20 -0
  122. connectkit/connectors/coros.yaml +20 -0
  123. connectkit/connectors/crisp-plugin-install.yaml +20 -0
  124. connectkit/connectors/crisp.yaml +28 -0
  125. connectkit/connectors/crunchbase.yaml +22 -0
  126. connectkit/connectors/cursor.yaml +22 -0
  127. connectkit/connectors/customerio.yaml +57 -0
  128. connectkit/connectors/cyberimpact.yaml +22 -0
  129. connectkit/connectors/databricks.yaml +56 -0
  130. connectkit/connectors/datacandy.yaml +46 -0
  131. connectkit/connectors/datadog.yaml +60 -0
  132. connectkit/connectors/datev.yaml +23 -0
  133. connectkit/connectors/datto-rmm.yaml +26 -0
  134. connectkit/connectors/deel.yaml +20 -0
  135. connectkit/connectors/deepl.yaml +52 -0
  136. connectkit/connectors/demodesk.yaml +22 -0
  137. connectkit/connectors/devin.yaml +22 -0
  138. connectkit/connectors/dialpad.yaml +20 -0
  139. connectkit/connectors/digitalocean.yaml +23 -0
  140. connectkit/connectors/discord.yaml +48 -0
  141. connectkit/connectors/discourse.yaml +34 -0
  142. connectkit/connectors/dixa.yaml +28 -0
  143. connectkit/connectors/document360.yaml +22 -0
  144. connectkit/connectors/docusign.yaml +20 -0
  145. connectkit/connectors/drata.yaml +22 -0
  146. connectkit/connectors/drchrono.yaml +20 -0
  147. connectkit/connectors/dropbox-sign.yaml +20 -0
  148. connectkit/connectors/dropbox.yaml +60 -0
  149. connectkit/connectors/e-conomic.yaml +28 -0
  150. connectkit/connectors/ebay.yaml +20 -0
  151. connectkit/connectors/egnyte.yaml +26 -0
  152. connectkit/connectors/elasticsearch.yaml +65 -0
  153. connectkit/connectors/elevenlabs.yaml +22 -0
  154. connectkit/connectors/elevio.yaml +28 -0
  155. connectkit/connectors/emarsys.yaml +32 -0
  156. connectkit/connectors/employment-hero.yaml +20 -0
  157. connectkit/connectors/entrata.yaml +22 -0
  158. connectkit/connectors/envoy.yaml +20 -0
  159. connectkit/connectors/epic-games.yaml +20 -0
  160. connectkit/connectors/evaluagent.yaml +34 -0
  161. connectkit/connectors/eventbrite.yaml +20 -0
  162. connectkit/connectors/exa.yaml +22 -0
  163. connectkit/connectors/exact-online.yaml +26 -0
  164. connectkit/connectors/exist.yaml +20 -0
  165. connectkit/connectors/expensify.yaml +28 -0
  166. connectkit/connectors/facebook.yaml +20 -0
  167. connectkit/connectors/factorial.yaml +20 -0
  168. connectkit/connectors/fairing.yaml +22 -0
  169. connectkit/connectors/falai.yaml +22 -0
  170. connectkit/connectors/fanvue.yaml +27 -0
  171. connectkit/connectors/fathom.yaml +22 -0
  172. connectkit/connectors/fellow.yaml +28 -0
  173. connectkit/connectors/fiber-ai.yaml +22 -0
  174. connectkit/connectors/figma.yaml +50 -0
  175. connectkit/connectors/fillout-api-key.yaml +28 -0
  176. connectkit/connectors/fillout.yaml +26 -0
  177. connectkit/connectors/findymail.yaml +22 -0
  178. connectkit/connectors/firecrawl.yaml +51 -0
  179. connectkit/connectors/fireflies.yaml +22 -0
  180. connectkit/connectors/firstbase.yaml +22 -0
  181. connectkit/connectors/fiserv-api-key.yaml +22 -0
  182. connectkit/connectors/fitbit.yaml +20 -0
  183. connectkit/connectors/float.yaml +28 -0
  184. connectkit/connectors/folk.yaml +22 -0
  185. connectkit/connectors/fortnox.yaml +22 -0
  186. connectkit/connectors/freeagent.yaml +20 -0
  187. connectkit/connectors/freepik.yaml +22 -0
  188. connectkit/connectors/freshbooks.yaml +20 -0
  189. connectkit/connectors/freshdesk.yaml +31 -0
  190. connectkit/connectors/freshsales.yaml +34 -0
  191. connectkit/connectors/freshservice.yaml +28 -0
  192. connectkit/connectors/freshteam.yaml +28 -0
  193. connectkit/connectors/front-api-key.yaml +22 -0
  194. connectkit/connectors/front.yaml +20 -0
  195. connectkit/connectors/ftp.yaml +66 -0
  196. connectkit/connectors/fullenrich.yaml +22 -0
  197. connectkit/connectors/gamma.yaml +22 -0
  198. connectkit/connectors/garmin.yaml +20 -0
  199. connectkit/connectors/gebruder-weiss.yaml +20 -0
  200. connectkit/connectors/gem.yaml +28 -0
  201. connectkit/connectors/gerrit.yaml +22 -0
  202. connectkit/connectors/getresponse.yaml +42 -0
  203. connectkit/connectors/ghost-content.yaml +34 -0
  204. connectkit/connectors/github-app.yaml +28 -0
  205. connectkit/connectors/github.yaml +80 -0
  206. connectkit/connectors/gitlab.yaml +70 -0
  207. connectkit/connectors/glyphic.yaml +22 -0
  208. connectkit/connectors/gong.yaml +31 -0
  209. connectkit/connectors/google-ads.yaml +61 -0
  210. connectkit/connectors/google-analytics.yaml +59 -0
  211. connectkit/connectors/google-gemini.yaml +22 -0
  212. connectkit/connectors/google-maps.yaml +22 -0
  213. connectkit/connectors/google-play.yaml +23 -0
  214. connectkit/connectors/google-workspace.yaml +69 -0
  215. connectkit/connectors/google.yaml +23 -0
  216. connectkit/connectors/gorgias.yaml +26 -0
  217. connectkit/connectors/grafana.yaml +31 -0
  218. connectkit/connectors/grain-api-key.yaml +22 -0
  219. connectkit/connectors/grain.yaml +20 -0
  220. connectkit/connectors/granola.yaml +22 -0
  221. connectkit/connectors/greenhouse-assessment.yaml +28 -0
  222. connectkit/connectors/greenhouse-harvest-partner.yaml +20 -0
  223. connectkit/connectors/greenhouse-harvest.yaml +22 -0
  224. connectkit/connectors/greenhouse-ingestion.yaml +20 -0
  225. connectkit/connectors/greenhouse-job-board.yaml +28 -0
  226. connectkit/connectors/greenhouse-onboarding.yaml +28 -0
  227. connectkit/connectors/greenhouse.yaml +26 -0
  228. connectkit/connectors/grist.yaml +28 -0
  229. connectkit/connectors/gumroad.yaml +20 -0
  230. connectkit/connectors/guru.yaml +28 -0
  231. connectkit/connectors/gusto-demo.yaml +20 -0
  232. connectkit/connectors/gusto.yaml +20 -0
  233. connectkit/connectors/hackerrank-work.yaml +22 -0
  234. connectkit/connectors/harvest.yaml +26 -0
  235. connectkit/connectors/health-gorilla.yaml +20 -0
  236. connectkit/connectors/helpscout-docs.yaml +22 -0
  237. connectkit/connectors/helpscout-mailbox.yaml +20 -0
  238. connectkit/connectors/hex.yaml +28 -0
  239. connectkit/connectors/heygen.yaml +20 -0
  240. connectkit/connectors/heymarket.yaml +32 -0
  241. connectkit/connectors/heyreach.yaml +22 -0
  242. connectkit/connectors/hibob-service-user.yaml +28 -0
  243. connectkit/connectors/highlevel-white-label.yaml +20 -0
  244. connectkit/connectors/highlevel.yaml +20 -0
  245. connectkit/connectors/holded.yaml +22 -0
  246. connectkit/connectors/hover.yaml +20 -0
  247. connectkit/connectors/hubspot.yaml +64 -0
  248. connectkit/connectors/icypeas.yaml +22 -0
  249. connectkit/connectors/incident-io.yaml +25 -0
  250. connectkit/connectors/insightly.yaml +28 -0
  251. connectkit/connectors/instagram.yaml +20 -0
  252. connectkit/connectors/instantly.yaml +22 -0
  253. connectkit/connectors/intercom.yaml +29 -0
  254. connectkit/connectors/intuit.yaml +20 -0
  255. connectkit/connectors/ironclad.yaml +26 -0
  256. connectkit/connectors/itglue.yaml +28 -0
  257. connectkit/connectors/jazzhr.yaml +22 -0
  258. connectkit/connectors/jira-data-center-api-key.yaml +28 -0
  259. connectkit/connectors/jira-data-center.yaml +26 -0
  260. connectkit/connectors/jira.yaml +73 -0
  261. connectkit/connectors/jobadder.yaml +20 -0
  262. connectkit/connectors/jobber.yaml +26 -0
  263. connectkit/connectors/jobvite.yaml +28 -0
  264. connectkit/connectors/jotform.yaml +22 -0
  265. connectkit/connectors/jumpcloud.yaml +22 -0
  266. connectkit/connectors/juniper-mist.yaml +28 -0
  267. connectkit/connectors/justworks.yaml +20 -0
  268. connectkit/connectors/kafka.yaml +70 -0
  269. connectkit/connectors/kandji.yaml +28 -0
  270. connectkit/connectors/keap.yaml +20 -0
  271. connectkit/connectors/kintone-user-api.yaml +28 -0
  272. connectkit/connectors/kintone.yaml +26 -0
  273. connectkit/connectors/klaviyo.yaml +22 -0
  274. connectkit/connectors/klicktipp.yaml +22 -0
  275. connectkit/connectors/klipfolio.yaml +22 -0
  276. connectkit/connectors/knowbe4.yaml +28 -0
  277. connectkit/connectors/kustomer.yaml +28 -0
  278. connectkit/connectors/lagrowthmachine.yaml +22 -0
  279. connectkit/connectors/lastpass.yaml +28 -0
  280. connectkit/connectors/lattice.yaml +22 -0
  281. connectkit/connectors/leadmagic.yaml +22 -0
  282. connectkit/connectors/lemlist.yaml +22 -0
  283. connectkit/connectors/lessonly.yaml +28 -0
  284. connectkit/connectors/lever.yaml +22 -0
  285. connectkit/connectors/lightspeed-retail.yaml +26 -0
  286. connectkit/connectors/linear.yaml +65 -0
  287. connectkit/connectors/linkedin.yaml +20 -0
  288. connectkit/connectors/linkhut.yaml +20 -0
  289. connectkit/connectors/listmonk.yaml +34 -0
  290. connectkit/connectors/lob.yaml +22 -0
  291. connectkit/connectors/lokalise.yaml +20 -0
  292. connectkit/connectors/loop-returns.yaml +22 -0
  293. connectkit/connectors/loops-so.yaml +22 -0
  294. connectkit/connectors/luma.yaml +22 -0
  295. connectkit/connectors/lumos.yaml +22 -0
  296. connectkit/connectors/mailchimp.yaml +29 -0
  297. connectkit/connectors/mailerlite.yaml +42 -0
  298. connectkit/connectors/mailgun.yaml +22 -0
  299. connectkit/connectors/mailjet.yaml +28 -0
  300. connectkit/connectors/make.yaml +28 -0
  301. connectkit/connectors/manatal.yaml +22 -0
  302. connectkit/connectors/maximizer-on-premise.yaml +26 -0
  303. connectkit/connectors/maximizer.yaml +32 -0
  304. connectkit/connectors/maxio.yaml +28 -0
  305. connectkit/connectors/mcp-generic.yaml +26 -0
  306. connectkit/connectors/mercury.yaml +20 -0
  307. connectkit/connectors/metabase.yaml +31 -0
  308. connectkit/connectors/microsoft-365.yaml +66 -0
  309. connectkit/connectors/microsoft-dynamics.yaml +75 -0
  310. connectkit/connectors/microsoft-entra-id.yaml +68 -0
  311. connectkit/connectors/microsoft-teams-bot.yaml +35 -0
  312. connectkit/connectors/microsoft-tenant-specific.yaml +29 -0
  313. connectkit/connectors/microsoft.yaml +23 -0
  314. connectkit/connectors/mindbody.yaml +34 -0
  315. connectkit/connectors/minimax.yaml +28 -0
  316. connectkit/connectors/miro.yaml +20 -0
  317. connectkit/connectors/missive.yaml +22 -0
  318. connectkit/connectors/mixpanel.yaml +31 -0
  319. connectkit/connectors/mollie.yaml +20 -0
  320. connectkit/connectors/momentum-io.yaml +22 -0
  321. connectkit/connectors/monday.yaml +61 -0
  322. connectkit/connectors/mongodb.yaml +55 -0
  323. connectkit/connectors/mural.yaml +20 -0
  324. connectkit/connectors/mysql.yaml +66 -0
  325. connectkit/connectors/namely.yaml +26 -0
  326. connectkit/connectors/nationbuilder.yaml +26 -0
  327. connectkit/connectors/netlify.yaml +42 -0
  328. connectkit/connectors/netsuite-tba.yaml +20 -0
  329. connectkit/connectors/netsuite.yaml +31 -0
  330. connectkit/connectors/next-cloud-ocs.yaml +22 -0
  331. connectkit/connectors/nocrm.yaml +28 -0
  332. connectkit/connectors/northbeam.yaml +34 -0
  333. connectkit/connectors/notion.yaml +55 -0
  334. connectkit/connectors/nyne-ai.yaml +28 -0
  335. connectkit/connectors/ocean-io.yaml +22 -0
  336. connectkit/connectors/odoo.yaml +26 -0
  337. connectkit/connectors/okta-preview.yaml +26 -0
  338. connectkit/connectors/okta.yaml +28 -0
  339. connectkit/connectors/one-drive-personal.yaml +22 -0
  340. connectkit/connectors/onlogist.yaml +22 -0
  341. connectkit/connectors/oomnitza.yaml +28 -0
  342. connectkit/connectors/open-hands.yaml +22 -0
  343. connectkit/connectors/openai.yaml +25 -0
  344. connectkit/connectors/oracle-hcm.yaml +34 -0
  345. connectkit/connectors/ordinal.yaml +22 -0
  346. connectkit/connectors/osu.yaml +20 -0
  347. connectkit/connectors/oura.yaml +20 -0
  348. connectkit/connectors/outreach.yaml +23 -0
  349. connectkit/connectors/pagerduty.yaml +41 -0
  350. connectkit/connectors/paligo.yaml +34 -0
  351. connectkit/connectors/pandadoc-api-key.yaml +22 -0
  352. connectkit/connectors/pandadoc.yaml +20 -0
  353. connectkit/connectors/paycom.yaml +28 -0
  354. connectkit/connectors/paycor.yaml +34 -0
  355. connectkit/connectors/payfit.yaml +20 -0
  356. connectkit/connectors/paypal.yaml +20 -0
  357. connectkit/connectors/pendo.yaml +22 -0
  358. connectkit/connectors/pennylane-company-api.yaml +22 -0
  359. connectkit/connectors/pennylane.yaml +20 -0
  360. connectkit/connectors/peopledatalabs.yaml +22 -0
  361. connectkit/connectors/perdoo.yaml +22 -0
  362. connectkit/connectors/perk.yaml +20 -0
  363. connectkit/connectors/perplexity.yaml +22 -0
  364. connectkit/connectors/personio-recruiting.yaml +46 -0
  365. connectkit/connectors/pingone.yaml +32 -0
  366. connectkit/connectors/pinterest.yaml +20 -0
  367. connectkit/connectors/pipedream.yaml +22 -0
  368. connectkit/connectors/pipedrive.yaml +29 -0
  369. connectkit/connectors/pivotaltracker.yaml +22 -0
  370. connectkit/connectors/plain.yaml +22 -0
  371. connectkit/connectors/pleo.yaml +32 -0
  372. connectkit/connectors/podium.yaml +26 -0
  373. connectkit/connectors/postgres.yaml +48 -0
  374. connectkit/connectors/posthog.yaml +31 -0
  375. connectkit/connectors/postman.yaml +41 -0
  376. connectkit/connectors/practicefusion.yaml +35 -0
  377. connectkit/connectors/precisefp.yaml +20 -0
  378. connectkit/connectors/printful.yaml +20 -0
  379. connectkit/connectors/private-api-bearer.yaml +22 -0
  380. connectkit/connectors/prive.yaml +22 -0
  381. connectkit/connectors/procore.yaml +26 -0
  382. connectkit/connectors/productboard.yaml +23 -0
  383. connectkit/connectors/prospeo.yaml +22 -0
  384. connectkit/connectors/provenexpert.yaml +28 -0
  385. connectkit/connectors/prtg-classic.yaml +28 -0
  386. connectkit/connectors/pylon.yaml +22 -0
  387. connectkit/connectors/qualia.yaml +34 -0
  388. connectkit/connectors/qualtrics.yaml +26 -0
  389. connectkit/connectors/quentn.yaml +28 -0
  390. connectkit/connectors/quickbase.yaml +34 -0
  391. connectkit/connectors/quickbooks.yaml +26 -0
  392. connectkit/connectors/quipteams.yaml +22 -0
  393. connectkit/connectors/rabbitmq.yaml +72 -0
  394. connectkit/connectors/ragieai.yaml +22 -0
  395. connectkit/connectors/ramp.yaml +23 -0
  396. connectkit/connectors/rapidapi.yaml +28 -0
  397. connectkit/connectors/razorpay.yaml +28 -0
  398. connectkit/connectors/readwise-reader.yaml +22 -0
  399. connectkit/connectors/readwise.yaml +22 -0
  400. connectkit/connectors/reapit.yaml +26 -0
  401. connectkit/connectors/recall-ai.yaml +28 -0
  402. connectkit/connectors/recharge.yaml +22 -0
  403. connectkit/connectors/recruitcrm.yaml +22 -0
  404. connectkit/connectors/recruitee.yaml +34 -0
  405. connectkit/connectors/recruiterflow.yaml +22 -0
  406. connectkit/connectors/reddit.yaml +22 -0
  407. connectkit/connectors/redis.yaml +57 -0
  408. connectkit/connectors/refiner.yaml +22 -0
  409. connectkit/connectors/replicate.yaml +22 -0
  410. connectkit/connectors/reply-io.yaml +22 -0
  411. connectkit/connectors/resend.yaml +25 -0
  412. connectkit/connectors/retell-ai.yaml +22 -0
  413. connectkit/connectors/ring-central.yaml +20 -0
  414. connectkit/connectors/ringover.yaml +22 -0
  415. connectkit/connectors/rippling-shop-app.yaml +26 -0
  416. connectkit/connectors/rippling.yaml +22 -0
  417. connectkit/connectors/rock-gym-pro.yaml +28 -0
  418. connectkit/connectors/rocketlane.yaml +22 -0
  419. connectkit/connectors/rocketreach.yaml +22 -0
  420. connectkit/connectors/rootly.yaml +25 -0
  421. connectkit/connectors/sage-hr.yaml +28 -0
  422. connectkit/connectors/sage-people.yaml +29 -0
  423. connectkit/connectors/sage.yaml +22 -0
  424. connectkit/connectors/salesforce-experience-cloud.yaml +32 -0
  425. connectkit/connectors/salesforce.yaml +63 -0
  426. connectkit/connectors/salesloft.yaml +23 -0
  427. connectkit/connectors/schwab.yaml +20 -0
  428. connectkit/connectors/scrapedo.yaml +22 -0
  429. connectkit/connectors/segment.yaml +20 -0
  430. connectkit/connectors/sellsy.yaml +20 -0
  431. connectkit/connectors/semrush.yaml +22 -0
  432. connectkit/connectors/sendgrid.yaml +22 -0
  433. connectkit/connectors/sentinelone.yaml +28 -0
  434. connectkit/connectors/sentry.yaml +51 -0
  435. connectkit/connectors/servicem8.yaml +20 -0
  436. connectkit/connectors/servicenow.yaml +26 -0
  437. connectkit/connectors/shipstation-v2.yaml +22 -0
  438. connectkit/connectors/shipstation.yaml +28 -0
  439. connectkit/connectors/shopify-api-key.yaml +28 -0
  440. connectkit/connectors/shopify-partner.yaml +28 -0
  441. connectkit/connectors/shopify.yaml +29 -0
  442. connectkit/connectors/shortcut.yaml +25 -0
  443. connectkit/connectors/signnow.yaml +20 -0
  444. connectkit/connectors/simpro.yaml +26 -0
  445. connectkit/connectors/skio.yaml +22 -0
  446. connectkit/connectors/slab.yaml +22 -0
  447. connectkit/connectors/slack.yaml +66 -0
  448. connectkit/connectors/smartlead-ai.yaml +22 -0
  449. connectkit/connectors/smartrecruiters-api-key.yaml +22 -0
  450. connectkit/connectors/smartsheet.yaml +26 -0
  451. connectkit/connectors/smugmug.yaml +20 -0
  452. connectkit/connectors/snapchat.yaml +20 -0
  453. connectkit/connectors/snipe-it.yaml +28 -0
  454. connectkit/connectors/snowflake-jwt.yaml +44 -0
  455. connectkit/connectors/snowflake.yaml +29 -0
  456. connectkit/connectors/splitwise.yaml +20 -0
  457. connectkit/connectors/spotify.yaml +23 -0
  458. connectkit/connectors/squarespace.yaml +26 -0
  459. connectkit/connectors/squareup.yaml +22 -0
  460. connectkit/connectors/stackexchange.yaml +20 -0
  461. connectkit/connectors/statista.yaml +22 -0
  462. connectkit/connectors/stay-ai.yaml +22 -0
  463. connectkit/connectors/store-leads.yaml +22 -0
  464. connectkit/connectors/strava-web.yaml +22 -0
  465. connectkit/connectors/strava.yaml +22 -0
  466. connectkit/connectors/streak.yaml +22 -0
  467. connectkit/connectors/stripe-api-key.yaml +28 -0
  468. connectkit/connectors/stripe-app.yaml +20 -0
  469. connectkit/connectors/stripe-express.yaml +20 -0
  470. connectkit/connectors/stripe.yaml +52 -0
  471. connectkit/connectors/supabase.yaml +28 -0
  472. connectkit/connectors/survey-monkey.yaml +20 -0
  473. connectkit/connectors/tailscale-api-key.yaml +28 -0
  474. connectkit/connectors/tally.yaml +22 -0
  475. connectkit/connectors/teamleader.yaml +20 -0
  476. connectkit/connectors/teamtailor.yaml +28 -0
  477. connectkit/connectors/teamwork.yaml +20 -0
  478. connectkit/connectors/telegram.yaml +22 -0
  479. connectkit/connectors/terraform.yaml +22 -0
  480. connectkit/connectors/thrivecart-api-key.yaml +22 -0
  481. connectkit/connectors/ticktick.yaml +20 -0
  482. connectkit/connectors/tiktok-accounts.yaml +20 -0
  483. connectkit/connectors/tiktok-ads.yaml +20 -0
  484. connectkit/connectors/tiktok-personal.yaml +20 -0
  485. connectkit/connectors/timely.yaml +20 -0
  486. connectkit/connectors/tldv.yaml +22 -0
  487. connectkit/connectors/todoist.yaml +23 -0
  488. connectkit/connectors/toggl.yaml +31 -0
  489. connectkit/connectors/torii.yaml +22 -0
  490. connectkit/connectors/trakstar-hire.yaml +22 -0
  491. connectkit/connectors/trello.yaml +56 -0
  492. connectkit/connectors/tremendous.yaml +20 -0
  493. connectkit/connectors/triple-whale.yaml +22 -0
  494. connectkit/connectors/tsheetsteam.yaml +20 -0
  495. connectkit/connectors/tumblr.yaml +20 -0
  496. connectkit/connectors/twenty-crm-self-hosted.yaml +28 -0
  497. connectkit/connectors/twenty-crm.yaml +22 -0
  498. connectkit/connectors/twilio.yaml +55 -0
  499. connectkit/connectors/twinfield.yaml +32 -0
  500. connectkit/connectors/twitch.yaml +22 -0
  501. connectkit/connectors/twitter-v2.yaml +22 -0
  502. connectkit/connectors/twitter.yaml +20 -0
  503. connectkit/connectors/typeform.yaml +23 -0
  504. connectkit/connectors/typefully-v2.yaml +22 -0
  505. connectkit/connectors/typefully.yaml +22 -0
  506. connectkit/connectors/uber.yaml +20 -0
  507. connectkit/connectors/ukg-pro-wfm.yaml +35 -0
  508. connectkit/connectors/ukg-pro.yaml +40 -0
  509. connectkit/connectors/unanet.yaml +40 -0
  510. connectkit/connectors/unauthenticated.yaml +20 -0
  511. connectkit/connectors/unipile.yaml +34 -0
  512. connectkit/connectors/upsales.yaml +22 -0
  513. connectkit/connectors/valley-api-key.yaml +22 -0
  514. connectkit/connectors/vercel.yaml +43 -0
  515. connectkit/connectors/vimeo.yaml +20 -0
  516. connectkit/connectors/vtex.yaml +34 -0
  517. connectkit/connectors/wakatime.yaml +20 -0
  518. connectkit/connectors/wave-accounting.yaml +20 -0
  519. connectkit/connectors/wealthbox.yaml +20 -0
  520. connectkit/connectors/webex.yaml +20 -0
  521. connectkit/connectors/webflow.yaml +23 -0
  522. connectkit/connectors/webinarjam.yaml +22 -0
  523. connectkit/connectors/wejam.yaml +22 -0
  524. connectkit/connectors/whatsapp-business.yaml +22 -0
  525. connectkit/connectors/whoop.yaml +20 -0
  526. connectkit/connectors/wildix-pbx.yaml +26 -0
  527. connectkit/connectors/wise-api-key.yaml +22 -0
  528. connectkit/connectors/wiseagent.yaml +20 -0
  529. connectkit/connectors/wiza.yaml +22 -0
  530. connectkit/connectors/woocommerce.yaml +34 -0
  531. connectkit/connectors/wordpress.yaml +20 -0
  532. connectkit/connectors/workable.yaml +31 -0
  533. connectkit/connectors/workday.yaml +40 -0
  534. connectkit/connectors/workos.yaml +22 -0
  535. connectkit/connectors/workpath.yaml +22 -0
  536. connectkit/connectors/wrike.yaml +26 -0
  537. connectkit/connectors/xai.yaml +22 -0
  538. connectkit/connectors/xero.yaml +21 -0
  539. connectkit/connectors/yahoo.yaml +26 -0
  540. connectkit/connectors/yandex.yaml +20 -0
  541. connectkit/connectors/youtube.yaml +67 -0
  542. connectkit/connectors/zapier-nla.yaml +20 -0
  543. connectkit/connectors/zapier.yaml +25 -0
  544. connectkit/connectors/zendesk-sell.yaml +20 -0
  545. connectkit/connectors/zendesk.yaml +62 -0
  546. connectkit/connectors/zenefits.yaml +20 -0
  547. connectkit/connectors/zoho.yaml +35 -0
  548. connectkit/connectors/zoom.yaml +59 -0
  549. connectkit/connectors/zorus.yaml +22 -0
  550. connectkit/meta_tools.py +290 -0
  551. connectkit/oauth.py +168 -0
  552. connectkit/runtime.py +189 -0
  553. connectkit/sdk_adapter.py +42 -0
  554. connectkit/spec.py +161 -0
  555. connectkit/utils.py +52 -0
  556. connectkit/vault.py +202 -0
  557. connectkit-0.1.0.dist-info/METADATA +197 -0
  558. connectkit-0.1.0.dist-info/RECORD +560 -0
  559. connectkit-0.1.0.dist-info/WHEEL +4 -0
  560. connectkit-0.1.0.dist-info/licenses/LICENSE +21 -0
connectkit/__init__.py ADDED
@@ -0,0 +1,26 @@
1
+ """ConnectKit — connect AI agents to SaaS accounts.
2
+
3
+ One YAML file per service. OAuth, token vault, and tool discovery handled automatically.
4
+ """
5
+
6
+ __version__ = "0.1.0"
7
+
8
+ from connectkit.bridge import ConnectKitBridge
9
+ from connectkit.meta_tools import TOOL_SPECS
10
+ from connectkit.sdk_adapter import ToolSpec
11
+ from connectkit.spec import AuthType, ConnectorSpec, RequiredField, ToolSourceType, CLIToolSource
12
+ from connectkit.utils import ensure_cli_installed
13
+ from connectkit.vault import CredentialVault
14
+
15
+ __all__ = [
16
+ "ConnectorSpec",
17
+ "AuthType",
18
+ "ToolSourceType",
19
+ "RequiredField",
20
+ "CredentialVault",
21
+ "ConnectKitBridge",
22
+ "ToolSpec",
23
+ "TOOL_SPECS",
24
+ "CLIToolSource",
25
+ "ensure_cli_installed",
26
+ ]
File without changes
@@ -0,0 +1,220 @@
1
+ """CLIAdapter — user-aware subprocess wrapper for CLI-based connectors.
2
+
3
+ Unlike the old CLIToolAdapter singleton in EA's SDK, this:
4
+ 1. Reads per-user tokens from CredentialVault
5
+ 2. Sets env vars per invocation (no global state)
6
+ 3. Discovers tools by parsing CLI --help or a known tool list
7
+ 4. Returns namespaced ToolDefinition objects
8
+
9
+ Usage:
10
+ adapter = CLIAdapter(spec, vault, user_id="alice")
11
+ if not adapter.is_available():
12
+ print(f"CLI not installed: {adapter._source.install}")
13
+
14
+ tools = adapter.discover_tools(namespace="google-workspace")
15
+ """
16
+
17
+ import json
18
+ import logging
19
+ import os
20
+ import re
21
+ import shutil
22
+ import subprocess
23
+ from typing import Any
24
+
25
+ from connectkit.spec import CLIToolSource, ConnectorSpec, ToolDescription
26
+ from connectkit.vault import CredentialVault
27
+
28
+ logger = logging.getLogger("connectkit")
29
+
30
+
31
+ class CLIAdapter:
32
+ """Wraps a CLI tool with per-user token injection.
33
+
34
+ Each tool is a closure that spans a subprocess with the user's
35
+ OAuth token in the environment.
36
+ """
37
+
38
+ def __init__(
39
+ self,
40
+ spec: ConnectorSpec,
41
+ vault: CredentialVault,
42
+ user_id: str,
43
+ timeout: int = 60,
44
+ ):
45
+ self.spec = spec
46
+ self.vault = vault
47
+ self.user_id = user_id
48
+ self.timeout = timeout
49
+ self._source: CLIToolSource = spec.tool_source # type: ignore[assignment]
50
+ self._command = self._source.command
51
+
52
+ def is_available(self) -> bool:
53
+ return shutil.which(self._command) is not None
54
+
55
+ def _build_env(self) -> dict[str, str]:
56
+ env = os.environ.copy()
57
+ token_data = self.vault.get_token(self.spec.name)
58
+ if not token_data:
59
+ return env
60
+
61
+ for cred_key, env_var in self._source.env_mapping.items():
62
+ if cred_key == "access_token":
63
+ env[env_var] = token_data.get("access_token", "")
64
+ elif cred_key == "api_key":
65
+ env[env_var] = token_data.get("api_key", "")
66
+ elif cred_key in token_data:
67
+ env[env_var] = str(token_data[cred_key])
68
+
69
+ return env
70
+
71
+ def run(self, args: list[str]) -> tuple[int, str, str]:
72
+ env = self._build_env()
73
+ cmd = [self._command] + args
74
+ try:
75
+ result = subprocess.run(
76
+ cmd,
77
+ env=env,
78
+ capture_output=True,
79
+ text=True,
80
+ timeout=self.timeout,
81
+ )
82
+ return result.returncode, result.stdout.strip(), result.stderr.strip()
83
+ except subprocess.TimeoutExpired:
84
+ return -2, "", f"Command timed out after {self.timeout}s: {' '.join(cmd)}"
85
+ except FileNotFoundError:
86
+ return -1, "", f"Command not found: {self._command}. Install: {self._source.install}"
87
+ except Exception as e:
88
+ return -3, "", f"Subprocess error: {e}"
89
+
90
+ def list_commands(self) -> list[str]:
91
+ rc, stdout, _ = self.run(["--list-commands"])
92
+ if rc == 0:
93
+ try:
94
+ return json.loads(stdout)
95
+ except json.JSONDecodeError:
96
+ return [line.strip() for line in stdout.split("\n") if line.strip()]
97
+
98
+ rc, stdout, _ = self.run(["--help"])
99
+ if rc == 0:
100
+ return _parse_subcommands_from_help(stdout)
101
+
102
+ return []
103
+
104
+ def discover_tools(self, namespace: str) -> list[Any]:
105
+ commands = self.list_commands()
106
+ descriptions_by_name = {
107
+ td.name: td for td in self.spec.tool_descriptions
108
+ }
109
+
110
+ tools = []
111
+ for cmd in commands:
112
+ safe_name = cmd.replace(" ", "_").replace("-", "_").replace(":", "_")
113
+ tool_name = f"{namespace}__{safe_name}"
114
+
115
+ td = descriptions_by_name.get(tool_name)
116
+ description = (
117
+ td.description if td
118
+ else f"{self.spec.display}: {cmd}"
119
+ )
120
+
121
+ parameter_descriptions = td.parameter_descriptions if td else {}
122
+
123
+ tool_def = _build_connector_tool(
124
+ name=tool_name,
125
+ description=description,
126
+ adapter=self,
127
+ args=args_from_command(cmd),
128
+ parameter_descriptions=parameter_descriptions,
129
+ )
130
+ tools.append(tool_def)
131
+
132
+ return tools
133
+
134
+
135
+ def args_from_command(cmd: str) -> list[str]:
136
+ """Convert a command string like 'gmail:messages:list' to CLI args."""
137
+ return cmd.replace(":", " ").split()
138
+
139
+
140
+ def _parse_subcommands_from_help(help_text: str) -> list[str]:
141
+ commands = []
142
+ for line in help_text.split("\n"):
143
+ if not line.strip():
144
+ continue
145
+ match = re.search(r"\s{2,}([a-z][a-z0-9_:-]+)(?:\s|$)", line)
146
+ if match:
147
+ commands.append(match.group(1))
148
+ return commands
149
+
150
+
151
+ def _build_connector_tool(
152
+ name: str,
153
+ description: str,
154
+ adapter: CLIAdapter,
155
+ args: list[str],
156
+ parameter_descriptions: dict[str, str] | None = None,
157
+ ) -> Any:
158
+ """Build a ToolDefinition-compatible object for a connector tool.
159
+
160
+ Uses a closure that wraps the subprocess call. The closure:
161
+ 1. Formats kwargs as --key value pairs
162
+ 2. Calls adapter.run(args + extra_args)
163
+ 3. Parses stdout as JSON if possible
164
+ 4. Returns a dict with content, structured_content, and error flag
165
+ """
166
+
167
+ def _sync_invoke(**kwargs: Any) -> dict:
168
+ extra = []
169
+ for key, val in kwargs.items():
170
+ if val is None:
171
+ continue
172
+ extra.extend([f"--{key.replace('_', '-')}", str(val)])
173
+
174
+ rc, stdout, stderr = adapter.run(args + extra)
175
+
176
+ result: dict[str, Any] = {
177
+ "content": "",
178
+ "structured_content": None,
179
+ "is_error": False,
180
+ }
181
+
182
+ if rc != 0:
183
+ result["content"] = f"Error (code {rc}): {stderr or stdout}"
184
+ result["is_error"] = True
185
+ return result
186
+
187
+ try:
188
+ parsed = json.loads(stdout)
189
+ result["content"] = stdout[:4000]
190
+ result["structured_content"] = parsed
191
+ return result
192
+ except (json.JSONDecodeError, ValueError):
193
+ result["content"] = stdout[:4000]
194
+ return result
195
+
196
+ async def _async_invoke(**kwargs: Any) -> dict:
197
+ import asyncio
198
+ return await asyncio.to_thread(_sync_invoke, **kwargs)
199
+
200
+ params: dict[str, Any] = {
201
+ "type": "object",
202
+ "properties": {
203
+ k: {"type": "string", "description": v}
204
+ for k, v in (parameter_descriptions or {}).items()
205
+ },
206
+ }
207
+
208
+ return {
209
+ "name": name,
210
+ "description": description,
211
+ "parameters": params,
212
+ "function": _sync_invoke,
213
+ "ainvoke": _async_invoke,
214
+ "annotations": {
215
+ "read_only": False,
216
+ "destructive": True,
217
+ "idempotent": False,
218
+ "title": name,
219
+ },
220
+ }
@@ -0,0 +1,87 @@
1
+ """MCPAdapter — vault token injection for MCP tool source connectors.
2
+
3
+ This adapter wraps a ConnectorSpec whose tool_source.type is "mcp".
4
+ It reads the user's OAuth/API token from CredentialVault, injects it
5
+ into the MCP server process environment, then returns tool definitions.
6
+
7
+ For EA integration, the actual MCP server lifecycle is managed by the
8
+ existing MCPToolBridge + MCPManager. This adapter just provides the
9
+ env dict with per-user tokens.
10
+
11
+ Usage:
12
+ adapter = MCPAdapter(spec, vault, user_id="alice")
13
+ server_env = adapter.build_server_env()
14
+ # Pass server_env to MCPToolBridge when registering the server
15
+ """
16
+
17
+ import logging
18
+ from typing import Any
19
+
20
+ from connectkit.spec import ConnectorSpec, MCPToolSource
21
+ from connectkit.vault import CredentialVault
22
+
23
+ logger = logging.getLogger("connectkit")
24
+
25
+
26
+ class MCPAdapter:
27
+ """Wraps an MCP server connector with per-user token injection."""
28
+
29
+ def __init__(
30
+ self,
31
+ spec: ConnectorSpec,
32
+ vault: CredentialVault,
33
+ user_id: str,
34
+ ):
35
+ self.spec = spec
36
+ self.vault = vault
37
+ self.user_id = user_id
38
+ self._source: MCPToolSource = spec.tool_source # type: ignore[assignment]
39
+
40
+ @property
41
+ def server_name(self) -> str:
42
+ return self._source.server_name
43
+
44
+ @property
45
+ def command(self) -> str:
46
+ return self._source.command
47
+
48
+ def build_server_env(self) -> dict[str, str]:
49
+ import os
50
+
51
+ env = os.environ.copy()
52
+ token_data = self.vault.get_token(self.spec.name)
53
+ if not token_data:
54
+ return env
55
+
56
+ for cred_key, env_var in self._source.env_mapping.items():
57
+ if cred_key == "access_token":
58
+ env[env_var] = token_data.get("access_token", "")
59
+ elif cred_key == "api_key":
60
+ env[env_var] = token_data.get("api_key", "")
61
+ elif cred_key in token_data:
62
+ env[env_var] = str(token_data[cred_key])
63
+
64
+ return env
65
+
66
+ def get_mcp_config(self) -> dict[str, Any]:
67
+ """Return config dict suitable for registering with MCPManager.
68
+
69
+ The caller can pass this to their existing MCP server registry.
70
+ """
71
+ return {
72
+ "command": self._source.command,
73
+ "env": self.build_server_env(),
74
+ "transport": "stdio",
75
+ }
76
+
77
+ def health(self) -> dict[str, Any]:
78
+ try:
79
+ token_data = self.vault.get_token(self.spec.name)
80
+ has_token = token_data is not None and "access_token" in token_data
81
+ return {
82
+ "status": "ok" if has_token else "not_connected",
83
+ "service": self.spec.name,
84
+ "server": self._source.server_name,
85
+ }
86
+ except Exception as e:
87
+ return {"status": "error", "service": self.spec.name, "error": str(e)}
connectkit/bridge.py ADDED
@@ -0,0 +1,116 @@
1
+ """ConnectKitBridge — EA integration point.
2
+
3
+ Mirrors the MCPToolBridge pattern:
4
+ bridge = ConnectKitBridge(user_id="alice")
5
+ await bridge.discover()
6
+ tools = bridge.get_tool_definitions()
7
+
8
+ EA's runner.py injects this between native_tools and AgentLoop creation.
9
+ Each tool dict contains: name, description, parameters, function, ainvoke,
10
+ annotations, and optional _is_mcp_placeholder.
11
+ """
12
+
13
+ import logging
14
+ from pathlib import Path
15
+ from typing import Any
16
+
17
+ from connectkit.runtime import ConnectorRuntime
18
+ from connectkit.spec import ConnectorSpec
19
+ from connectkit.vault import CredentialVault
20
+
21
+ logger = logging.getLogger("connectkit")
22
+
23
+
24
+ def _default_vault_path(user_id: str) -> str:
25
+ return str(Path("data") / "users" / user_id / "connectkit")
26
+
27
+
28
+ def _default_spec_dir() -> str:
29
+ import os
30
+
31
+ env = os.environ.get("CONNECTKIT_SPEC_DIR")
32
+ if env:
33
+ return env
34
+
35
+ try:
36
+ import importlib.resources
37
+
38
+ packaged = Path(str(importlib.resources.files("connectkit") / "connectors"))
39
+ if packaged.exists():
40
+ return str(packaged)
41
+ except Exception:
42
+ pass
43
+
44
+ return str(Path(__file__).parent.parent / "connectors")
45
+
46
+
47
+ def get_vault(user_id: str, vault_path: str | None = None) -> CredentialVault:
48
+ """Get or create a CredentialVault for a user."""
49
+ path = vault_path or _default_vault_path(user_id)
50
+ return CredentialVault(path)
51
+
52
+
53
+ class ConnectKitBridge:
54
+ """Bridge between Agent Connect and an agent loop.
55
+
56
+ Mirrors the MCPToolBridge pattern exactly:
57
+ - discover() → loads connector specs, checks vault, discovers tools
58
+ - get_tool_definitions() → returns list[dict]
59
+ - health() → reports connector health
60
+ - list_available() → catalog of known connectors
61
+ """
62
+
63
+ def __init__(
64
+ self,
65
+ user_id: str,
66
+ spec_dir: str | None = None,
67
+ vault_path: str | None = None,
68
+ ):
69
+ self.user_id = user_id
70
+ self._spec_dir = spec_dir or _default_spec_dir()
71
+ self._vault = get_vault(user_id, vault_path)
72
+ self._runtime = ConnectorRuntime(self._spec_dir, self._vault, user_id)
73
+ self._tools: list[dict[str, Any]] = []
74
+
75
+ @property
76
+ def spec_dir(self) -> str:
77
+ return self._spec_dir
78
+
79
+ @property
80
+ def runtime(self) -> ConnectorRuntime:
81
+ return self._runtime
82
+
83
+ @property
84
+ def vault(self) -> CredentialVault:
85
+ return self._vault
86
+
87
+ async def discover(self) -> None:
88
+ self._tools = self._runtime.get_tools()
89
+ logger.info(
90
+ f"connectkit.discover user={self.user_id} tools={len(self._tools)}"
91
+ )
92
+
93
+ def get_tool_definitions(self) -> list[dict[str, Any]]:
94
+ return self._tools
95
+
96
+ def list_available(self) -> list[dict[str, Any]]:
97
+ return self._runtime.list_available()
98
+
99
+ def list_available_specs(self) -> list[ConnectorSpec]:
100
+ """Return full ConnectorSpec objects for all known connectors."""
101
+ return self._runtime.get_specs()
102
+
103
+ def health(self) -> dict[str, Any]:
104
+ vault_health = self._vault.health()
105
+ connector_health = self._runtime.health()
106
+ return {
107
+ "vault": vault_health,
108
+ "connectors": connector_health,
109
+ "total_tools": len(self._tools),
110
+ }
111
+
112
+ def connected_services(self) -> list[str]:
113
+ return self._vault.list_connected()
114
+
115
+ def reload_specs(self) -> None:
116
+ self._runtime.reload()
@@ -0,0 +1,26 @@
1
+ name: accelo
2
+ display: Accelo
3
+ icon: accelo
4
+ category: invoicing
5
+ version: '1.0'
6
+ description: Accelo
7
+ auth:
8
+ type: oauth2
9
+ oauth2:
10
+ authorize_url: https://${connectionConfig.subdomain}.api.accelo.com/oauth2/v0/authorize
11
+ token_url: https://${connectionConfig.subdomain}.api.accelo.com/oauth2/v0/token
12
+ scopes:
13
+ - read
14
+ token_env_var: ACCELO_ACCESS_TOKEN
15
+ required_fields:
16
+ - name: subdomain
17
+ label: Accelo Domain
18
+ placeholder: domain
19
+ input_type: text
20
+ help_text: The subdomain of your Accelo account
21
+ optional: false
22
+ setup_guide_url: https://nango.dev/docs/api-integrations/accelo/how-to-register-your-own-accelo-api-oauth-app
23
+ tool_source:
24
+ type: mcp
25
+ server_name: accelo
26
+ command: accelo-mcp-server
@@ -0,0 +1,28 @@
1
+ name: active-campaign
2
+ display: ActiveCampaign
3
+ icon: active
4
+ category: marketing
5
+ version: '1.0'
6
+ description: ActiveCampaign
7
+ auth:
8
+ type: api_key
9
+ api_key:
10
+ env_var: ACTIVE-CAMPAIGN_API_KEY
11
+ required_fields:
12
+ - name: apiKey
13
+ label: API Key
14
+ placeholder: b4f1a7c9d8e56320a9db472fe6c8351f2e0a4d98b7f6c3e5d9a2f4701b3e8d6c3455abbe
15
+ input_type: text
16
+ help_text: The API Key for your ActiveCampaign account
17
+ optional: false
18
+ - name: hostname
19
+ label: Hostname
20
+ placeholder: company.activehosted.com
21
+ input_type: url
22
+ help_text: The Hostname for your ActiveCampaign account
23
+ optional: false
24
+ setup_guide_url: https://nango.dev/docs/integrations/all/active-campaign
25
+ tool_source:
26
+ type: mcp
27
+ server_name: active-campaign
28
+ command: active-campaign-mcp-server
@@ -0,0 +1,20 @@
1
+ name: acuity-scheduling
2
+ display: Acuity Scheduling
3
+ icon: acuity
4
+ category: productivity
5
+ version: '1.0'
6
+ description: Acuity Scheduling
7
+ auth:
8
+ type: oauth2
9
+ oauth2:
10
+ authorize_url: https://acuityscheduling.com/oauth2/authorize
11
+ token_url: https://acuityscheduling.com/oauth2/token
12
+ scopes:
13
+ - api-v1
14
+ token_env_var: ACUITY-SCHEDULING_ACCESS_TOKEN
15
+ required_fields: []
16
+ setup_guide_url: https://nango.dev/docs/integrations/all/acuity-scheduling
17
+ tool_source:
18
+ type: mcp
19
+ server_name: acuity-scheduling
20
+ command: acuity-scheduling-mcp-server
@@ -0,0 +1,26 @@
1
+ name: addepar
2
+ display: Addepar (OAuth)
3
+ icon: addepar
4
+ category: analytics
5
+ version: '1.0'
6
+ description: Addepar (OAuth)
7
+ auth:
8
+ type: oauth2
9
+ oauth2:
10
+ authorize_url: https://id.addepar.com/oauth2/authorize
11
+ token_url: https://api.addepar.com/public/oauth2/token
12
+ scopes:
13
+ - read
14
+ token_env_var: ADDEPAR_ACCESS_TOKEN
15
+ required_fields:
16
+ - name: firmid
17
+ label: Firm ID
18
+ placeholder: ''
19
+ input_type: text
20
+ help_text: Your Addepar Firm ID
21
+ optional: false
22
+ setup_guide_url: https://nango.dev/docs/integrations/all/addepar
23
+ tool_source:
24
+ type: mcp
25
+ server_name: addepar
26
+ command: addepar-mcp-server
@@ -0,0 +1,34 @@
1
+ name: adobe-commerce
2
+ display: Adobe Commerce
3
+ icon: adobe
4
+ category: e-commerce
5
+ version: '1.0'
6
+ description: Adobe Commerce
7
+ auth:
8
+ type: api_key
9
+ api_key:
10
+ env_var: ADOBE-COMMERCE_API_KEY
11
+ required_fields:
12
+ - name: apiKey
13
+ label: Access Token
14
+ placeholder: 3pgsytnpxbyz0waujkw9qllcjb79s379
15
+ input_type: text
16
+ help_text: Your Adobe Commerce access token
17
+ optional: false
18
+ - name: storedomain
19
+ label: Store Domain
20
+ placeholder: yourstore.com
21
+ input_type: url
22
+ help_text: The domain of your Adobe Commerce store
23
+ optional: false
24
+ - name: storecode
25
+ label: Store Code
26
+ placeholder: default
27
+ input_type: text
28
+ help_text: The store code for your Adobe Commerce store
29
+ optional: false
30
+ setup_guide_url: https://nango.dev/docs/api-integrations/adobe-commerce
31
+ tool_source:
32
+ type: mcp
33
+ server_name: adobe-commerce
34
+ command: adobe-commerce-mcp-server
@@ -0,0 +1,26 @@
1
+ name: adobe-workfront
2
+ display: Adobe Workfront
3
+ icon: adobe
4
+ category: productivity
5
+ version: '1.0'
6
+ description: Adobe Workfront
7
+ auth:
8
+ type: oauth2
9
+ oauth2:
10
+ authorize_url: https://${connectionConfig.hostname}/integrations/oauth2/authorize
11
+ token_url: https://${connectionConfig.hostname}/integrations/oauth2/api/v1/token
12
+ scopes:
13
+ - read
14
+ token_env_var: ADOBE-WORKFRONT_ACCESS_TOKEN
15
+ required_fields:
16
+ - name: hostname
17
+ label: Hostname
18
+ placeholder: acme.my.workfront.com
19
+ input_type: text
20
+ help_text: The hostname of your Adobe Workfront account
21
+ optional: false
22
+ setup_guide_url: https://nango.dev/docs/integrations/all/adobe-workfront
23
+ tool_source:
24
+ type: mcp
25
+ server_name: adobe-workfront
26
+ command: adobe-workfront-mcp-server
@@ -0,0 +1,20 @@
1
+ name: adobe
2
+ display: Adobe
3
+ icon: adobe
4
+ category: design
5
+ version: '1.0'
6
+ description: Adobe
7
+ auth:
8
+ type: oauth2
9
+ oauth2:
10
+ authorize_url: https://ims-na1.adobelogin.com/ims/authorize/v2
11
+ token_url: https://ims-na1.adobelogin.com/ims/token/v3
12
+ scopes:
13
+ - offline_access
14
+ token_env_var: ADOBE_ACCESS_TOKEN
15
+ required_fields: []
16
+ setup_guide_url: https://nango.dev/docs/integrations/all/adobe
17
+ tool_source:
18
+ type: mcp
19
+ server_name: adobe
20
+ command: adobe-mcp-server
@@ -0,0 +1,32 @@
1
+ name: adyen
2
+ display: Adyen
3
+ icon: adyen
4
+ category: payment
5
+ version: '1.0'
6
+ description: Adyen
7
+ auth:
8
+ type: oauth2
9
+ oauth2:
10
+ authorize_url: https://ca-${connectionConfig.environment}.adyen.com/ca/ca/oauth/connect.shtml
11
+ token_url: https://oauth-${connectionConfig.environment}.adyen.com/v1/token
12
+ scopes:
13
+ - read
14
+ token_env_var: ADYEN_ACCESS_TOKEN
15
+ required_fields:
16
+ - name: environment
17
+ label: Environment
18
+ placeholder: live|test
19
+ input_type: text
20
+ help_text: The environment to use
21
+ optional: false
22
+ - name: resource
23
+ label: Resource
24
+ placeholder: kyc
25
+ input_type: text
26
+ help_text: The resource to use for your various requests
27
+ optional: false
28
+ setup_guide_url: https://nango.dev/docs/integrations/all/adyen
29
+ tool_source:
30
+ type: mcp
31
+ server_name: adyen
32
+ command: adyen-mcp-server
@@ -0,0 +1,22 @@
1
+ name: affinity-v2
2
+ display: Affinity (v2)
3
+ icon: affinity
4
+ category: crm
5
+ version: '1.0'
6
+ description: Affinity (v2)
7
+ auth:
8
+ type: api_key
9
+ api_key:
10
+ env_var: AFFINITY-V2_API_KEY
11
+ required_fields:
12
+ - name: apiKey
13
+ label: API Key
14
+ placeholder: nrlW2KR5m-qUCA-rTqKb_EUK1swERlenqn70KNMMrTM
15
+ input_type: text
16
+ help_text: The API Key for your Affinity account
17
+ optional: false
18
+ setup_guide_url: https://nango.dev/docs/integrations/all/affinity-v2
19
+ tool_source:
20
+ type: mcp
21
+ server_name: affinity-v2
22
+ command: affinity-v2-mcp-server