@oomol-lab/open-connector 1.9.1 → 1.9.2
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/assets/open-connector/catalog/apps/aisa.json +1946 -56
- package/assets/open-connector/catalog/apps/akta.json +1181 -0
- package/assets/open-connector/catalog/apps/asana.json +110 -0
- package/assets/open-connector/catalog/apps/calendly.json +103 -0
- package/assets/open-connector/catalog/apps/clickup.json +104 -0
- package/assets/open-connector/catalog/apps/cloro.json +9289 -0
- package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
- package/assets/open-connector/catalog/apps/deepseek.json +177 -0
- package/assets/open-connector/catalog/apps/defillama.json +23747 -0
- package/assets/open-connector/catalog/apps/fireflies.json +103 -0
- package/assets/open-connector/catalog/apps/fundable.json +7926 -0
- package/assets/open-connector/catalog/apps/intercom.json +110 -0
- package/assets/open-connector/catalog/apps/jira.json +110 -0
- package/assets/open-connector/catalog/apps/keenable.json +235 -0
- package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
- package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
- package/assets/open-connector/catalog/apps/magichour.json +5926 -0
- package/assets/open-connector/catalog/apps/minimax.json +24 -14
- package/assets/open-connector/catalog/apps/notion.json +731 -76
- package/assets/open-connector/catalog/apps/octen.json +5248 -0
- package/assets/open-connector/catalog/apps/openrouter.json +10 -0
- package/assets/open-connector/catalog/apps/orbit.json +3574 -0
- package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
- package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
- package/assets/open-connector/catalog/apps/ploid.json +9802 -0
- package/assets/open-connector/catalog/apps/resend.json +100 -0
- package/assets/open-connector/catalog/apps/salesforce.json +2487 -119
- package/assets/open-connector/catalog/apps/saperly.json +7056 -0
- package/assets/open-connector/catalog/apps/search1api.json +2382 -0
- package/assets/open-connector/catalog/apps/sentry.json +129 -0
- package/assets/open-connector/catalog/apps/slackbot.json +230 -1
- package/assets/open-connector/catalog/apps/surf.json +11378 -0
- package/assets/open-connector/catalog/apps/tally.json +113 -0
- package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
- package/assets/open-connector/catalog/apps/typeform.json +90 -1
- package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
- package/assets/open-connector/catalog/apps/vercel.json +110 -0
- package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
- package/assets/open-connector/catalog/apps/zoom.json +112 -0
- package/assets/open-connector/catalog/apps-index.json +1 -1
- package/package.json +1 -1
- package/src/core/json-schema.d.ts +11 -3
- package/src/core/json-schema.js +13 -3
- package/src/providers/action-contracts.generated.d.ts +23 -6
- package/src/providers/aisa/executors.js +238 -6
- package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
- package/src/providers/aisa/firecrawl-actions.js +115 -0
- package/src/providers/akta/actions.d.ts +9 -0
- package/src/providers/akta/actions.js +420 -0
- package/src/providers/akta/executors.d.ts +4 -0
- package/src/providers/akta/executors.js +103 -0
- package/src/providers/asana/executors.d.ts +2 -0
- package/src/providers/asana/executors.js +2 -0
- package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
- package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
- package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
- package/src/providers/asana/trigger-on-task-event.js +160 -0
- package/src/providers/calendly/executors.d.ts +2 -0
- package/src/providers/calendly/executors.js +2 -0
- package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
- package/src/providers/calendly/trigger-on-booking-event.js +144 -0
- package/src/providers/clickup/executors.d.ts +2 -0
- package/src/providers/clickup/executors.js +2 -0
- package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
- package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
- package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
- package/src/providers/clickup/trigger-on-task-event.js +94 -0
- package/src/providers/cloro/actions.d.ts +12 -0
- package/src/providers/cloro/actions.js +155 -0
- package/src/providers/cloro/executors.d.ts +4 -0
- package/src/providers/cloro/executors.js +67 -0
- package/src/providers/cloro/inputs.d.ts +10 -0
- package/src/providers/cloro/inputs.js +680 -0
- package/src/providers/contextdev/actions.d.ts +14 -0
- package/src/providers/contextdev/actions.js +647 -0
- package/src/providers/contextdev/executors.d.ts +4 -0
- package/src/providers/contextdev/executors.js +109 -0
- package/src/providers/contextdev/files.d.ts +3 -0
- package/src/providers/contextdev/files.js +49 -0
- package/src/providers/contextdev/input-schemas.d.ts +49 -0
- package/src/providers/contextdev/input-schemas.js +3082 -0
- package/src/providers/contextdev/output-schemas.d.ts +49 -0
- package/src/providers/contextdev/output-schemas.js +1599 -0
- package/src/providers/deepseek/executors.d.ts +0 -5
- package/src/providers/deepseek/executors.js +38 -25
- package/src/providers/defillama/actions.d.ts +24 -0
- package/src/providers/defillama/actions.js +24 -0
- package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
- package/src/providers/defillama/dimensions-definitions.js +1387 -0
- package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
- package/src/providers/defillama/ecosystem-definitions.js +758 -0
- package/src/providers/defillama/equities-definitions.d.ts +2 -0
- package/src/providers/defillama/equities-definitions.js +733 -0
- package/src/providers/defillama/executors.d.ts +4 -0
- package/src/providers/defillama/executors.js +196 -0
- package/src/providers/defillama/markets-definitions.d.ts +2 -0
- package/src/providers/defillama/markets-definitions.js +624 -0
- package/src/providers/defillama/shared-schemas.d.ts +71 -0
- package/src/providers/defillama/shared-schemas.js +157 -0
- package/src/providers/defillama/tvl-definitions.d.ts +2 -0
- package/src/providers/defillama/tvl-definitions.js +546 -0
- package/src/providers/defillama/yields-definitions.d.ts +2 -0
- package/src/providers/defillama/yields-definitions.js +766 -0
- package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
- package/src/providers/fireflies/executors.d.ts +2 -0
- package/src/providers/fireflies/executors.js +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
- package/src/providers/fundable/actions.d.ts +8 -0
- package/src/providers/fundable/actions.js +1515 -0
- package/src/providers/fundable/executors.d.ts +4 -0
- package/src/providers/fundable/executors.js +74 -0
- package/src/providers/gmail/message.d.ts +1 -6
- package/src/providers/gmail/message.js +1 -1
- package/src/providers/intercom/executors.d.ts +2 -0
- package/src/providers/intercom/executors.js +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
- package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
- package/src/providers/jira/executors.d.ts +2 -0
- package/src/providers/jira/executors.js +2 -0
- package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
- package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
- package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
- package/src/providers/jira/trigger-on-issue-event.js +116 -0
- package/src/providers/jira/trigger-resource.d.ts +4 -0
- package/src/providers/jira/trigger-resource.js +141 -0
- package/src/providers/keenable/executors.d.ts +4 -0
- package/src/providers/keenable/executors.js +20 -0
- package/src/providers/keenable/runtime.d.ts +26 -0
- package/src/providers/keenable/runtime.js +89 -0
- package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
- package/src/providers/kolsprite_mcp/actions.js +519 -0
- package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
- package/src/providers/kolsprite_mcp/executors.js +89 -0
- package/src/providers/litescrape/actions.d.ts +12 -0
- package/src/providers/litescrape/actions.js +124 -0
- package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
- package/src/providers/litescrape/airbnb-schemas.js +72 -0
- package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
- package/src/providers/litescrape/aliexpress-schemas.js +52 -0
- package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
- package/src/providers/litescrape/amazon-schemas.js +358 -0
- package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
- package/src/providers/litescrape/apartments-schemas.js +45 -0
- package/src/providers/litescrape/apple-schemas.d.ts +2 -0
- package/src/providers/litescrape/apple-schemas.js +215 -0
- package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
- package/src/providers/litescrape/ashby-schemas.js +82 -0
- package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
- package/src/providers/litescrape/baidu-schemas.js +31 -0
- package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
- package/src/providers/litescrape/bestbuy-schemas.js +56 -0
- package/src/providers/litescrape/bing-schemas.d.ts +2 -0
- package/src/providers/litescrape/bing-schemas.js +315 -0
- package/src/providers/litescrape/brave-schemas.d.ts +2 -0
- package/src/providers/litescrape/brave-schemas.js +101 -0
- package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
- package/src/providers/litescrape/copilot-schemas.js +590 -0
- package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
- package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
- package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
- package/src/providers/litescrape/ebay-schemas.js +300 -0
- package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
- package/src/providers/litescrape/etsy-schemas.js +52 -0
- package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
- package/src/providers/litescrape/eventbrite-schemas.js +43 -0
- package/src/providers/litescrape/executors.d.ts +4 -0
- package/src/providers/litescrape/executors.js +138 -0
- package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
- package/src/providers/litescrape/facebook-schemas.js +283 -0
- package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
- package/src/providers/litescrape/glassdoor-schemas.js +147 -0
- package/src/providers/litescrape/google-schemas.d.ts +2 -0
- package/src/providers/litescrape/google-schemas.js +1686 -0
- package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
- package/src/providers/litescrape/homedepot-schemas.js +58 -0
- package/src/providers/litescrape/homes-schemas.d.ts +2 -0
- package/src/providers/litescrape/homes-schemas.js +45 -0
- package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
- package/src/providers/litescrape/ikea-schemas.js +56 -0
- package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
- package/src/providers/litescrape/indeed-schemas.js +141 -0
- package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
- package/src/providers/litescrape/instagram-schemas.js +234 -0
- package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
- package/src/providers/litescrape/kroger-schemas.js +62 -0
- package/src/providers/litescrape/levels-schemas.d.ts +2 -0
- package/src/providers/litescrape/levels-schemas.js +153 -0
- package/src/providers/litescrape/naver-schemas.d.ts +2 -0
- package/src/providers/litescrape/naver-schemas.js +107 -0
- package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
- package/src/providers/litescrape/realtor-schemas.js +47 -0
- package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
- package/src/providers/litescrape/redfin-schemas.js +112 -0
- package/src/providers/litescrape/shared.d.ts +9 -0
- package/src/providers/litescrape/shared.js +1 -0
- package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
- package/src/providers/litescrape/sprouts-schemas.js +72 -0
- package/src/providers/litescrape/target-schemas.d.ts +2 -0
- package/src/providers/litescrape/target-schemas.js +56 -0
- package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
- package/src/providers/litescrape/tiktok-schemas.js +625 -0
- package/src/providers/litescrape/tools.d.ts +2 -0
- package/src/providers/litescrape/tools.js +88 -0
- package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
- package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
- package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
- package/src/providers/litescrape/walmart-schemas.js +52 -0
- package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
- package/src/providers/litescrape/wayfair-schemas.js +52 -0
- package/src/providers/litescrape/web-schemas.d.ts +2 -0
- package/src/providers/litescrape/web-schemas.js +463 -0
- package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
- package/src/providers/litescrape/wholefoods-schemas.js +56 -0
- package/src/providers/litescrape/x-schemas.d.ts +2 -0
- package/src/providers/litescrape/x-schemas.js +128 -0
- package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
- package/src/providers/litescrape/yahoo-schemas.js +234 -0
- package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
- package/src/providers/litescrape/yandex-schemas.js +179 -0
- package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
- package/src/providers/litescrape/yelp-schemas.js +130 -0
- package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
- package/src/providers/litescrape/youtube-schemas.js +128 -0
- package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
- package/src/providers/litescrape/zillow-schemas.js +128 -0
- package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
- package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
- package/src/providers/magichour/actions.d.ts +22 -0
- package/src/providers/magichour/actions.js +308 -0
- package/src/providers/magichour/audio-schemas.d.ts +2 -0
- package/src/providers/magichour/audio-schemas.js +54 -0
- package/src/providers/magichour/executors.d.ts +4 -0
- package/src/providers/magichour/executors.js +115 -0
- package/src/providers/magichour/image-schemas.d.ts +2 -0
- package/src/providers/magichour/image-schemas.js +443 -0
- package/src/providers/magichour/project-schemas.d.ts +8 -0
- package/src/providers/magichour/project-schemas.js +65 -0
- package/src/providers/magichour/shared-schemas.d.ts +8 -0
- package/src/providers/magichour/shared-schemas.js +18 -0
- package/src/providers/magichour/utility-schemas.d.ts +11 -0
- package/src/providers/magichour/utility-schemas.js +150 -0
- package/src/providers/magichour/video-schemas.d.ts +2 -0
- package/src/providers/magichour/video-schemas.js +629 -0
- package/src/providers/magichour/voices.d.ts +1 -0
- package/src/providers/magichour/voices.js +1268 -0
- package/src/providers/minimax/executors.js +19 -4
- package/src/providers/minimax/text-models.d.ts +2 -0
- package/src/providers/minimax/text-models.js +34 -0
- package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
- package/src/providers/moneyforward_mcp/manifest.js +1 -1
- package/src/providers/notion/executors.js +36 -3
- package/src/providers/octen/actions.d.ts +6 -0
- package/src/providers/octen/actions.js +919 -0
- package/src/providers/octen/executors.d.ts +4 -0
- package/src/providers/octen/executors.js +125 -0
- package/src/providers/octen/inputs.d.ts +2 -0
- package/src/providers/octen/inputs.js +2434 -0
- package/src/providers/octen/research.d.ts +1 -0
- package/src/providers/octen/research.js +86 -0
- package/src/providers/openrouter/executors.js +7 -4
- package/src/providers/orbit/actions.d.ts +2 -0
- package/src/providers/orbit/actions.js +3030 -0
- package/src/providers/orbit/executors.d.ts +4 -0
- package/src/providers/orbit/executors.js +106 -0
- package/src/providers/orbit/routes.d.ts +9 -0
- package/src/providers/orbit/routes.js +170 -0
- package/src/providers/pandadoc/executors.d.ts +2 -0
- package/src/providers/pandadoc/executors.js +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
- package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
- package/src/providers/pipedrive/executors.d.ts +2 -0
- package/src/providers/pipedrive/executors.js +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
- package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
- package/src/providers/ploid/actions.d.ts +16 -0
- package/src/providers/ploid/actions.js +23 -0
- package/src/providers/ploid/endpoints.json +8440 -0
- package/src/providers/ploid/executors.d.ts +4 -0
- package/src/providers/ploid/executors.js +119 -0
- package/src/providers/provider-runtime.d.ts +13 -0
- package/src/providers/provider-runtime.js +37 -4
- package/src/providers/registry.generated.js +17 -0
- package/src/providers/resend/executors.d.ts +2 -0
- package/src/providers/resend/executors.js +2 -0
- package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
- package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
- package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
- package/src/providers/resend/trigger-on-email-event.js +125 -0
- package/src/providers/salesforce/chatter-routes.d.ts +107 -0
- package/src/providers/salesforce/chatter-routes.js +140 -0
- package/src/providers/salesforce/context.d.ts +2 -2
- package/src/providers/salesforce/context.js +7 -4
- package/src/providers/salesforce/executors.js +10 -0
- package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
- package/src/providers/salesforce/runtime-approvals.js +52 -0
- package/src/providers/salesforce/runtime-base.js +14 -3
- package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
- package/src/providers/salesforce/runtime-chatter.js +78 -0
- package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
- package/src/providers/salesforce/runtime-knowledge.js +34 -0
- package/src/providers/salesforce/runtime-leads.d.ts +2 -0
- package/src/providers/salesforce/runtime-leads.js +117 -0
- package/src/providers/salesforce/runtime-platform.d.ts +2 -0
- package/src/providers/salesforce/runtime-platform.js +67 -0
- package/src/providers/saperly/actions.d.ts +17 -0
- package/src/providers/saperly/actions.js +869 -0
- package/src/providers/saperly/executors.d.ts +4 -0
- package/src/providers/saperly/executors.js +113 -0
- package/src/providers/saperly/schemas.d.ts +33 -0
- package/src/providers/saperly/schemas.js +601 -0
- package/src/providers/search1api/actions.d.ts +2 -0
- package/src/providers/search1api/actions.js +39 -0
- package/src/providers/search1api/executors.d.ts +4 -0
- package/src/providers/search1api/executors.js +72 -0
- package/src/providers/search1api/runtime.d.ts +3 -0
- package/src/providers/search1api/runtime.js +44 -0
- package/src/providers/search1api/schemas.d.ts +3 -0
- package/src/providers/search1api/schemas.js +1834 -0
- package/src/providers/sentry/executors.d.ts +2 -0
- package/src/providers/sentry/executors.js +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
- package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
- package/src/providers/sf_express/runtime.d.ts +0 -16
- package/src/providers/sf_express/runtime.js +2 -2
- package/src/providers/slack/runtime.d.ts +6 -1
- package/src/providers/slack/runtime.js +21 -0
- package/src/providers/slackbot/actions.js +17 -1
- package/src/providers/slackbot/executors.d.ts +2 -0
- package/src/providers/slackbot/executors.js +5 -1
- package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
- package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
- package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
- package/src/providers/slackbot/trigger-on-event.js +23 -0
- package/src/providers/surf/actions.d.ts +21 -0
- package/src/providers/surf/actions.js +26 -0
- package/src/providers/surf/discovery-definitions.d.ts +2 -0
- package/src/providers/surf/discovery-definitions.js +871 -0
- package/src/providers/surf/equity-definitions.d.ts +2 -0
- package/src/providers/surf/equity-definitions.js +322 -0
- package/src/providers/surf/executors.d.ts +4 -0
- package/src/providers/surf/executors.js +131 -0
- package/src/providers/surf/market-definitions.d.ts +2 -0
- package/src/providers/surf/market-definitions.js +885 -0
- package/src/providers/surf/onchain-definitions.d.ts +2 -0
- package/src/providers/surf/onchain-definitions.js +901 -0
- package/src/providers/surf/prediction-definitions.d.ts +2 -0
- package/src/providers/surf/prediction-definitions.js +683 -0
- package/src/providers/surf/shared-schemas.d.ts +18 -0
- package/src/providers/surf/shared-schemas.js +37 -0
- package/src/providers/tally/executors.d.ts +2 -0
- package/src/providers/tally/executors.js +2 -0
- package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
- package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
- package/src/providers/tally/trigger-on-form-response.js +166 -0
- package/src/providers/tinyfish/actions.d.ts +6 -0
- package/src/providers/tinyfish/actions.js +19 -0
- package/src/providers/tinyfish/agent-actions.d.ts +2 -0
- package/src/providers/tinyfish/agent-actions.js +268 -0
- package/src/providers/tinyfish/data-actions.d.ts +2 -0
- package/src/providers/tinyfish/data-actions.js +186 -0
- package/src/providers/tinyfish/data-schemas.d.ts +7 -0
- package/src/providers/tinyfish/data-schemas.js +103 -0
- package/src/providers/tinyfish/endpoints.d.ts +14 -0
- package/src/providers/tinyfish/endpoints.js +1 -0
- package/src/providers/tinyfish/executors.d.ts +4 -0
- package/src/providers/tinyfish/executors.js +133 -0
- package/src/providers/tinyfish/management-actions.d.ts +2 -0
- package/src/providers/tinyfish/management-actions.js +524 -0
- package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
- package/src/providers/tinyfish/monitor-schemas.js +65 -0
- package/src/providers/tinyfish/research-schemas.d.ts +6 -0
- package/src/providers/tinyfish/research-schemas.js +71 -0
- package/src/providers/trello/executors.js +5 -2
- package/src/providers/typeform/executors.d.ts +2 -0
- package/src/providers/typeform/executors.js +2 -0
- package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
- package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
- package/src/providers/typeform/trigger-on-form-response.js +68 -0
- package/src/providers/vaquill/actions.d.ts +13 -0
- package/src/providers/vaquill/actions.js +529 -0
- package/src/providers/vaquill/executors.d.ts +4 -0
- package/src/providers/vaquill/executors.js +141 -0
- package/src/providers/vaquill/schemas.d.ts +67 -0
- package/src/providers/vaquill/schemas.js +4953 -0
- package/src/providers/vercel/executors.d.ts +2 -0
- package/src/providers/vercel/executors.js +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
- package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
- package/src/providers/weixin_bot/runtime.d.ts +0 -1
- package/src/providers/weixin_bot/runtime.js +1 -1
- package/src/providers/weixin_store/access-token.d.ts +3 -3
- package/src/providers/weixin_store/access-token.js +15 -7
- package/src/providers/weixin_store/executors.js +214 -1
- package/src/providers/zoom/executors.d.ts +2 -0
- package/src/providers/zoom/executors.js +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
- package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
- package/src/server/api/action-example.js +12 -1
- package/src/server/api/pattern-example.js +35 -1
- package/src/server/api/trigger-routes.js +1 -1
- package/src/server/connect-app.js +1 -0
- package/src/triggers/common/integration.d.ts +15 -3
- package/src/triggers/common/integration.js +5 -0
- package/src/triggers/common/proxy.d.ts +7 -0
- package/src/triggers/managed-webhook.d.ts +13 -0
- package/src/triggers/managed-webhook.js +48 -0
- package/src/triggers/request.d.ts +5 -1
- package/src/triggers/request.js +2 -0
- package/src/triggers/resources.d.ts +8 -2
- package/src/triggers/resources.js +31 -0
- package/src/triggers/signature.d.ts +3 -3
- package/src/triggers/signature.js +4 -6
- package/src/triggers/sources/configuration-schema.d.ts +5 -0
- package/src/triggers/sources/configuration-schema.js +118 -0
- package/src/triggers/sources/configuration.d.ts +115 -0
- package/src/triggers/sources/configuration.js +1 -0
- package/src/triggers/sources/definition.d.ts +61 -0
- package/src/triggers/sources/definition.js +3 -0
- package/src/triggers/sources/feishu-demands.d.ts +6 -0
- package/src/triggers/sources/feishu-demands.js +24 -0
- package/src/triggers/sources/feishu-events.d.ts +19 -0
- package/src/triggers/sources/feishu-events.js +108 -0
- package/src/triggers/sources/feishu.d.ts +3 -0
- package/src/triggers/sources/feishu.js +85 -0
- package/src/triggers/sources/fireflies.d.ts +3 -0
- package/src/triggers/sources/fireflies.js +100 -0
- package/src/triggers/sources/intercom.d.ts +3 -0
- package/src/triggers/sources/intercom.js +86 -0
- package/src/triggers/sources/jira.d.ts +3 -0
- package/src/triggers/sources/jira.js +120 -0
- package/src/triggers/sources/operation.d.ts +42 -0
- package/src/triggers/sources/operation.js +146 -0
- package/src/triggers/sources/sentry.d.ts +3 -0
- package/src/triggers/sources/sentry.js +125 -0
- package/src/triggers/sources/signature.d.ts +1 -0
- package/src/triggers/sources/signature.js +10 -0
- package/src/triggers/sources/slack.d.ts +3 -0
- package/src/triggers/sources/slack.js +127 -0
- package/src/triggers/sources/zoom.d.ts +3 -0
- package/src/triggers/sources/zoom.js +113 -0
- package/src/triggers/trigger-runner.d.ts +2 -0
- package/src/triggers/trigger-runner.js +52 -16
|
@@ -0,0 +1,1515 @@
|
|
|
1
|
+
import { s } from "../../core/json-schema.js";
|
|
2
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
3
|
+
const financingTypesSchema = s.array("Financing types with optional modifiers (pre, extension)", s.object("Financing types item details.", {
|
|
4
|
+
type: s.stringEnum("Financing type.", [
|
|
5
|
+
"SERIES_A",
|
|
6
|
+
"SERIES_B",
|
|
7
|
+
"SERIES_C",
|
|
8
|
+
"SERIES_D",
|
|
9
|
+
"SERIES_E",
|
|
10
|
+
"SERIES_F",
|
|
11
|
+
"SERIES_G",
|
|
12
|
+
"SERIES_H",
|
|
13
|
+
"SERIES_I",
|
|
14
|
+
"SERIES_J",
|
|
15
|
+
"SERIES_K",
|
|
16
|
+
"SERIES_L",
|
|
17
|
+
"SERIES_M",
|
|
18
|
+
"SEED",
|
|
19
|
+
"SAFE",
|
|
20
|
+
"CONVERTIBLE_NOTE",
|
|
21
|
+
"EQUITY",
|
|
22
|
+
"PREFERRED",
|
|
23
|
+
"SECONDARY_MARKET",
|
|
24
|
+
"DEBT_FINANCING",
|
|
25
|
+
"GRANT",
|
|
26
|
+
"NON_EQUITY_ASSISTANCE",
|
|
27
|
+
"CROWDFUNDING",
|
|
28
|
+
"INITIAL_COIN_OFFERING",
|
|
29
|
+
"FUNDING_ROUND",
|
|
30
|
+
]),
|
|
31
|
+
pre: s.boolean({
|
|
32
|
+
description: "Pre-round modifier (e.g., Pre-Seed, Pre-Series A)",
|
|
33
|
+
default: false,
|
|
34
|
+
}),
|
|
35
|
+
extension: s.boolean({ description: "Extension round modifier", default: false }),
|
|
36
|
+
}, { required: ["type"] }));
|
|
37
|
+
const locationsSchema = s.array("Location permalinks. Use /location/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Locations item.", { minLength: 1 }));
|
|
38
|
+
const industriesSchema = s.array("Industry permalinks. Use /industry/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Industries item.", { minLength: 1 }));
|
|
39
|
+
const superCategoriesSchema = s.array("Super category permalinks (automatically includes related industries). Use /industry/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Super categories item.", { minLength: 1 }));
|
|
40
|
+
const employeeCountSchema = s.array("Employee count ranges. Valid: 1-10, 11-50, 51-100, 101-250, 251-500, 501-1000, 1001-5000, 5001-10000, 10001+", s.stringEnum("Employee count item.", [
|
|
41
|
+
"1-10",
|
|
42
|
+
"11-50",
|
|
43
|
+
"51-100",
|
|
44
|
+
"101-250",
|
|
45
|
+
"251-500",
|
|
46
|
+
"501-1000",
|
|
47
|
+
"1001-5000",
|
|
48
|
+
"5001-10000",
|
|
49
|
+
"10001+",
|
|
50
|
+
]));
|
|
51
|
+
const pageSchema = s.integer("Page number (0-based)", { minimum: 0, default: 0 });
|
|
52
|
+
const pageSizeSchema = s.integer("Number of results per page", {
|
|
53
|
+
minimum: 1,
|
|
54
|
+
maximum: 500,
|
|
55
|
+
default: 10,
|
|
56
|
+
});
|
|
57
|
+
const dealSchema = s.object("Deal details.", {
|
|
58
|
+
id: s.string("Unique identifier for the deal", { format: "uuid" }),
|
|
59
|
+
round_type: s.nullable(s.stringEnum("Type of funding round", [
|
|
60
|
+
"SERIES_A",
|
|
61
|
+
"SERIES_B",
|
|
62
|
+
"SERIES_C",
|
|
63
|
+
"SERIES_D",
|
|
64
|
+
"SERIES_E",
|
|
65
|
+
"SERIES_F",
|
|
66
|
+
"SERIES_G",
|
|
67
|
+
"SERIES_H",
|
|
68
|
+
"SERIES_I",
|
|
69
|
+
"SERIES_J",
|
|
70
|
+
"SERIES_K",
|
|
71
|
+
"SERIES_L",
|
|
72
|
+
"SERIES_M",
|
|
73
|
+
"SEED",
|
|
74
|
+
"SAFE",
|
|
75
|
+
"CONVERTIBLE_NOTE",
|
|
76
|
+
"EQUITY",
|
|
77
|
+
"PREFERRED",
|
|
78
|
+
"SECONDARY_MARKET",
|
|
79
|
+
"DEBT_FINANCING",
|
|
80
|
+
"GRANT",
|
|
81
|
+
"NON_EQUITY_ASSISTANCE",
|
|
82
|
+
"CROWDFUNDING",
|
|
83
|
+
"INITIAL_COIN_OFFERING",
|
|
84
|
+
"FUNDING_ROUND",
|
|
85
|
+
])),
|
|
86
|
+
extension: s.nullable(s.boolean("Whether this is an extension round")),
|
|
87
|
+
intermediate: s.nullable(s.stringEnum("Intermediate round designation", [
|
|
88
|
+
"PLUS",
|
|
89
|
+
"NONE",
|
|
90
|
+
"ONE",
|
|
91
|
+
"TWO",
|
|
92
|
+
"THREE",
|
|
93
|
+
"FOUR",
|
|
94
|
+
"FIVE",
|
|
95
|
+
"SIX",
|
|
96
|
+
"SEVEN",
|
|
97
|
+
"EIGHT",
|
|
98
|
+
])),
|
|
99
|
+
pre: s.nullable(s.boolean("Whether this is a pre-round (e.g., Pre-Series A)")),
|
|
100
|
+
date: s.nullable(s.string("Announcement date of the funding round", { format: "date-time" })),
|
|
101
|
+
created_at: s.nullable(s.string("Date the deal was added to the system", { format: "date-time" })),
|
|
102
|
+
total_round_raised: s.nullable(s.number("Total amount raised in the round (USD)")),
|
|
103
|
+
deal_descriptions: s.nullable(s.object("deal descriptions details.", {}, {
|
|
104
|
+
required: [],
|
|
105
|
+
additionalProperties: true,
|
|
106
|
+
})),
|
|
107
|
+
company_id: s.string("Unique identifier for the company", { format: "uuid" }),
|
|
108
|
+
investor_ids: s.array("UUIDs of firm investors participating in this deal. Angels are surfaced separately in `angel_investor_ids`.", s.string("Investor ids item.", { format: "uuid" })),
|
|
109
|
+
angel_investor_ids: s.array("UUIDs of angel investors (people) who participated in this deal. Resolve via `/people/{id}`. Empty array when no angels.", s.string("Angel investor ids item.", { format: "uuid" })),
|
|
110
|
+
financings: s.array("Detailed financing information for deals that have multiple financing types", s.object("financings record.", {}, {
|
|
111
|
+
required: [],
|
|
112
|
+
additionalProperties: true,
|
|
113
|
+
})),
|
|
114
|
+
valuation: s.nullable(s.object("Valuation information for this deal", {}, {
|
|
115
|
+
required: [],
|
|
116
|
+
additionalProperties: true,
|
|
117
|
+
})),
|
|
118
|
+
articles: s.array("Related articles/sources for this deal.\nAlways included for every API tier. Empty when the deal has no related sources.", s.object("articles record.", {}, {
|
|
119
|
+
required: [],
|
|
120
|
+
additionalProperties: true,
|
|
121
|
+
})),
|
|
122
|
+
}, {
|
|
123
|
+
required: [],
|
|
124
|
+
additionalProperties: true,
|
|
125
|
+
});
|
|
126
|
+
const dealInvestorSchema = s.object("A firm investor on a deal. Angels are returned separately in the `angel_investors` array on /deals/{id}/investors.", {
|
|
127
|
+
id: s.string("Unique identifier for the firm investor (parent_investor UUID)", {
|
|
128
|
+
format: "uuid",
|
|
129
|
+
}),
|
|
130
|
+
name: s.string("Investor name"),
|
|
131
|
+
lead_investor: s.nullable(s.boolean("Whether this investor led the round")),
|
|
132
|
+
personnel: s.array("Key personnel (partners) at this firm involved in this deal. Each entry is a person record joinable to /people/{id}.", s.object("personnel record.", {}, {
|
|
133
|
+
required: [],
|
|
134
|
+
additionalProperties: true,
|
|
135
|
+
})),
|
|
136
|
+
financing_type: s.nullable(s.string("The financing type this investor participated in")),
|
|
137
|
+
domain: s.nullable(s.string("Investor's website domain")),
|
|
138
|
+
linkedin: s.nullable(s.string("Investor's LinkedIn URL")),
|
|
139
|
+
crunchbase: s.nullable(s.string("Investor's Crunchbase URL")),
|
|
140
|
+
}, {
|
|
141
|
+
required: [],
|
|
142
|
+
additionalProperties: true,
|
|
143
|
+
});
|
|
144
|
+
const angelInvestorSchema = s.object("An angel (individual) investor on a deal. Returned in the `angel_investors` array on /deals/{id}/investors.", {
|
|
145
|
+
id: s.string("Person UUID for the angel. Resolves via /people/{id}.", { format: "uuid" }),
|
|
146
|
+
name: s.nullable(s.string("Display name of the record.")),
|
|
147
|
+
financing_type: s.nullable(s.string("The financing type this angel participated in.")),
|
|
148
|
+
linkedin: s.nullable(s.string("Linkedin.")),
|
|
149
|
+
crunchbase: s.nullable(s.string("Crunchbase.")),
|
|
150
|
+
twitter: s.nullable(s.string("Twitter.")),
|
|
151
|
+
}, {
|
|
152
|
+
required: [],
|
|
153
|
+
additionalProperties: true,
|
|
154
|
+
});
|
|
155
|
+
const latestDealSchema = s.nullable(s.looseObject("Details of the company's most recent funding round", {
|
|
156
|
+
id: s.nullable(s.string("Unique identifier for the deal", { format: "uuid" })),
|
|
157
|
+
type: s.nullable(s.string("Type of funding round")),
|
|
158
|
+
total_round_raised: s.nullable(s.number("Total amount raised in the round (USD)")),
|
|
159
|
+
date: s.nullable(s.string("Date of the funding round", { format: "date-time" })),
|
|
160
|
+
extension: s.nullable(s.boolean("Whether this is an extension round")),
|
|
161
|
+
pre: s.nullable(s.boolean("Whether this is a pre-round (e.g., Pre-Series A)")),
|
|
162
|
+
intermediate: s.nullable(s.string("Intermediate round designation")),
|
|
163
|
+
description: s.nullable(s.looseObject("Descriptions of the latest funding round.", {
|
|
164
|
+
short_description: s.nullable(s.string("Brief description of the deal")),
|
|
165
|
+
long_description: s.nullable(s.string("Detailed description of the deal")),
|
|
166
|
+
})),
|
|
167
|
+
investors: s.array("UUIDs of firm investors participating in this deal. Angels are surfaced separately in `angel_investor_ids`.", s.string("Fundable investor UUID.", { format: "uuid" })),
|
|
168
|
+
angel_investor_ids: s.array("UUIDs of angel investors (people) on this latest deal. Resolve via `/people/{id}`. Empty array when no angels.", s.string("Fundable person UUID.", { format: "uuid" })),
|
|
169
|
+
financings: s.array("Individual financing tranches in this deal", s.looseObject("Financing tranche details.", {
|
|
170
|
+
id: s.string("Unique identifier for the financing", { format: "uuid" }),
|
|
171
|
+
type: s.string("Type of financing"),
|
|
172
|
+
size_usd: s.nullable(s.number("Financing amount in USD")),
|
|
173
|
+
size_native: s.nullable(s.number("Financing amount in native currency")),
|
|
174
|
+
currency: s.nullable(s.string("Currency code for size_native")),
|
|
175
|
+
})),
|
|
176
|
+
articles: s.array("Related articles/sources for the latest deal. Always included; empty when no sources exist.", s.looseObject("Article or source details for the latest deal.")),
|
|
177
|
+
}));
|
|
178
|
+
const personCurrentCompanySchema = s.nullable(s.looseObject("Current employer summary. Null when the person has no current employer.", {
|
|
179
|
+
id: s.string("Fundable company UUID.", { format: "uuid" }),
|
|
180
|
+
name: s.nullable(s.string("Current employer name.")),
|
|
181
|
+
permalink: s.nullable(s.string("Fundable permalink for the company")),
|
|
182
|
+
domain: s.nullable(s.string("Current employer domain.")),
|
|
183
|
+
}));
|
|
184
|
+
const companyDetailsSchema = s.object("Full company details returned by the /company endpoint", {
|
|
185
|
+
id: s.string("Unique identifier for the company", { format: "uuid" }),
|
|
186
|
+
name: s.nullable(s.string("Company name")),
|
|
187
|
+
legal_name: s.nullable(s.string("Legal name of the company")),
|
|
188
|
+
guru_permalink: s.nullable(s.string("Fundable permalink for the company")),
|
|
189
|
+
domain: s.nullable(s.string("Company website domain")),
|
|
190
|
+
region: s.nullable(s.string("Company region")),
|
|
191
|
+
operating_status: s.nullable(s.string("Current operating status of the company")),
|
|
192
|
+
founded_date: s.nullable(s.string("Date and time the company was founded", { format: "date-time" })),
|
|
193
|
+
acquired: s.nullable(s.boolean("Whether the company has been acquired")),
|
|
194
|
+
short_description: s.nullable(s.string("Brief description of the company")),
|
|
195
|
+
long_description: s.nullable(s.string("Full description of the company. Available on /company endpoint; may be null on /companies list endpoint.")),
|
|
196
|
+
num_employees: s.nullable(s.string("Number of employees range")),
|
|
197
|
+
linkedin: s.nullable(s.string("LinkedIn profile URL", { format: "uri" })),
|
|
198
|
+
twitter: s.nullable(s.string("Twitter profile URL", { format: "uri" })),
|
|
199
|
+
facebook: s.nullable(s.string("Facebook profile URL", { format: "uri" })),
|
|
200
|
+
pitchbook: s.nullable(s.string("PitchBook profile URL", { format: "uri" })),
|
|
201
|
+
crunchbase: s.nullable(s.string("Crunchbase profile URL", { format: "uri" })),
|
|
202
|
+
address: s.nullable(s.string("Company address")),
|
|
203
|
+
ipo_status: s.nullable(s.stringEnum("IPO status of the company", ["public", "private"])),
|
|
204
|
+
num_funding_rounds: s.nullable(s.integer("Number of funding rounds")),
|
|
205
|
+
num_investors: s.nullable(s.integer("Number of investors")),
|
|
206
|
+
total_raised: s.nullable(s.number("Total amount raised (USD)")),
|
|
207
|
+
latest_valuation_usd: s.nullable(s.number("Latest valuation (USD)")),
|
|
208
|
+
latest_valuation_date: s.nullable(s.string("Date of latest valuation", { format: "date-time" })),
|
|
209
|
+
industries: s.array("Industries the company operates in", s.object("industries record.", {}, {
|
|
210
|
+
required: [],
|
|
211
|
+
additionalProperties: true,
|
|
212
|
+
})),
|
|
213
|
+
location: s.object("Company location hierarchy", {}, {
|
|
214
|
+
required: [],
|
|
215
|
+
additionalProperties: true,
|
|
216
|
+
}),
|
|
217
|
+
latest_deal: latestDealSchema,
|
|
218
|
+
all_investor_ids: s.nullable(s.array("UUIDs of all parent investors across all funding rounds for this company", s.string("All investor ids item.", { format: "uuid" }))),
|
|
219
|
+
similarity: s.nullable(s.number("Semantic similarity score (0-1). Only present when using search_query parameter.")),
|
|
220
|
+
}, {
|
|
221
|
+
required: [],
|
|
222
|
+
additionalProperties: true,
|
|
223
|
+
});
|
|
224
|
+
const companyDealSchema = s.object("Deal returned by the /company/deals endpoint. Same shape as the Deal schema in the Deals API.", {
|
|
225
|
+
id: s.string("Unique Fundable record identifier.", { format: "uuid" }),
|
|
226
|
+
round_type: s.nullable(s.string("Round type.")),
|
|
227
|
+
extension: s.nullable(s.boolean("Whether to filter for extension rounds.")),
|
|
228
|
+
intermediate: s.nullable(s.string("Intermediate.")),
|
|
229
|
+
pre: s.nullable(s.boolean("Whether to filter for pre-round financing.")),
|
|
230
|
+
date: s.nullable(s.string("Date.", { format: "date-time" })),
|
|
231
|
+
created_at: s.nullable(s.string("Created at.", { format: "date-time" })),
|
|
232
|
+
total_round_raised: s.nullable(s.number("Total round raised.")),
|
|
233
|
+
deal_descriptions: s.nullable(s.object("deal descriptions details.", {}, {
|
|
234
|
+
required: [],
|
|
235
|
+
additionalProperties: true,
|
|
236
|
+
})),
|
|
237
|
+
company_id: s.string("Company id.", { format: "uuid" }),
|
|
238
|
+
investor_ids: s.array("UUIDs of firm investors participating in this deal. Angels are surfaced separately in `angel_investor_ids`.", s.string("Investor ids item.", { format: "uuid" })),
|
|
239
|
+
angel_investor_ids: s.array("UUIDs of angel investors (people) on this deal. Resolve via `/people/{id}`. Empty array when no angels.", s.string("Angel investor ids item.", { format: "uuid" })),
|
|
240
|
+
financings: s.array("Financings values.", s.object("financings record.", {}, {
|
|
241
|
+
required: [],
|
|
242
|
+
additionalProperties: true,
|
|
243
|
+
})),
|
|
244
|
+
valuation: s.nullable(s.object("valuation details.", {}, {
|
|
245
|
+
required: [],
|
|
246
|
+
additionalProperties: true,
|
|
247
|
+
})),
|
|
248
|
+
articles: s.array("Related articles/sources for this deal. Always included; empty when no sources exist.", s.object("articles record.", {}, {
|
|
249
|
+
required: [],
|
|
250
|
+
additionalProperties: true,
|
|
251
|
+
})),
|
|
252
|
+
}, {
|
|
253
|
+
required: [],
|
|
254
|
+
additionalProperties: true,
|
|
255
|
+
});
|
|
256
|
+
const companySearchResultSchema = s.object("CompanySearchResult details.", {
|
|
257
|
+
id: s.string("Unique identifier for the company", { format: "uuid" }),
|
|
258
|
+
guru_permalink: s.nullable(s.string("Fundable permalink for the company")),
|
|
259
|
+
name: s.string("Company name"),
|
|
260
|
+
short_description: s.nullable(s.string("Brief description of the company")),
|
|
261
|
+
relevance_score: s.number("Search relevance score (0-1)"),
|
|
262
|
+
domain: s.nullable(s.string("Company website domain")),
|
|
263
|
+
linkedin: s.nullable(s.string("LinkedIn profile URL")),
|
|
264
|
+
crunchbase: s.nullable(s.string("Crunchbase profile URL")),
|
|
265
|
+
}, {
|
|
266
|
+
required: [],
|
|
267
|
+
additionalProperties: true,
|
|
268
|
+
});
|
|
269
|
+
const companyListItemSchema = s.object("CompanyListItem details.", {
|
|
270
|
+
id: s.string("Unique identifier for the company", { format: "uuid" }),
|
|
271
|
+
name: s.nullable(s.string("Company name")),
|
|
272
|
+
legal_name: s.nullable(s.string("Legal name of the company")),
|
|
273
|
+
guru_permalink: s.nullable(s.string("Fundable permalink for the company")),
|
|
274
|
+
domain: s.nullable(s.string("Company website domain")),
|
|
275
|
+
region: s.nullable(s.string("Company region")),
|
|
276
|
+
operating_status: s.nullable(s.string("Current operating status of the company")),
|
|
277
|
+
founded_date: s.nullable(s.string("Date and time the company was founded", { format: "date-time" })),
|
|
278
|
+
acquired: s.nullable(s.boolean("Whether the company has been acquired")),
|
|
279
|
+
short_description: s.nullable(s.string("Brief description of the company")),
|
|
280
|
+
long_description: s.nullable(s.string("Full description of the company. Available on /company endpoint; may be null on /companies list endpoint.")),
|
|
281
|
+
num_employees: s.nullable(s.string("Number of employees range")),
|
|
282
|
+
linkedin: s.nullable(s.string("LinkedIn profile URL", { format: "uri" })),
|
|
283
|
+
twitter: s.nullable(s.string("Twitter profile URL", { format: "uri" })),
|
|
284
|
+
facebook: s.nullable(s.string("Facebook profile URL", { format: "uri" })),
|
|
285
|
+
pitchbook: s.nullable(s.string("PitchBook profile URL", { format: "uri" })),
|
|
286
|
+
crunchbase: s.nullable(s.string("Crunchbase profile URL", { format: "uri" })),
|
|
287
|
+
address: s.nullable(s.string("Company address")),
|
|
288
|
+
ipo_status: s.nullable(s.stringEnum("IPO status of the company", ["public", "private"])),
|
|
289
|
+
num_funding_rounds: s.nullable(s.integer("Number of funding rounds")),
|
|
290
|
+
num_investors: s.nullable(s.integer("Number of investors")),
|
|
291
|
+
total_raised: s.nullable(s.number("Total amount raised (USD)")),
|
|
292
|
+
latest_valuation_usd: s.nullable(s.number("Latest valuation (USD)")),
|
|
293
|
+
latest_valuation_date: s.nullable(s.string("Date of latest valuation", { format: "date-time" })),
|
|
294
|
+
industries: s.array("Industries the company operates in", s.object("industries record.", {}, {
|
|
295
|
+
required: [],
|
|
296
|
+
additionalProperties: true,
|
|
297
|
+
})),
|
|
298
|
+
location: s.object("Company location hierarchy", {}, {
|
|
299
|
+
required: [],
|
|
300
|
+
additionalProperties: true,
|
|
301
|
+
}),
|
|
302
|
+
latest_deal: latestDealSchema,
|
|
303
|
+
all_investor_ids: s.nullable(s.array("UUIDs of all parent investors across all funding rounds for this company", s.string("All investor ids item.", { format: "uuid" }))),
|
|
304
|
+
similarity: s.nullable(s.number("Semantic similarity score (0-1). Only present when using search_query parameter.")),
|
|
305
|
+
}, {
|
|
306
|
+
required: [],
|
|
307
|
+
additionalProperties: true,
|
|
308
|
+
});
|
|
309
|
+
const investorListItemSchema = s.object("InvestorListItem details.", {
|
|
310
|
+
id: s.string("Unique identifier for the investor", { format: "uuid" }),
|
|
311
|
+
name: s.string("Investor name"),
|
|
312
|
+
total_deal_count: s.integer("Total number of deals"),
|
|
313
|
+
lead_deal_count: s.integer("Number of deals where investor was lead"),
|
|
314
|
+
deal_count_last_12_months: s.integer("Deals in the last 12 months"),
|
|
315
|
+
lead_deal_count_last_12_months: s.integer("Lead deals in the last 12 months"),
|
|
316
|
+
most_recent_deal_date: s.nullable(s.string("Date of the most recent deal", { format: "date-time" })),
|
|
317
|
+
guru_permalink: s.string("Fundable permalink for the investor"),
|
|
318
|
+
domain: s.nullable(s.string("Investor domain")),
|
|
319
|
+
website: s.nullable(s.string("Investor website URL", { format: "uri" })),
|
|
320
|
+
linkedin: s.nullable(s.string("Investor LinkedIn URL", { format: "uri" })),
|
|
321
|
+
pitchbook: s.nullable(s.string("Investor PitchBook URL", { format: "uri" })),
|
|
322
|
+
crunchbase: s.nullable(s.string("Investor Crunchbase URL", { format: "uri" })),
|
|
323
|
+
description: s.nullable(s.string("Description of the investor")),
|
|
324
|
+
legal_name: s.nullable(s.string("Legal name of the investor")),
|
|
325
|
+
num_employees: s.nullable(s.string("Employee count range")),
|
|
326
|
+
investment_stage: s.nullable(s.string("Investment stage focus")),
|
|
327
|
+
contact_email: s.nullable(s.string("Contact email (when available)", { format: "email" })),
|
|
328
|
+
contact_phone: s.nullable(s.string("Contact phone number (when available)")),
|
|
329
|
+
location: s.object("location details.", {}, {
|
|
330
|
+
required: [],
|
|
331
|
+
additionalProperties: true,
|
|
332
|
+
}),
|
|
333
|
+
top_industries: s.array("Top industries invested in", s.object("top industries record.", {}, {
|
|
334
|
+
required: [],
|
|
335
|
+
additionalProperties: true,
|
|
336
|
+
})),
|
|
337
|
+
top_locations: s.array("Top portfolio company locations", s.object("top locations record.", {}, {
|
|
338
|
+
required: [],
|
|
339
|
+
additionalProperties: true,
|
|
340
|
+
})),
|
|
341
|
+
top_round_types: s.array("Most common round types", s.object("top round types record.", {}, {
|
|
342
|
+
required: [],
|
|
343
|
+
additionalProperties: true,
|
|
344
|
+
})),
|
|
345
|
+
filtered_deal_count: s.nullable(s.integer("Number of deals matching the active `company_investments` filters")),
|
|
346
|
+
filtered_lead_count: s.nullable(s.integer("Of the deals matching the active `company_investments` filters, how many the investor led")),
|
|
347
|
+
}, {
|
|
348
|
+
required: [],
|
|
349
|
+
additionalProperties: true,
|
|
350
|
+
});
|
|
351
|
+
const investorSchema = s.object("Full investor profile", {
|
|
352
|
+
id: s.string("Unique identifier for the investor", { format: "uuid" }),
|
|
353
|
+
name: s.string("Investor name"),
|
|
354
|
+
total_deal_count: s.integer("Total number of deals"),
|
|
355
|
+
lead_deal_count: s.integer("Number of deals where investor was lead"),
|
|
356
|
+
deal_count_last_12_months: s.integer("Deals in the last 12 months"),
|
|
357
|
+
lead_deal_count_last_12_months: s.integer("Lead deals in the last 12 months"),
|
|
358
|
+
most_recent_deal_date: s.nullable(s.string("Date of the most recent deal", { format: "date-time" })),
|
|
359
|
+
guru_permalink: s.string("Fundable permalink for the investor"),
|
|
360
|
+
domain: s.nullable(s.string("Investor domain")),
|
|
361
|
+
website: s.nullable(s.string("Investor website URL", { format: "uri" })),
|
|
362
|
+
linkedin: s.nullable(s.string("Investor LinkedIn URL", { format: "uri" })),
|
|
363
|
+
pitchbook: s.nullable(s.string("Investor PitchBook URL", { format: "uri" })),
|
|
364
|
+
crunchbase: s.nullable(s.string("Investor Crunchbase URL", { format: "uri" })),
|
|
365
|
+
description: s.nullable(s.string("Description of the investor")),
|
|
366
|
+
legal_name: s.nullable(s.string("Legal name of the investor")),
|
|
367
|
+
num_employees: s.nullable(s.string("Employee count range")),
|
|
368
|
+
investment_stage: s.nullable(s.string("Investment stage focus")),
|
|
369
|
+
contact_email: s.nullable(s.string("Contact email (when available)", { format: "email" })),
|
|
370
|
+
contact_phone: s.nullable(s.string("Contact phone number (when available)")),
|
|
371
|
+
location: s.object("location details.", {}, {
|
|
372
|
+
required: [],
|
|
373
|
+
additionalProperties: true,
|
|
374
|
+
}),
|
|
375
|
+
top_industries: s.array("Top industries invested in", s.object("top industries record.", {}, {
|
|
376
|
+
required: [],
|
|
377
|
+
additionalProperties: true,
|
|
378
|
+
})),
|
|
379
|
+
top_locations: s.array("Top portfolio company locations", s.object("top locations record.", {}, {
|
|
380
|
+
required: [],
|
|
381
|
+
additionalProperties: true,
|
|
382
|
+
})),
|
|
383
|
+
top_round_types: s.array("Most common round types", s.object("top round types record.", {}, {
|
|
384
|
+
required: [],
|
|
385
|
+
additionalProperties: true,
|
|
386
|
+
})),
|
|
387
|
+
}, {
|
|
388
|
+
required: [],
|
|
389
|
+
additionalProperties: true,
|
|
390
|
+
});
|
|
391
|
+
const investorDealSchema = s.object("Deal returned by the /investor/deals endpoint. Same shape as the Deal schema in the Deals API.", {
|
|
392
|
+
id: s.string("Unique Fundable record identifier.", { format: "uuid" }),
|
|
393
|
+
round_type: s.nullable(s.string("Round type.")),
|
|
394
|
+
extension: s.nullable(s.boolean("Whether to filter for extension rounds.")),
|
|
395
|
+
intermediate: s.nullable(s.string("Intermediate.")),
|
|
396
|
+
pre: s.nullable(s.boolean("Whether to filter for pre-round financing.")),
|
|
397
|
+
date: s.nullable(s.string("Date.", { format: "date-time" })),
|
|
398
|
+
created_at: s.nullable(s.string("Created at.", { format: "date-time" })),
|
|
399
|
+
total_round_raised: s.nullable(s.number("Total round raised.")),
|
|
400
|
+
deal_descriptions: s.nullable(s.object("deal descriptions details.", {}, {
|
|
401
|
+
required: [],
|
|
402
|
+
additionalProperties: true,
|
|
403
|
+
})),
|
|
404
|
+
company_id: s.string("Company id.", { format: "uuid" }),
|
|
405
|
+
investor_ids: s.array("UUIDs of firm investors participating in this deal. Angels are surfaced separately in `angel_investor_ids`.", s.string("Investor ids item.", { format: "uuid" })),
|
|
406
|
+
angel_investor_ids: s.array("UUIDs of angel investors (people) on this deal. Resolve via `/people/{id}`. Empty array when no angels.", s.string("Angel investor ids item.", { format: "uuid" })),
|
|
407
|
+
financings: s.array("Financings values.", s.object("financings record.", {}, {
|
|
408
|
+
required: [],
|
|
409
|
+
additionalProperties: true,
|
|
410
|
+
})),
|
|
411
|
+
valuation: s.nullable(s.object("valuation details.", {}, {
|
|
412
|
+
required: [],
|
|
413
|
+
additionalProperties: true,
|
|
414
|
+
})),
|
|
415
|
+
articles: s.array("Related articles/sources for this deal. Always included; empty when no sources exist.", s.object("articles record.", {}, {
|
|
416
|
+
required: [],
|
|
417
|
+
additionalProperties: true,
|
|
418
|
+
})),
|
|
419
|
+
}, {
|
|
420
|
+
required: [],
|
|
421
|
+
additionalProperties: true,
|
|
422
|
+
});
|
|
423
|
+
const investorSearchResultSchema = s.object("InvestorSearchResult details.", {
|
|
424
|
+
id: s.string("Unique identifier for the investor", { format: "uuid" }),
|
|
425
|
+
guru_permalink: s.nullable(s.string("Fundable permalink for the investor")),
|
|
426
|
+
name: s.string("Investor name"),
|
|
427
|
+
description: s.nullable(s.string("Brief description of the investor")),
|
|
428
|
+
relevance_score: s.number("Search relevance score (0-1)"),
|
|
429
|
+
domain: s.nullable(s.string("Investor website domain")),
|
|
430
|
+
website: s.nullable(s.string("Investor website URL", { format: "uri" })),
|
|
431
|
+
linkedin: s.nullable(s.string("LinkedIn profile URL")),
|
|
432
|
+
crunchbase: s.nullable(s.string("Crunchbase profile URL")),
|
|
433
|
+
}, {
|
|
434
|
+
required: [],
|
|
435
|
+
additionalProperties: true,
|
|
436
|
+
});
|
|
437
|
+
const personSearchResultSchema = s.object("Constant unified person shape — every row carries every field. Investor aggregates live\nunder `investor_highlights` (null for non-investors); discriminator flags `is_investor` /\n`is_angel` / `has_led_deal` and `investment_firms` stay top-level. `employment_history`\nand `education_history` are capped at 3 in the search response; the detail endpoint\nreturns the full lists.", {
|
|
438
|
+
id: s.string("Unique Fundable record identifier.", { format: "uuid" }),
|
|
439
|
+
name: s.nullable(s.string("Display name of the record.")),
|
|
440
|
+
title: s.nullable(s.string("Current job title")),
|
|
441
|
+
linkedin_url: s.nullable(s.string("Canonical LinkedIn person URL", { format: "uri" })),
|
|
442
|
+
crunchbase_url: s.nullable(s.string("Canonical Crunchbase person URL", { format: "uri" })),
|
|
443
|
+
twitter_url: s.nullable(s.string("Canonical Twitter/X profile URL", { format: "uri" })),
|
|
444
|
+
location: s.nullable(s.string("Location.")),
|
|
445
|
+
city: s.nullable(s.string("City.")),
|
|
446
|
+
country_code: s.nullable(s.string("Country code.")),
|
|
447
|
+
about: s.nullable(s.string("LinkedIn bio/about section")),
|
|
448
|
+
is_founder: s.boolean("Is founder."),
|
|
449
|
+
current_company: personCurrentCompanySchema,
|
|
450
|
+
employment_history: s.array("Recent employment (max 3 items in search; full list on detail endpoint)", s.object("employment history record.", {}, {
|
|
451
|
+
required: [],
|
|
452
|
+
additionalProperties: true,
|
|
453
|
+
}), { maxItems: 3 }),
|
|
454
|
+
education_history: s.array("Education records (max 3 items in search; full list on detail endpoint)", s.object("education history record.", {}, {
|
|
455
|
+
required: [],
|
|
456
|
+
additionalProperties: true,
|
|
457
|
+
}), { maxItems: 3 }),
|
|
458
|
+
is_investor: s.boolean("Whether the person has any tracked investment activity"),
|
|
459
|
+
is_angel: s.boolean("Whether the person makes angel investments"),
|
|
460
|
+
has_led_deal: s.boolean("Whether the person has ever led a deal"),
|
|
461
|
+
investment_firms: s.array("Firms the person invests under (empty for pure angels)", s.object("investment firms record.", {}, {
|
|
462
|
+
required: [],
|
|
463
|
+
additionalProperties: true,
|
|
464
|
+
})),
|
|
465
|
+
investor_highlights: s.nullable(s.object("Aggregated investor activity. Null when `is_investor` is false.", {}, {
|
|
466
|
+
required: [],
|
|
467
|
+
additionalProperties: true,
|
|
468
|
+
})),
|
|
469
|
+
filtered_deal_count: s.nullable(s.integer("Count of deals matching the `investor.deals.*` filters. Populated only when any `investor.deals.*` filter is present; otherwise null.")),
|
|
470
|
+
filtered_lead_count: s.nullable(s.integer("Of the matching deals, how many the person/firm led. Populated only when any `investor.deals.*` filter is present.")),
|
|
471
|
+
filtered_most_recent_date: s.nullable(s.string("Most recent matching-deal date. Populated only when any `investor.deals.*` filter is present.", {
|
|
472
|
+
format: "date",
|
|
473
|
+
})),
|
|
474
|
+
}, {
|
|
475
|
+
required: [],
|
|
476
|
+
additionalProperties: true,
|
|
477
|
+
});
|
|
478
|
+
const personDetailSchema = s.object("PersonDetail details.", {
|
|
479
|
+
id: s.string("Unique Fundable record identifier.", { format: "uuid" }),
|
|
480
|
+
name: s.nullable(s.string("Display name of the record.")),
|
|
481
|
+
title: s.nullable(s.string("Current job title")),
|
|
482
|
+
linkedin_url: s.nullable(s.string("Canonical LinkedIn person URL", { format: "uri" })),
|
|
483
|
+
crunchbase_url: s.nullable(s.string("Canonical Crunchbase person URL", { format: "uri" })),
|
|
484
|
+
twitter_url: s.nullable(s.string("Canonical Twitter/X profile URL", { format: "uri" })),
|
|
485
|
+
location: s.nullable(s.string("Location.")),
|
|
486
|
+
city: s.nullable(s.string("City.")),
|
|
487
|
+
country_code: s.nullable(s.string("Country code.")),
|
|
488
|
+
about: s.nullable(s.string("LinkedIn bio/about section")),
|
|
489
|
+
is_founder: s.boolean("Is founder."),
|
|
490
|
+
current_company: personCurrentCompanySchema,
|
|
491
|
+
employment_history: s.array("Full employment history (no item cap)", s.object("employment history record.", {}, {
|
|
492
|
+
required: [],
|
|
493
|
+
additionalProperties: true,
|
|
494
|
+
})),
|
|
495
|
+
education_history: s.array("Full education history (no item cap)", s.object("education history record.", {}, {
|
|
496
|
+
required: [],
|
|
497
|
+
additionalProperties: true,
|
|
498
|
+
})),
|
|
499
|
+
is_investor: s.boolean("Whether the person has any tracked investment activity"),
|
|
500
|
+
is_angel: s.boolean("Whether the person makes angel investments"),
|
|
501
|
+
has_led_deal: s.boolean("Whether the person has ever led a deal"),
|
|
502
|
+
investment_firms: s.array("Firms the person invests under (empty for pure angels)", s.object("investment firms record.", {}, {
|
|
503
|
+
required: [],
|
|
504
|
+
additionalProperties: true,
|
|
505
|
+
})),
|
|
506
|
+
investor_highlights: s.nullable(s.object("Aggregated investor activity. Null when `is_investor` is false.", {}, {
|
|
507
|
+
required: [],
|
|
508
|
+
additionalProperties: true,
|
|
509
|
+
})),
|
|
510
|
+
filtered_deal_count: s.nullable(s.integer("Count of deals matching the `investor.deals.*` filters. Populated only when any `investor.deals.*` filter is present; otherwise null.")),
|
|
511
|
+
filtered_lead_count: s.nullable(s.integer("Of the matching deals, how many the person/firm led. Populated only when any `investor.deals.*` filter is present.")),
|
|
512
|
+
filtered_most_recent_date: s.nullable(s.string("Most recent matching-deal date. Populated only when any `investor.deals.*` filter is present.", {
|
|
513
|
+
format: "date",
|
|
514
|
+
})),
|
|
515
|
+
}, {
|
|
516
|
+
required: [],
|
|
517
|
+
additionalProperties: true,
|
|
518
|
+
});
|
|
519
|
+
const personDealSchema = s.object("Deal returned by the /person/deals endpoint. Same shape as deals returned by /company/deals.", {
|
|
520
|
+
id: s.string("Unique Fundable record identifier.", { format: "uuid" }),
|
|
521
|
+
round_type: s.nullable(s.string("Round type.")),
|
|
522
|
+
extension: s.nullable(s.boolean("Whether to filter for extension rounds.")),
|
|
523
|
+
intermediate: s.nullable(s.string("Intermediate.")),
|
|
524
|
+
pre: s.nullable(s.boolean("Whether to filter for pre-round financing.")),
|
|
525
|
+
date: s.nullable(s.string("Date.", { format: "date-time" })),
|
|
526
|
+
created_at: s.nullable(s.string("Created at.", { format: "date-time" })),
|
|
527
|
+
total_round_raised: s.nullable(s.number("Total round raised.")),
|
|
528
|
+
deal_descriptions: s.nullable(s.object("deal descriptions details.", {}, {
|
|
529
|
+
required: [],
|
|
530
|
+
additionalProperties: true,
|
|
531
|
+
})),
|
|
532
|
+
company_id: s.string("Company id.", { format: "uuid" }),
|
|
533
|
+
investor_ids: s.array("UUIDs of firm investors participating in this deal. Angels are surfaced separately in `angel_investor_ids`.", s.string("Investor ids item.", { format: "uuid" })),
|
|
534
|
+
angel_investor_ids: s.array("UUIDs of angel investors (people) on this deal. Resolve via `/people/{id}`. Empty array when no angels.", s.string("Angel investor ids item.", { format: "uuid" })),
|
|
535
|
+
financings: s.array("Financings values.", s.object("financings record.", {}, {
|
|
536
|
+
required: [],
|
|
537
|
+
additionalProperties: true,
|
|
538
|
+
})),
|
|
539
|
+
valuation: s.nullable(s.object("valuation details.", {}, {
|
|
540
|
+
required: [],
|
|
541
|
+
additionalProperties: true,
|
|
542
|
+
})),
|
|
543
|
+
articles: s.array("Related articles/sources for this deal. Always included; empty when no sources exist.", s.object("articles record.", {}, {
|
|
544
|
+
required: [],
|
|
545
|
+
additionalProperties: true,
|
|
546
|
+
})),
|
|
547
|
+
}, {
|
|
548
|
+
required: [],
|
|
549
|
+
additionalProperties: true,
|
|
550
|
+
});
|
|
551
|
+
const alertSchema = s.object("Alert details.", {
|
|
552
|
+
alertId: s.string("Unique identifier for the alert configuration", { format: "uuid" }),
|
|
553
|
+
alertName: s.string("Name of the alert configuration"),
|
|
554
|
+
alertFrequency: s.stringEnum("Frequency setting of the alert", ["DAILY", "WEEKLY", "BIWEEKLY", "MONTHLY"]),
|
|
555
|
+
totalDealCount: s.integer("Total number of deals for this alert"),
|
|
556
|
+
deals: s.array("Array of deals that matched the alert criteria (flattened from all time periods, sorted by date DESC)", s.object("deals record.", {}, {
|
|
557
|
+
required: [],
|
|
558
|
+
additionalProperties: true,
|
|
559
|
+
})),
|
|
560
|
+
}, {
|
|
561
|
+
required: [],
|
|
562
|
+
additionalProperties: true,
|
|
563
|
+
});
|
|
564
|
+
const alertConfigurationSchema = s.object("Alert configuration metadata including filters and settings", {
|
|
565
|
+
configuration_id: s.string("Unique identifier for the alert configuration", { format: "uuid" }),
|
|
566
|
+
configuration_name: s.string("User-defined name for the alert"),
|
|
567
|
+
frequency: s.stringEnum("How often the alert runs", ["DAILY", "WEEKLY", "BIWEEKLY", "MONTHLY"]),
|
|
568
|
+
description: s.string("Alert description combining custom, alert, and semantic descriptions"),
|
|
569
|
+
filters: s.object("Alert filter criteria", {}, {
|
|
570
|
+
required: [],
|
|
571
|
+
additionalProperties: true,
|
|
572
|
+
}),
|
|
573
|
+
}, {
|
|
574
|
+
required: [],
|
|
575
|
+
additionalProperties: true,
|
|
576
|
+
});
|
|
577
|
+
const locationSearchResultSchema = s.object("LocationSearchResult details.", {
|
|
578
|
+
permalink: s.string("Location permalink identifier"),
|
|
579
|
+
name: s.string("Location name"),
|
|
580
|
+
location_type: s.stringEnum("Type of location", ["REGION", "COUNTRY", "STATE", "CITY"]),
|
|
581
|
+
}, {
|
|
582
|
+
required: [],
|
|
583
|
+
additionalProperties: true,
|
|
584
|
+
});
|
|
585
|
+
const industrySearchResultSchema = s.object("IndustrySearchResult details.", {
|
|
586
|
+
permalink: s.string("Industry or super category permalink identifier"),
|
|
587
|
+
name: s.string("Industry or super category name"),
|
|
588
|
+
industry_type: s.stringEnum("Type of result", ["INDUSTRY", "SUPER_CATEGORY"]),
|
|
589
|
+
}, {
|
|
590
|
+
required: [],
|
|
591
|
+
additionalProperties: true,
|
|
592
|
+
});
|
|
593
|
+
const responseMetadataSchema = s.looseObject("Pagination and credit usage reported by Fundable.", {
|
|
594
|
+
total_count: s.integer("Total number of matching records."),
|
|
595
|
+
page: s.integer("Zero-based page number."),
|
|
596
|
+
page_size: s.integer("Number of results per page."),
|
|
597
|
+
credits_used: s.number("Credits consumed by this request."),
|
|
598
|
+
credit_source: s.nullable(s.string("Source of consumed credits.")),
|
|
599
|
+
monthly_credits_remaining: s.nullable(s.number("Remaining monthly credits.")),
|
|
600
|
+
purchased_credits_remaining: s.nullable(s.number("Remaining purchased credits.")),
|
|
601
|
+
});
|
|
602
|
+
function fundableResponse(data) {
|
|
603
|
+
return s.object("Fundable response with records and available pagination and credit metadata.", {
|
|
604
|
+
success: s.boolean("Whether the request succeeded."),
|
|
605
|
+
data,
|
|
606
|
+
meta: responseMetadataSchema,
|
|
607
|
+
message: s.string("Optional explanatory message."),
|
|
608
|
+
}, {
|
|
609
|
+
required: ["success", "data"],
|
|
610
|
+
additionalProperties: true,
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
export const fundableActions = [
|
|
614
|
+
defineProviderAction("fundable", {
|
|
615
|
+
name: "search_deals",
|
|
616
|
+
description: "Use this endpoint when the requested result is a set of funding rounds, or when deal criteria must match any historical round rather than only each company's latest round. It supports round-level analysis across the full deal history.",
|
|
617
|
+
requiredScopes: [],
|
|
618
|
+
operationType: "read",
|
|
619
|
+
inputSchema: s.object("Filters for search deals.", {
|
|
620
|
+
identifiers: s.object("Look up specific deals by identifier", {
|
|
621
|
+
deal_ids: s.array("Deal UUIDs", s.string("Deal ids item.", { format: "uuid", minLength: 1 })),
|
|
622
|
+
}, { required: [] }),
|
|
623
|
+
deal: s.object("Deal attribute filters", {
|
|
624
|
+
financing_types: financingTypesSchema,
|
|
625
|
+
size_min: s.number("Minimum deal size (USD)", { minimum: 0 }),
|
|
626
|
+
size_max: s.number("Maximum deal size (USD)", { minimum: 0 }),
|
|
627
|
+
date_start: s.string("Filter deals announced after this date (ISO 8601)", {
|
|
628
|
+
format: "date",
|
|
629
|
+
minLength: 1,
|
|
630
|
+
}),
|
|
631
|
+
date_end: s.string("Filter deals announced before this date (ISO 8601)", {
|
|
632
|
+
format: "date",
|
|
633
|
+
minLength: 1,
|
|
634
|
+
}),
|
|
635
|
+
created_start: s.string("Filter deals added to the system after this date (ISO 8601)", {
|
|
636
|
+
format: "date",
|
|
637
|
+
minLength: 1,
|
|
638
|
+
}),
|
|
639
|
+
created_end: s.string("Filter deals added to the system before this date (ISO 8601)", {
|
|
640
|
+
format: "date",
|
|
641
|
+
minLength: 1,
|
|
642
|
+
}),
|
|
643
|
+
}, { required: [] }),
|
|
644
|
+
company: s.object("Company attribute filters", {
|
|
645
|
+
company_ids: s.array("Company UUIDs - filter deals by specific companies", s.string("Company ids item.", { format: "uuid", minLength: 1 })),
|
|
646
|
+
locations: locationsSchema,
|
|
647
|
+
industries: industriesSchema,
|
|
648
|
+
super_categories: superCategoriesSchema,
|
|
649
|
+
employee_count: employeeCountSchema,
|
|
650
|
+
ipo_status: s.array("IPO status filter. Valid: public, private", s.stringEnum("Ipo status item.", ["public", "private"])),
|
|
651
|
+
total_raised_min: s.number("Minimum total raised (USD)", { minimum: 0 }),
|
|
652
|
+
total_raised_max: s.number("Maximum total raised (USD)", { minimum: 0 }),
|
|
653
|
+
}, { required: [] }),
|
|
654
|
+
investors: s.object("Filter by investor participation (firms or people)", {
|
|
655
|
+
investor_ids: s.array("Investor UUIDs (firms)", s.string("Investor ids item.", { format: "uuid", minLength: 1 })),
|
|
656
|
+
people_ids: s.array("Person UUIDs — matches deals where any of these people participated as an\n**angel investor** OR as a **lead partner** of an investing firm.\nResolve via `/people/{id}`.", s.string("People ids item.", { format: "uuid", minLength: 1 })),
|
|
657
|
+
}, { required: [] }),
|
|
658
|
+
page: pageSchema,
|
|
659
|
+
page_size: pageSizeSchema,
|
|
660
|
+
sort_by: s.stringEnum("Sort order for results", ["most_recent_deal", "oldest_deal", "largest_raise", "smallest_raise"], { default: "most_recent_deal" }),
|
|
661
|
+
}, { required: [] }),
|
|
662
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
663
|
+
deals: s.array("Deals values.", dealSchema),
|
|
664
|
+
}, {
|
|
665
|
+
required: [],
|
|
666
|
+
additionalProperties: true,
|
|
667
|
+
})),
|
|
668
|
+
}),
|
|
669
|
+
defineProviderAction("fundable", {
|
|
670
|
+
name: "get_deal_by_id",
|
|
671
|
+
description: "Use this endpoint when a deal UUID is already known and full details for that one funding round are required. The response identifies related entities by ID rather than embedding their full profiles. Use `GET /company?id=...` for company metadata and `GET /deals/{id}/investors` for the complete investor lineup. ",
|
|
672
|
+
requiredScopes: [],
|
|
673
|
+
operationType: "read",
|
|
674
|
+
inputSchema: s.object("Parameters for get deal by id.", {
|
|
675
|
+
id: s.string("Unique identifier for the deal (UUID format)", {
|
|
676
|
+
format: "uuid",
|
|
677
|
+
minLength: 1,
|
|
678
|
+
}),
|
|
679
|
+
}, { required: ["id"] }),
|
|
680
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
681
|
+
deal: dealSchema,
|
|
682
|
+
}, {
|
|
683
|
+
required: [],
|
|
684
|
+
additionalProperties: true,
|
|
685
|
+
})),
|
|
686
|
+
}),
|
|
687
|
+
defineProviderAction("fundable", {
|
|
688
|
+
name: "get_deal_investors",
|
|
689
|
+
description: "Use this endpoint after identifying a deal when investor IDs in the deal record need to be resolved into the complete investor lineup. It returns firm investors, associated people, angel investors, lead status, and profile links for one deal.",
|
|
690
|
+
requiredScopes: [],
|
|
691
|
+
operationType: "read",
|
|
692
|
+
inputSchema: s.object("Parameters for get deal investors.", {
|
|
693
|
+
id: s.string("Unique identifier for the deal (UUID format)", {
|
|
694
|
+
format: "uuid",
|
|
695
|
+
minLength: 1,
|
|
696
|
+
}),
|
|
697
|
+
}, { required: ["id"] }),
|
|
698
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
699
|
+
investors: s.array("Firm investors on this deal. Angels are surfaced separately in `angel_investors`.", dealInvestorSchema),
|
|
700
|
+
angel_investors: s.array("Angel investors (individuals) on this deal. Empty array when no angels.", angelInvestorSchema),
|
|
701
|
+
}, {
|
|
702
|
+
required: [],
|
|
703
|
+
additionalProperties: true,
|
|
704
|
+
})),
|
|
705
|
+
}),
|
|
706
|
+
defineProviderAction("fundable", {
|
|
707
|
+
name: "get_company",
|
|
708
|
+
description: "Use this endpoint when one company is already identified and its full profile and latest funding round are required. Prefer a domain or LinkedIn URL when available; they can be passed directly here without calling `/company/search` first.",
|
|
709
|
+
requiredScopes: [],
|
|
710
|
+
operationType: "read",
|
|
711
|
+
inputSchema: s.object("Parameters for get company.", {
|
|
712
|
+
id: s.string("Company UUID", { format: "uuid", minLength: 1 }),
|
|
713
|
+
domain: s.string('Company domain or full URL (e.g., "stripe.com" or "https://stripe.com") — URLs are automatically parsed to extract the domain', { minLength: 1 }),
|
|
714
|
+
linkedin: s.string("LinkedIn company URL", { minLength: 1 }),
|
|
715
|
+
crunchbase: s.string("Crunchbase organization URL", { minLength: 1 }),
|
|
716
|
+
}, {
|
|
717
|
+
required: [],
|
|
718
|
+
oneOf: [
|
|
719
|
+
{ required: ["id"] },
|
|
720
|
+
{ required: ["domain"] },
|
|
721
|
+
{ required: ["linkedin"] },
|
|
722
|
+
{ required: ["crunchbase"] },
|
|
723
|
+
],
|
|
724
|
+
}),
|
|
725
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
726
|
+
company: companyDetailsSchema,
|
|
727
|
+
}, {
|
|
728
|
+
required: [],
|
|
729
|
+
additionalProperties: true,
|
|
730
|
+
})),
|
|
731
|
+
}),
|
|
732
|
+
defineProviderAction("fundable", {
|
|
733
|
+
name: "get_company_deals",
|
|
734
|
+
description: "Use this endpoint when a company is already identified and its complete funding history is required. Prefer a domain or LinkedIn URL when available; it can be passed directly without first calling `/company/search`.",
|
|
735
|
+
requiredScopes: [],
|
|
736
|
+
operationType: "read",
|
|
737
|
+
inputSchema: s.object("Parameters for get company deals.", {
|
|
738
|
+
id: s.string("Company UUID", { format: "uuid", minLength: 1 }),
|
|
739
|
+
domain: s.string('Company domain or full URL (e.g., "stripe.com" or "https://stripe.com") — URLs are automatically parsed to extract the domain', { minLength: 1 }),
|
|
740
|
+
linkedin: s.string("LinkedIn company URL", { minLength: 1 }),
|
|
741
|
+
crunchbase: s.string("Crunchbase organization URL", { minLength: 1 }),
|
|
742
|
+
page: pageSchema,
|
|
743
|
+
page_size: s.integer("Number of results per page (1-500)", {
|
|
744
|
+
minimum: 1,
|
|
745
|
+
maximum: 500,
|
|
746
|
+
default: 10,
|
|
747
|
+
}),
|
|
748
|
+
}, {
|
|
749
|
+
required: [],
|
|
750
|
+
oneOf: [
|
|
751
|
+
{ required: ["id"] },
|
|
752
|
+
{ required: ["domain"] },
|
|
753
|
+
{ required: ["linkedin"] },
|
|
754
|
+
{ required: ["crunchbase"] },
|
|
755
|
+
],
|
|
756
|
+
}),
|
|
757
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
758
|
+
deals: s.array("Deals values.", companyDealSchema),
|
|
759
|
+
}, {
|
|
760
|
+
required: [],
|
|
761
|
+
additionalProperties: true,
|
|
762
|
+
})),
|
|
763
|
+
}),
|
|
764
|
+
defineProviderAction("fundable", {
|
|
765
|
+
name: "search_company",
|
|
766
|
+
description: "Use this endpoint primarily to resolve a fuzzy company name or an uncertain identifier into matching company records. If a reliable domain or LinkedIn URL is already available, skip this search and pass it directly to `GET /company` for one full profile or to `POST /companies` for a batch lookup.",
|
|
767
|
+
requiredScopes: [],
|
|
768
|
+
operationType: "read",
|
|
769
|
+
inputSchema: s.object("Parameters for search company.", {
|
|
770
|
+
name: s.string("Fuzzy search by company name", { minLength: 1 }),
|
|
771
|
+
domain: s.string('Company domain or full URL (e.g., "stripe.com" or "https://stripe.com") — URLs are automatically parsed to extract the domain', { minLength: 1 }),
|
|
772
|
+
linkedin: s.string("LinkedIn company URL", { minLength: 1 }),
|
|
773
|
+
crunchbase: s.string("Crunchbase organization URL", { minLength: 1 }),
|
|
774
|
+
}, {
|
|
775
|
+
required: [],
|
|
776
|
+
oneOf: [
|
|
777
|
+
{ required: ["name"] },
|
|
778
|
+
{ required: ["domain"] },
|
|
779
|
+
{ required: ["linkedin"] },
|
|
780
|
+
{ required: ["crunchbase"] },
|
|
781
|
+
],
|
|
782
|
+
}),
|
|
783
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
784
|
+
companies: s.array("Companies values.", companySearchResultSchema),
|
|
785
|
+
}, {
|
|
786
|
+
required: [],
|
|
787
|
+
additionalProperties: true,
|
|
788
|
+
})),
|
|
789
|
+
}),
|
|
790
|
+
defineProviderAction("fundable", {
|
|
791
|
+
name: "search_companies",
|
|
792
|
+
description: "Use this endpoint by default for company sourcing and discovery. It returns company metadata such as name and domain together with the full details of each company's latest funding round.",
|
|
793
|
+
requiredScopes: [],
|
|
794
|
+
operationType: "read",
|
|
795
|
+
inputSchema: s.object("Filters for search companies.", {
|
|
796
|
+
identifiers: s.object("Look up specific companies by identifier", {
|
|
797
|
+
ids: s.array("Company UUIDs", s.string("Ids item.", { format: "uuid", minLength: 1 })),
|
|
798
|
+
domains: s.array("Company domains (max 100)", s.string("Domains item.", { minLength: 1 }), {
|
|
799
|
+
maxItems: 100,
|
|
800
|
+
}),
|
|
801
|
+
linkedin_urls: s.array("LinkedIn company URLs (max 100)", s.string("Linkedin urls item.", { minLength: 1 }), { maxItems: 100 }),
|
|
802
|
+
crunchbase_urls: s.array("Crunchbase organization URLs (max 100)", s.string("Crunchbase urls item.", { minLength: 1 }), { maxItems: 100 }),
|
|
803
|
+
}, { required: [] }),
|
|
804
|
+
company: s.object("Company attribute filters", {
|
|
805
|
+
search_query: s.string('AI-powered semantic search — a flexible replacement for an industry tag. First use /industry/search and apply an `industries` or `super_categories` filter when the taxonomy contains the intended category. Use semantic search only for a niche industry or specific product type the taxonomy cannot express, describing what the company does — its product, technology, or business model (e.g. "AI-powered medical imaging diagnostics" or "vertical SaaS for dental practices"). Do NOT use it for other attributes like stage, location, funding, or employee count — apply those with the dedicated filter fields instead. Results include a similarity score, are sorted by relevance, and are capped at 150 semantic matches.', { minLength: 1 }),
|
|
806
|
+
min_relevance: s.number("Minimum similarity threshold (0-1). Only applies with search_query.", {
|
|
807
|
+
minimum: 0,
|
|
808
|
+
maximum: 1,
|
|
809
|
+
}),
|
|
810
|
+
locations: locationsSchema,
|
|
811
|
+
industries: industriesSchema,
|
|
812
|
+
super_categories: superCategoriesSchema,
|
|
813
|
+
employee_count: employeeCountSchema,
|
|
814
|
+
ipo_status: s.array("IPO status filter. Valid: public, private", s.stringEnum("Ipo status item.", ["public", "private"])),
|
|
815
|
+
total_raised_min: s.number("Minimum total raised (USD)", { minimum: 0 }),
|
|
816
|
+
total_raised_max: s.number("Maximum total raised (USD)", { minimum: 0 }),
|
|
817
|
+
}, { required: [] }),
|
|
818
|
+
latest_deal: s.object("Latest funding round filters", {
|
|
819
|
+
financing_types: financingTypesSchema,
|
|
820
|
+
size_min: s.number("Minimum deal size (USD)", { minimum: 0 }),
|
|
821
|
+
size_max: s.number("Maximum deal size (USD)", { minimum: 0 }),
|
|
822
|
+
date_start: s.string("Latest deal after this date (ISO 8601)", {
|
|
823
|
+
format: "date",
|
|
824
|
+
minLength: 1,
|
|
825
|
+
}),
|
|
826
|
+
date_end: s.string("Latest deal before this date (ISO 8601)", {
|
|
827
|
+
format: "date",
|
|
828
|
+
minLength: 1,
|
|
829
|
+
}),
|
|
830
|
+
created_start: s.string("Latest deal record added to the system on or after this date (ISO 8601). Filters by ingestion date (`created_at`), not the announcement date — useful for finding rounds newly added to Fundable.", { format: "date", minLength: 1 }),
|
|
831
|
+
created_end: s.string("Latest deal record added to the system on or before this date (ISO 8601). Filters by ingestion date (`created_at`), not the announcement date.", { format: "date", minLength: 1 }),
|
|
832
|
+
investor_ids: s.array("Filter by investors who participated in the latest deal only", s.string("Investor ids item.", { format: "uuid", minLength: 1 })),
|
|
833
|
+
}, { required: [] }),
|
|
834
|
+
investors: s.object("Filter by investors (firms or people) across all funding rounds", {
|
|
835
|
+
investor_ids: s.array("Investor UUIDs — matches companies where these investors participated in any round ever", s.string("Investor ids item.", { format: "uuid", minLength: 1 })),
|
|
836
|
+
people_ids: s.array("Person UUIDs — matches companies where any of these people participated in any round\nas an **angel investor** OR as a **lead partner** of an investing firm.\nResolve via `/people/{id}`.", s.string("People ids item.", { format: "uuid", minLength: 1 })),
|
|
837
|
+
}, { required: [] }),
|
|
838
|
+
page: pageSchema,
|
|
839
|
+
page_size: pageSizeSchema,
|
|
840
|
+
sort_by: s.stringEnum("Sort order. Ignored when search_query is provided (sorted by relevance).", [
|
|
841
|
+
"most_recent_raise",
|
|
842
|
+
"oldest_raise",
|
|
843
|
+
"most_recent_founded",
|
|
844
|
+
"oldest_founded",
|
|
845
|
+
"largest_valuation",
|
|
846
|
+
"smallest_valuation",
|
|
847
|
+
"largest_total_raise",
|
|
848
|
+
"smallest_total_raise",
|
|
849
|
+
"most_funding_rounds",
|
|
850
|
+
"most_investors",
|
|
851
|
+
], { default: "most_recent_raise" }),
|
|
852
|
+
}, { required: [] }),
|
|
853
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
854
|
+
companies: s.array("Companies values.", companyListItemSchema),
|
|
855
|
+
}, {
|
|
856
|
+
required: [],
|
|
857
|
+
additionalProperties: true,
|
|
858
|
+
})),
|
|
859
|
+
}),
|
|
860
|
+
defineProviderAction("fundable", {
|
|
861
|
+
name: "list_investors",
|
|
862
|
+
description: "Use this endpoint when the requested result is a list of investor firms. Filters under `company_investments` identify qualifying portfolio companies and deals, then return the firms that participated in those deals. For example, use this route to find San Francisco-based investors that participated in a Seed round during the last year.",
|
|
863
|
+
requiredScopes: [],
|
|
864
|
+
operationType: "read",
|
|
865
|
+
inputSchema: s.object("Filters for list investors.", {
|
|
866
|
+
identifiers: s.object("Investor lookup filters (OR'd together)", {
|
|
867
|
+
ids: s.array("Investor UUIDs", s.string("Ids item.", { format: "uuid", minLength: 1 })),
|
|
868
|
+
domains: s.array("Investor domains (max 100)", s.string("Domains item.", { minLength: 1 }), {
|
|
869
|
+
maxItems: 100,
|
|
870
|
+
}),
|
|
871
|
+
linkedin_urls: s.array("Investor LinkedIn URLs (max 100)", s.string("Linkedin urls item.", { minLength: 1 }), { maxItems: 100 }),
|
|
872
|
+
crunchbase_urls: s.array("Investor Crunchbase URLs (max 100)", s.string("Crunchbase urls item.", { minLength: 1 }), { maxItems: 100 }),
|
|
873
|
+
}, { required: [] }),
|
|
874
|
+
investor: s.object("Investor entity-level filters", {
|
|
875
|
+
locations: s.array("Investor HQ location permalinks. Use /location/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Locations item.", { minLength: 1 })),
|
|
876
|
+
employee_count: s.array("Investor firm employee count ranges", s.stringEnum("Employee count item.", [
|
|
877
|
+
"1-10",
|
|
878
|
+
"11-50",
|
|
879
|
+
"51-100",
|
|
880
|
+
"101-250",
|
|
881
|
+
"251-500",
|
|
882
|
+
"501-1000",
|
|
883
|
+
"1001-5000",
|
|
884
|
+
"5001-10000",
|
|
885
|
+
"10001+",
|
|
886
|
+
])),
|
|
887
|
+
}, { required: [] }),
|
|
888
|
+
company_investments: s.object("Portfolio filters (filter by companies the investor has invested in)", {
|
|
889
|
+
company_ids: s.array("Portfolio company UUIDs", s.string("Company ids item.", { format: "uuid", minLength: 1 })),
|
|
890
|
+
search_query: s.string('AI-powered semantic search matched against each investor\'s\nportfolio companies — a flexible replacement for an industry tag.\nFirst use /industry/search and apply an `industries` or\n`super_categories` filter when the taxonomy contains the intended\ncategory. Use semantic search only for a niche industry or specific\nproduct type the taxonomy cannot express, describing what those\ncompanies do — their product, technology, or business model (e.g.\n"climate-focused carbon capture hardware"). Do NOT use it for other\nattributes like stage, location, or funding — apply those with the\ndedicated `company_investments` and `investor` filter fields instead.\nResults are ranked by portfolio relevance and capped at 150 semantic\nmatches.', { minLength: 1 }),
|
|
891
|
+
min_relevance: s.number("Minimum relevance score threshold (0–1) for the portfolio-based\nsemantic search. Only applies when `search_query` is provided.\nInvestors whose portfolio match score falls below this threshold\nare excluded. Defaults to 0 (return all results).", { minimum: 0, maximum: 1 }),
|
|
892
|
+
locations: s.array("Portfolio company location permalinks. Use /location/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Locations item.", { minLength: 1 })),
|
|
893
|
+
industries: s.array("Portfolio company industry permalinks. Use /industry/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Industries item.", { minLength: 1 })),
|
|
894
|
+
super_categories: s.array("Broad industry super-category permalinks. Use /industry/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Super categories item.", { minLength: 1 })),
|
|
895
|
+
employee_count: s.array("Portfolio company employee count ranges", s.stringEnum("Employee count item.", [
|
|
896
|
+
"1-10",
|
|
897
|
+
"11-50",
|
|
898
|
+
"51-100",
|
|
899
|
+
"101-250",
|
|
900
|
+
"251-500",
|
|
901
|
+
"501-1000",
|
|
902
|
+
"1001-5000",
|
|
903
|
+
"5001-10000",
|
|
904
|
+
"10001+",
|
|
905
|
+
])),
|
|
906
|
+
ipo_status: s.array("Portfolio company IPO status", s.stringEnum("Ipo status item.", ["public", "private"])),
|
|
907
|
+
total_raised_min: s.number("Minimum total raised by portfolio companies (USD)", {
|
|
908
|
+
minimum: 0,
|
|
909
|
+
}),
|
|
910
|
+
total_raised_max: s.number("Maximum total raised by portfolio companies (USD)", {
|
|
911
|
+
minimum: 0,
|
|
912
|
+
}),
|
|
913
|
+
financing_types: financingTypesSchema,
|
|
914
|
+
deal_size_min: s.number("Minimum deal size (USD)", { minimum: 0 }),
|
|
915
|
+
deal_size_max: s.number("Maximum deal size (USD)", { minimum: 0 }),
|
|
916
|
+
deal_start_date: s.string("Filter deals on or after this date (ISO 8601)", {
|
|
917
|
+
format: "date",
|
|
918
|
+
minLength: 1,
|
|
919
|
+
}),
|
|
920
|
+
deal_end_date: s.string("Filter deals on or before this date (ISO 8601)", {
|
|
921
|
+
format: "date",
|
|
922
|
+
minLength: 1,
|
|
923
|
+
}),
|
|
924
|
+
only_lead_deals: s.boolean({
|
|
925
|
+
description: "When true, only count deals where investor was lead",
|
|
926
|
+
default: false,
|
|
927
|
+
}),
|
|
928
|
+
min_matching_deals: s.integer("Minimum number of deals matching the portfolio filters", { minimum: 1 }),
|
|
929
|
+
}, { required: [] }),
|
|
930
|
+
page: pageSchema,
|
|
931
|
+
page_size: s.integer("Number of results per page (max 500)", {
|
|
932
|
+
minimum: 1,
|
|
933
|
+
maximum: 500,
|
|
934
|
+
default: 10,
|
|
935
|
+
}),
|
|
936
|
+
sort_by: s.stringEnum("Sort order for results.\n- **most_recent_deal** — Date of most recent investment (newest first)\n- **recent_deals** — Deals in last 12 months (highest first)\n- **deals_led_ltm** — Lead deals in last 12 months (highest first)\n- **total_deals** — All-time deal count (highest first)\n- **matching_deals** — Deals matching portfolio filters (highest first)", ["most_recent_deal", "recent_deals", "deals_led_ltm", "total_deals", "matching_deals"], { default: "most_recent_deal" }),
|
|
937
|
+
}, { required: [] }),
|
|
938
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
939
|
+
investors: s.array("Investors values.", investorListItemSchema),
|
|
940
|
+
}, {
|
|
941
|
+
required: [],
|
|
942
|
+
additionalProperties: true,
|
|
943
|
+
})),
|
|
944
|
+
}),
|
|
945
|
+
defineProviderAction("fundable", {
|
|
946
|
+
name: "get_investor_by_identifier",
|
|
947
|
+
description: "Use this endpoint when one investor firm is already identified and its full profile, statistics, and portfolio summary are required. Prefer a domain or LinkedIn URL when available; it can be passed directly without calling `/investor/search` first.",
|
|
948
|
+
requiredScopes: [],
|
|
949
|
+
operationType: "read",
|
|
950
|
+
inputSchema: s.object("Parameters for get investor by identifier.", {
|
|
951
|
+
id: s.string("Investor UUID", { format: "uuid", minLength: 1 }),
|
|
952
|
+
domain: s.string('Investor domain or full URL (e.g., "sequoiacap.com" or "https://sequoiacap.com") — URLs are automatically parsed to extract the domain', { minLength: 1 }),
|
|
953
|
+
linkedin: s.string("LinkedIn company URL", { minLength: 1 }),
|
|
954
|
+
crunchbase: s.string("Crunchbase organization URL", { minLength: 1 }),
|
|
955
|
+
}, {
|
|
956
|
+
required: [],
|
|
957
|
+
oneOf: [
|
|
958
|
+
{ required: ["id"] },
|
|
959
|
+
{ required: ["domain"] },
|
|
960
|
+
{ required: ["linkedin"] },
|
|
961
|
+
{ required: ["crunchbase"] },
|
|
962
|
+
],
|
|
963
|
+
}),
|
|
964
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
965
|
+
investor: investorSchema,
|
|
966
|
+
}, {
|
|
967
|
+
required: [],
|
|
968
|
+
additionalProperties: true,
|
|
969
|
+
})),
|
|
970
|
+
}),
|
|
971
|
+
defineProviderAction("fundable", {
|
|
972
|
+
name: "get_investor_deals",
|
|
973
|
+
description: "Use this endpoint when an investor firm is already identified and its complete deal history is required. Prefer a domain or LinkedIn URL when available; it can be passed directly without calling `/investor/search` first.",
|
|
974
|
+
requiredScopes: [],
|
|
975
|
+
operationType: "read",
|
|
976
|
+
inputSchema: s.object("Parameters for get investor deals.", {
|
|
977
|
+
id: s.string("Investor UUID", { format: "uuid", minLength: 1 }),
|
|
978
|
+
domain: s.string('Investor domain or full URL (e.g., "sequoiacap.com" or "https://sequoiacap.com") — URLs are automatically parsed to extract the domain', { minLength: 1 }),
|
|
979
|
+
linkedin: s.string("LinkedIn company URL", { minLength: 1 }),
|
|
980
|
+
crunchbase: s.string("Crunchbase organization URL", { minLength: 1 }),
|
|
981
|
+
page: pageSchema,
|
|
982
|
+
page_size: s.integer("Number of results per page (1-500)", {
|
|
983
|
+
minimum: 1,
|
|
984
|
+
maximum: 500,
|
|
985
|
+
default: 10,
|
|
986
|
+
}),
|
|
987
|
+
}, {
|
|
988
|
+
required: [],
|
|
989
|
+
oneOf: [
|
|
990
|
+
{ required: ["id"] },
|
|
991
|
+
{ required: ["domain"] },
|
|
992
|
+
{ required: ["linkedin"] },
|
|
993
|
+
{ required: ["crunchbase"] },
|
|
994
|
+
],
|
|
995
|
+
}),
|
|
996
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
997
|
+
deals: s.array("Deals values.", investorDealSchema),
|
|
998
|
+
}, {
|
|
999
|
+
required: [],
|
|
1000
|
+
additionalProperties: true,
|
|
1001
|
+
})),
|
|
1002
|
+
}),
|
|
1003
|
+
defineProviderAction("fundable", {
|
|
1004
|
+
name: "search_investors",
|
|
1005
|
+
description: "Use this endpoint primarily to resolve a fuzzy investor-firm name or an uncertain identifier. If a reliable domain or LinkedIn URL is already available, skip this search and pass it directly to `GET /investor` for one full profile or to `POST /investors` for a batch lookup.",
|
|
1006
|
+
requiredScopes: [],
|
|
1007
|
+
operationType: "read",
|
|
1008
|
+
inputSchema: s.object("Parameters for search investors.", {
|
|
1009
|
+
name: s.string("Investor name (fuzzy search with relevance scoring)", { minLength: 1 }),
|
|
1010
|
+
domain: s.string('Investor domain or full URL (e.g., "sequoiacap.com" or "https://sequoiacap.com") — URLs are automatically parsed to extract the domain', { minLength: 1 }),
|
|
1011
|
+
linkedin: s.string("LinkedIn company URL", { minLength: 1 }),
|
|
1012
|
+
crunchbase: s.string("Crunchbase organization URL", { minLength: 1 }),
|
|
1013
|
+
}, {
|
|
1014
|
+
required: [],
|
|
1015
|
+
oneOf: [
|
|
1016
|
+
{ required: ["name"] },
|
|
1017
|
+
{ required: ["domain"] },
|
|
1018
|
+
{ required: ["linkedin"] },
|
|
1019
|
+
{ required: ["crunchbase"] },
|
|
1020
|
+
],
|
|
1021
|
+
}),
|
|
1022
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1023
|
+
investors: s.array("Investors values.", investorSearchResultSchema),
|
|
1024
|
+
}, {
|
|
1025
|
+
required: [],
|
|
1026
|
+
additionalProperties: true,
|
|
1027
|
+
})),
|
|
1028
|
+
}),
|
|
1029
|
+
defineProviderAction("fundable", {
|
|
1030
|
+
name: "search_people",
|
|
1031
|
+
description: "Use this endpoint when the requested result is a list of people.",
|
|
1032
|
+
requiredScopes: [],
|
|
1033
|
+
operationType: "read",
|
|
1034
|
+
inputSchema: s.object("Filters for search people.", {
|
|
1035
|
+
person_type: s.stringEnum("Restrict results to one population. `company` returns only people with a\ncurrent employer (founders, executives, employees). `investor` returns only\npeople who invest. `any` (default) returns the union — anyone matching the\nother filter blocks regardless of population.", ["company", "investor", "any"], { default: "any" }),
|
|
1036
|
+
identifiers: s.object("Look up specific people by identifier", {
|
|
1037
|
+
ids: s.array("Person UUIDs", s.string("Ids item.", { format: "uuid", minLength: 1 })),
|
|
1038
|
+
linkedin_urls: s.array("LinkedIn person URLs (max 100)", s.string("Linkedin urls item.", { minLength: 1 }), { maxItems: 100 }),
|
|
1039
|
+
crunchbase_urls: s.array("Crunchbase person URLs (max 100)", s.string("Crunchbase urls item.", { minLength: 1 }), { maxItems: 100 }),
|
|
1040
|
+
twitter_urls: s.array("Twitter/X URLs (max 100)", s.string("Twitter urls item.", { minLength: 1 }), {
|
|
1041
|
+
maxItems: 100,
|
|
1042
|
+
}),
|
|
1043
|
+
}, { required: [] }),
|
|
1044
|
+
person: s.object("Person attribute filters", {
|
|
1045
|
+
roles: s.array("Person's role at their current employer", s.stringEnum("Roles item.", ["founder", "ceo", "key_person"])),
|
|
1046
|
+
contact_types: s.array("Available contact info on the person", s.stringEnum("Contact types item.", ["linkedin", "email", "phone", "twitter"])),
|
|
1047
|
+
job_titles: s.array("Normalized job-title keys", s.string("Job titles item.", { minLength: 1 })),
|
|
1048
|
+
education_schools: s.array("Education institution IDs", s.string("Education schools item.", { minLength: 1 })),
|
|
1049
|
+
linkedin_companies: s.array("Filter by previous/current employer LinkedIn company IDs", s.string("Linkedin companies item.", { minLength: 1 })),
|
|
1050
|
+
}, { required: [] }),
|
|
1051
|
+
company: s.object("Current-employer attribute filters. Setting any field implicitly requires the person to have a current employer.", {
|
|
1052
|
+
search_query: s.string('AI-powered semantic search against the person\'s current employer — a flexible replacement for an industry tag. First use /industry/search and apply an `industries` or `super_categories` filter when the taxonomy contains the intended category. Use semantic search only for a niche industry or product type the taxonomy cannot express, describing what that company does — its product, technology, or business model (e.g. "climate tech carbon accounting software"). Do NOT use it for stage, location, or funding — apply dedicated filters instead. Results are ordered by relevance and capped at 150 semantic matches.', { minLength: 1 }),
|
|
1053
|
+
min_relevance: s.number("Minimum similarity threshold (0-1). Only applies with search_query.", {
|
|
1054
|
+
minimum: 0,
|
|
1055
|
+
maximum: 1,
|
|
1056
|
+
}),
|
|
1057
|
+
ids: s.array("Filter by current-employer UUIDs", s.string("Ids item.", { format: "uuid", minLength: 1 })),
|
|
1058
|
+
locations: locationsSchema,
|
|
1059
|
+
industries: industriesSchema,
|
|
1060
|
+
super_categories: s.array("Super category permalinks (auto-includes related industries). Use /industry/search to find permalinks. A value that is not an exact permalink is silently ignored (returns zero results, no error).", s.string("Super categories item.", { minLength: 1 })),
|
|
1061
|
+
employee_count: s.array("Current-employer headcount ranges", s.stringEnum("Employee count item.", [
|
|
1062
|
+
"1-10",
|
|
1063
|
+
"11-50",
|
|
1064
|
+
"51-100",
|
|
1065
|
+
"101-250",
|
|
1066
|
+
"251-500",
|
|
1067
|
+
"501-1000",
|
|
1068
|
+
"1001-5000",
|
|
1069
|
+
"5001-10000",
|
|
1070
|
+
"10001+",
|
|
1071
|
+
])),
|
|
1072
|
+
ipo_status: s.array("Current-employer IPO status", s.stringEnum("Ipo status item.", ["public", "private", "acquired", "delisted"])),
|
|
1073
|
+
total_raised_min: s.number("Minimum total raised by current employer (USD)", {
|
|
1074
|
+
minimum: 0,
|
|
1075
|
+
}),
|
|
1076
|
+
total_raised_max: s.number("Maximum total raised by current employer (USD)", {
|
|
1077
|
+
minimum: 0,
|
|
1078
|
+
}),
|
|
1079
|
+
investor_people_ids: s.array("Person UUIDs — filter to people whose current employer has ever raised\nfrom any of these people as an **angel investor** OR as a **lead partner**\nof an investing firm. Resolve via `/people/{id}`.", s.string("Investor people ids item.", { format: "uuid", minLength: 1 })),
|
|
1080
|
+
latest_deal: s.object("Nested. Filters on the current employer's most recent funding round.", {
|
|
1081
|
+
financing_types: s.array("Financing types with optional modifiers (pre, extension)", s.object("Financing types item details.", {
|
|
1082
|
+
type: s.stringEnum("Financing type.", [
|
|
1083
|
+
"SERIES_A",
|
|
1084
|
+
"SERIES_B",
|
|
1085
|
+
"SERIES_C",
|
|
1086
|
+
"SERIES_D",
|
|
1087
|
+
"SERIES_E",
|
|
1088
|
+
"SERIES_F",
|
|
1089
|
+
"SERIES_G",
|
|
1090
|
+
"SERIES_H",
|
|
1091
|
+
"SERIES_I",
|
|
1092
|
+
"SERIES_J",
|
|
1093
|
+
"SERIES_K",
|
|
1094
|
+
"SERIES_L",
|
|
1095
|
+
"SERIES_M",
|
|
1096
|
+
"SEED",
|
|
1097
|
+
"SAFE",
|
|
1098
|
+
"CONVERTIBLE_NOTE",
|
|
1099
|
+
"EQUITY",
|
|
1100
|
+
"PREFERRED",
|
|
1101
|
+
"SECONDARY_MARKET",
|
|
1102
|
+
"DEBT_FINANCING",
|
|
1103
|
+
"GRANT",
|
|
1104
|
+
"NON_EQUITY_ASSISTANCE",
|
|
1105
|
+
"CROWDFUNDING",
|
|
1106
|
+
"INITIAL_COIN_OFFERING",
|
|
1107
|
+
"FUNDING_ROUND",
|
|
1108
|
+
]),
|
|
1109
|
+
pre: s.boolean({
|
|
1110
|
+
description: "Whether to filter for pre-round financing.",
|
|
1111
|
+
default: false,
|
|
1112
|
+
}),
|
|
1113
|
+
extension: s.boolean({
|
|
1114
|
+
description: "Whether to filter for extension rounds.",
|
|
1115
|
+
default: false,
|
|
1116
|
+
}),
|
|
1117
|
+
}, { required: ["type"] })),
|
|
1118
|
+
size_min: s.number("Minimum latest-deal size (USD)", { minimum: 0 }),
|
|
1119
|
+
size_max: s.number("Maximum latest-deal size (USD)", { minimum: 0 }),
|
|
1120
|
+
date_start: s.string("Earliest announcement date (ISO 8601).", {
|
|
1121
|
+
format: "date",
|
|
1122
|
+
minLength: 1,
|
|
1123
|
+
}),
|
|
1124
|
+
date_end: s.string("Latest announcement date (ISO 8601).", {
|
|
1125
|
+
format: "date",
|
|
1126
|
+
minLength: 1,
|
|
1127
|
+
}),
|
|
1128
|
+
investor_ids: s.array("Filter to deals where these investor UUIDs participated", s.string("Investor ids item.", { format: "uuid", minLength: 1 })),
|
|
1129
|
+
investor_locations: s.array("Filter to deals with investors HQ'd in these locations", s.string("Investor locations item.", { minLength: 1 })),
|
|
1130
|
+
}, { required: [] }),
|
|
1131
|
+
}, { required: [] }),
|
|
1132
|
+
investor: s.object("Filters on the investor entity (firm) and on the person's deal activity.\nSetting any field (including any nested `deals.*` field) implicitly requires\nthe person to be an investor.", {
|
|
1133
|
+
ids: s.array("Firm (parent investor) UUIDs", s.string("Ids item.", { format: "uuid", minLength: 1 })),
|
|
1134
|
+
domains: s.array("Firm domains (max 100)", s.string("Domains item.", { minLength: 1 }), { maxItems: 100 }),
|
|
1135
|
+
linkedin_urls: s.array("Firm LinkedIn URLs (max 100)", s.string("Linkedin urls item.", { minLength: 1 }), {
|
|
1136
|
+
maxItems: 100,
|
|
1137
|
+
}),
|
|
1138
|
+
crunchbase_urls: s.array("Firm Crunchbase URLs (max 100)", s.string("Crunchbase urls item.", { minLength: 1 }), { maxItems: 100 }),
|
|
1139
|
+
permalinks: s.array("Fundable firm permalinks (max 100)", s.string("Permalinks item.", { minLength: 1 }), {
|
|
1140
|
+
maxItems: 100,
|
|
1141
|
+
}),
|
|
1142
|
+
locations: s.array("Firm HQ location permalinks", s.string("Locations item.", { minLength: 1 })),
|
|
1143
|
+
employee_count: s.array("Firm headcount ranges", s.stringEnum("Employee count item.", [
|
|
1144
|
+
"1-10",
|
|
1145
|
+
"11-50",
|
|
1146
|
+
"51-100",
|
|
1147
|
+
"101-250",
|
|
1148
|
+
"251-500",
|
|
1149
|
+
"501-1000",
|
|
1150
|
+
"1001-5000",
|
|
1151
|
+
"5001-10000",
|
|
1152
|
+
"10001+",
|
|
1153
|
+
])),
|
|
1154
|
+
deals: s.object("Nested. Combined deal-activity and portfolio-company filters. Includes:\ndeal-level controls (`investment_type`, `min_matching_deals`, `only_lead_deals`),\nround-level filters (`financing_types`, `size_min/max`, `date_start/end`), and\nportfolio-company attributes (`industries`, `super_categories`,\n`portfolio_locations`, `portfolio_employee_count`, `ipo_status`,\n`total_raised_min/max`, plus semantic `search_query` / `min_relevance`).", {
|
|
1155
|
+
search_query: s.string('AI-powered semantic search against the person\'s portfolio companies — a flexible replacement for an industry tag. First use /industry/search and apply an `industries` or `super_categories` filter when the taxonomy contains the intended category. Use semantic search only for a niche industry or product type the taxonomy cannot express, describing what those companies do (e.g. "AI infrastructure for model training"). Do NOT use it for stage, location, or funding — apply dedicated filters instead. Results are ordered by relevance and capped at 150 semantic matches.', { minLength: 1 }),
|
|
1156
|
+
min_relevance: s.number("Minimum similarity threshold (0-1). Only applies with search_query.", {
|
|
1157
|
+
minimum: 0,
|
|
1158
|
+
maximum: 1,
|
|
1159
|
+
}),
|
|
1160
|
+
investment_type: s.stringEnum("Filter by whether the person invests as an angel, under a firm, or both", ["all", "angel", "institutional"], { default: "all" }),
|
|
1161
|
+
only_lead_deals: s.boolean({
|
|
1162
|
+
description: "Only count deals where the person/firm was a lead investor",
|
|
1163
|
+
default: false,
|
|
1164
|
+
}),
|
|
1165
|
+
min_matching_deals: s.integer("Require at least this many deals to match the deal filters", {
|
|
1166
|
+
minimum: 1,
|
|
1167
|
+
}),
|
|
1168
|
+
financing_types: s.array("Financing types for the person's investment activity", s.object("Financing types item details.", {
|
|
1169
|
+
type: s.stringEnum("Financing type.", [
|
|
1170
|
+
"SERIES_A",
|
|
1171
|
+
"SERIES_B",
|
|
1172
|
+
"SERIES_C",
|
|
1173
|
+
"SERIES_D",
|
|
1174
|
+
"SERIES_E",
|
|
1175
|
+
"SERIES_F",
|
|
1176
|
+
"SERIES_G",
|
|
1177
|
+
"SERIES_H",
|
|
1178
|
+
"SERIES_I",
|
|
1179
|
+
"SERIES_J",
|
|
1180
|
+
"SERIES_K",
|
|
1181
|
+
"SERIES_L",
|
|
1182
|
+
"SERIES_M",
|
|
1183
|
+
"SEED",
|
|
1184
|
+
"SAFE",
|
|
1185
|
+
"CONVERTIBLE_NOTE",
|
|
1186
|
+
"EQUITY",
|
|
1187
|
+
"PREFERRED",
|
|
1188
|
+
"SECONDARY_MARKET",
|
|
1189
|
+
"DEBT_FINANCING",
|
|
1190
|
+
"GRANT",
|
|
1191
|
+
"NON_EQUITY_ASSISTANCE",
|
|
1192
|
+
"CROWDFUNDING",
|
|
1193
|
+
"INITIAL_COIN_OFFERING",
|
|
1194
|
+
"FUNDING_ROUND",
|
|
1195
|
+
]),
|
|
1196
|
+
pre: s.boolean({
|
|
1197
|
+
description: "Whether to filter for pre-round financing.",
|
|
1198
|
+
default: false,
|
|
1199
|
+
}),
|
|
1200
|
+
extension: s.boolean({
|
|
1201
|
+
description: "Whether to filter for extension rounds.",
|
|
1202
|
+
default: false,
|
|
1203
|
+
}),
|
|
1204
|
+
}, { required: ["type"] })),
|
|
1205
|
+
size_min: s.number("Minimum deal size (USD) for the person's deal activity", {
|
|
1206
|
+
minimum: 0,
|
|
1207
|
+
}),
|
|
1208
|
+
size_max: s.number("Maximum deal size (USD) for the person's deal activity", {
|
|
1209
|
+
minimum: 0,
|
|
1210
|
+
}),
|
|
1211
|
+
date_start: s.string("Earliest announcement date (ISO 8601).", {
|
|
1212
|
+
format: "date",
|
|
1213
|
+
minLength: 1,
|
|
1214
|
+
}),
|
|
1215
|
+
date_end: s.string("Latest announcement date (ISO 8601).", {
|
|
1216
|
+
format: "date",
|
|
1217
|
+
minLength: 1,
|
|
1218
|
+
}),
|
|
1219
|
+
industries: s.array("Portfolio company industry permalinks", s.string("Industries item.", { minLength: 1 })),
|
|
1220
|
+
super_categories: s.array("Portfolio company super-category permalinks", s.string("Super categories item.", { minLength: 1 })),
|
|
1221
|
+
portfolio_locations: s.array("Portfolio company location permalinks", s.string("Portfolio locations item.", { minLength: 1 })),
|
|
1222
|
+
portfolio_employee_count: s.array("Portfolio company headcount ranges", s.stringEnum("Portfolio employee count item.", [
|
|
1223
|
+
"1-10",
|
|
1224
|
+
"11-50",
|
|
1225
|
+
"51-100",
|
|
1226
|
+
"101-250",
|
|
1227
|
+
"251-500",
|
|
1228
|
+
"501-1000",
|
|
1229
|
+
"1001-5000",
|
|
1230
|
+
"5001-10000",
|
|
1231
|
+
"10001+",
|
|
1232
|
+
])),
|
|
1233
|
+
ipo_status: s.array("Portfolio company IPO status", s.stringEnum("Ipo status item.", ["public", "private"])),
|
|
1234
|
+
total_raised_min: s.number("Minimum total raised by the portfolio company (USD)", {
|
|
1235
|
+
minimum: 0,
|
|
1236
|
+
}),
|
|
1237
|
+
total_raised_max: s.number("Maximum total raised by the portfolio company (USD)", {
|
|
1238
|
+
minimum: 0,
|
|
1239
|
+
}),
|
|
1240
|
+
}, { required: [] }),
|
|
1241
|
+
}, { required: [] }),
|
|
1242
|
+
page: pageSchema,
|
|
1243
|
+
page_size: s.integer("Number of results per page (max 500)", {
|
|
1244
|
+
minimum: 1,
|
|
1245
|
+
maximum: 500,
|
|
1246
|
+
default: 10,
|
|
1247
|
+
}),
|
|
1248
|
+
sort_by: s.stringEnum("Sort order. All values are universally accepted — non-applicable values (e.g. `lead_deal_count`\nwhen no investor filter is set) resolve to 0 / null via COALESCE and naturally sort to the bottom (DESC).\nIgnored when `company.search_query` or `investor.deals.search_query` is set (results are then\nordered by semantic relevance).", [
|
|
1249
|
+
"most_recent_deal_date",
|
|
1250
|
+
"total_raised",
|
|
1251
|
+
"latest_deal_size",
|
|
1252
|
+
"name",
|
|
1253
|
+
"total_deal_count",
|
|
1254
|
+
"deal_count_last_12_months",
|
|
1255
|
+
"lead_deal_count",
|
|
1256
|
+
"lead_deal_count_last_12_months",
|
|
1257
|
+
"filtered_deal_count",
|
|
1258
|
+
], { default: "most_recent_deal_date" }),
|
|
1259
|
+
}, { required: [] }),
|
|
1260
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1261
|
+
people: s.array("People values.", personSearchResultSchema),
|
|
1262
|
+
}, {
|
|
1263
|
+
required: [],
|
|
1264
|
+
additionalProperties: true,
|
|
1265
|
+
})),
|
|
1266
|
+
}),
|
|
1267
|
+
defineProviderAction("fundable", {
|
|
1268
|
+
name: "get_person",
|
|
1269
|
+
description: "Use this endpoint when one person is already identified and their full profile is required. Prefer a LinkedIn URL when available; it can be passed directly without calling `/person/search` first.",
|
|
1270
|
+
requiredScopes: [],
|
|
1271
|
+
operationType: "read",
|
|
1272
|
+
inputSchema: s.object("Parameters for get person.", {
|
|
1273
|
+
id: s.string("Person UUID", { format: "uuid", minLength: 1 }),
|
|
1274
|
+
linkedin: s.string("LinkedIn person URL", { minLength: 1 }),
|
|
1275
|
+
crunchbase: s.string("Crunchbase person URL", { minLength: 1 }),
|
|
1276
|
+
twitter: s.string("Twitter/X URL", { minLength: 1 }),
|
|
1277
|
+
}, {
|
|
1278
|
+
required: [],
|
|
1279
|
+
oneOf: [
|
|
1280
|
+
{ required: ["id"] },
|
|
1281
|
+
{ required: ["linkedin"] },
|
|
1282
|
+
{ required: ["crunchbase"] },
|
|
1283
|
+
{ required: ["twitter"] },
|
|
1284
|
+
],
|
|
1285
|
+
}),
|
|
1286
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1287
|
+
person: personDetailSchema,
|
|
1288
|
+
}, {
|
|
1289
|
+
required: [],
|
|
1290
|
+
additionalProperties: true,
|
|
1291
|
+
})),
|
|
1292
|
+
}),
|
|
1293
|
+
defineProviderAction("fundable", {
|
|
1294
|
+
name: "get_person_email",
|
|
1295
|
+
description: "Use this endpoint only when a verified email is explicitly required for an identified person. Return a verified email for a person identified by UUID, LinkedIn, Crunchbase, or Twitter/X. Provide one identifier. If multiple identifiers are supplied, the endpoint uses the first non-empty value in this order: `id`, `linkedin`, `crunchbase`, `twitter`. Unlocks contact information for the account; new unlocks cost 5 credits and repeats cost 0. Requires non-trial Pro+, Enterprise, or API plan.",
|
|
1296
|
+
requiredScopes: [],
|
|
1297
|
+
operationType: "write",
|
|
1298
|
+
inputSchema: s.object("Parameters for get person email.", {
|
|
1299
|
+
id: s.string("Fundable person UUID", { format: "uuid", minLength: 1 }),
|
|
1300
|
+
linkedin: s.string("LinkedIn person URL, slug, or supported normalized identifier", {
|
|
1301
|
+
minLength: 1,
|
|
1302
|
+
}),
|
|
1303
|
+
crunchbase: s.string("Crunchbase person URL or supported normalized identifier", {
|
|
1304
|
+
minLength: 1,
|
|
1305
|
+
}),
|
|
1306
|
+
twitter: s.string("Twitter/X URL or handle", { minLength: 1 }),
|
|
1307
|
+
}, {
|
|
1308
|
+
required: [],
|
|
1309
|
+
anyOf: [
|
|
1310
|
+
{ required: ["id"] },
|
|
1311
|
+
{ required: ["linkedin"] },
|
|
1312
|
+
{ required: ["crunchbase"] },
|
|
1313
|
+
{ required: ["twitter"] },
|
|
1314
|
+
],
|
|
1315
|
+
}),
|
|
1316
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1317
|
+
person_id: s.string("Fundable person UUID.", { format: "uuid" }),
|
|
1318
|
+
email: s.string("Verified email address.", { format: "email" }),
|
|
1319
|
+
already_unlocked: s.boolean("True when this user previously unlocked the same email."),
|
|
1320
|
+
}, {
|
|
1321
|
+
required: [],
|
|
1322
|
+
additionalProperties: true,
|
|
1323
|
+
})),
|
|
1324
|
+
}),
|
|
1325
|
+
defineProviderAction("fundable", {
|
|
1326
|
+
name: "get_person_phone",
|
|
1327
|
+
description: "Use this endpoint only when a verified phone number is explicitly required for an identified person. Return a verified phone number for a person identified by UUID, LinkedIn, Crunchbase, or Twitter/X. Provide one identifier. If multiple identifiers are supplied, the endpoint uses the first non-empty value in this order: `id`, `linkedin`, `crunchbase`, `twitter`. Unlocks contact information for the account; new unlocks cost 5 credits and repeats cost 0. Requires non-trial Pro+, Enterprise, or API plan.",
|
|
1328
|
+
requiredScopes: [],
|
|
1329
|
+
operationType: "write",
|
|
1330
|
+
inputSchema: s.object("Parameters for get person phone.", {
|
|
1331
|
+
id: s.string("Fundable person UUID", { format: "uuid", minLength: 1 }),
|
|
1332
|
+
linkedin: s.string("LinkedIn person URL, slug, or supported normalized identifier", {
|
|
1333
|
+
minLength: 1,
|
|
1334
|
+
}),
|
|
1335
|
+
crunchbase: s.string("Crunchbase person URL or supported normalized identifier", {
|
|
1336
|
+
minLength: 1,
|
|
1337
|
+
}),
|
|
1338
|
+
twitter: s.string("Twitter/X URL or handle", { minLength: 1 }),
|
|
1339
|
+
}, {
|
|
1340
|
+
required: [],
|
|
1341
|
+
anyOf: [
|
|
1342
|
+
{ required: ["id"] },
|
|
1343
|
+
{ required: ["linkedin"] },
|
|
1344
|
+
{ required: ["crunchbase"] },
|
|
1345
|
+
{ required: ["twitter"] },
|
|
1346
|
+
],
|
|
1347
|
+
}),
|
|
1348
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1349
|
+
person_id: s.string("Fundable person UUID.", { format: "uuid" }),
|
|
1350
|
+
phone: s.string("Phone number in E.164 format."),
|
|
1351
|
+
already_unlocked: s.boolean("True when this account previously unlocked the same phone number."),
|
|
1352
|
+
}, {
|
|
1353
|
+
required: [],
|
|
1354
|
+
additionalProperties: true,
|
|
1355
|
+
})),
|
|
1356
|
+
}),
|
|
1357
|
+
defineProviderAction("fundable", {
|
|
1358
|
+
name: "get_person_deals",
|
|
1359
|
+
description: "Use this endpoint when a person is already identified and their investment history is required. It returns deals the person joined as an angel plus lead or firm deals. Prefer a LinkedIn URL when available; it can be passed directly without first calling `/person/search`.",
|
|
1360
|
+
requiredScopes: [],
|
|
1361
|
+
operationType: "read",
|
|
1362
|
+
inputSchema: s.object("Parameters for get person deals.", {
|
|
1363
|
+
id: s.string("Person UUID", { format: "uuid", minLength: 1 }),
|
|
1364
|
+
linkedin: s.string("LinkedIn person URL", { minLength: 1 }),
|
|
1365
|
+
crunchbase: s.string("Crunchbase person URL", { minLength: 1 }),
|
|
1366
|
+
twitter: s.string("Twitter/X URL", { minLength: 1 }),
|
|
1367
|
+
page: pageSchema,
|
|
1368
|
+
page_size: s.integer("Number of results per page (1-500)", {
|
|
1369
|
+
minimum: 1,
|
|
1370
|
+
maximum: 500,
|
|
1371
|
+
default: 10,
|
|
1372
|
+
}),
|
|
1373
|
+
}, {
|
|
1374
|
+
required: [],
|
|
1375
|
+
oneOf: [
|
|
1376
|
+
{ required: ["id"] },
|
|
1377
|
+
{ required: ["linkedin"] },
|
|
1378
|
+
{ required: ["crunchbase"] },
|
|
1379
|
+
{ required: ["twitter"] },
|
|
1380
|
+
],
|
|
1381
|
+
}),
|
|
1382
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1383
|
+
deals: s.array("Deals values.", personDealSchema),
|
|
1384
|
+
}, {
|
|
1385
|
+
required: [],
|
|
1386
|
+
additionalProperties: true,
|
|
1387
|
+
})),
|
|
1388
|
+
}),
|
|
1389
|
+
defineProviderAction("fundable", {
|
|
1390
|
+
name: "search_person",
|
|
1391
|
+
description: "Use this endpoint primarily to resolve a fuzzy person name or uncertain identifier. If a reliable LinkedIn URL is already available, skip this search and pass it directly to `GET /person` for one full profile or to `POST /people` for a batch lookup.",
|
|
1392
|
+
requiredScopes: [],
|
|
1393
|
+
operationType: "read",
|
|
1394
|
+
inputSchema: s.object("Parameters for search person.", {
|
|
1395
|
+
name: s.string("Fuzzy search by person name", { minLength: 1 }),
|
|
1396
|
+
id: s.string("Person UUID", { format: "uuid", minLength: 1 }),
|
|
1397
|
+
linkedin: s.string("LinkedIn person URL", { minLength: 1 }),
|
|
1398
|
+
crunchbase: s.string("Crunchbase person URL", { minLength: 1 }),
|
|
1399
|
+
twitter: s.string("Twitter/X URL", { minLength: 1 }),
|
|
1400
|
+
person_type: s.stringEnum("Optional filter restricting results to one pool. `investor` keeps only\npeople tracked as investors/angels; `company` keeps only non-investor\npeople (founders, CEOs, employees). Omit to search both. Applies to\nboth name and identifier modes — identifier lookups return empty if\nthe resolved person doesn't match the requested type.", ["investor", "company"]),
|
|
1401
|
+
}, {
|
|
1402
|
+
required: [],
|
|
1403
|
+
oneOf: [
|
|
1404
|
+
{ required: ["name"] },
|
|
1405
|
+
{ required: ["id"] },
|
|
1406
|
+
{ required: ["linkedin"] },
|
|
1407
|
+
{ required: ["crunchbase"] },
|
|
1408
|
+
{ required: ["twitter"] },
|
|
1409
|
+
],
|
|
1410
|
+
}),
|
|
1411
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1412
|
+
people: s.array("People values.", s.object("People item details.", {
|
|
1413
|
+
id: s.string("Unique Fundable record identifier.", { format: "uuid" }),
|
|
1414
|
+
name: s.string("Display name of the record."),
|
|
1415
|
+
linkedin_url: s.nullable(s.string("LinkedIn profile URL.", { format: "uri" })),
|
|
1416
|
+
crunchbase_url: s.nullable(s.string("Crunchbase profile URL.", { format: "uri" })),
|
|
1417
|
+
twitter_url: s.nullable(s.string("Twitter/X profile URL.", { format: "uri" })),
|
|
1418
|
+
person_type: s.stringEnum("Which pool the result came from. Mirrors the request-body discriminator on POST /people.", ["investor", "company"]),
|
|
1419
|
+
}, {
|
|
1420
|
+
required: [],
|
|
1421
|
+
additionalProperties: true,
|
|
1422
|
+
})),
|
|
1423
|
+
}, {
|
|
1424
|
+
required: [],
|
|
1425
|
+
additionalProperties: true,
|
|
1426
|
+
})),
|
|
1427
|
+
}),
|
|
1428
|
+
defineProviderAction("fundable", {
|
|
1429
|
+
name: "get_alerts",
|
|
1430
|
+
description: "Retrieve saved alert data including all deals that matched the alert criteria within the specified date range. Results include a flattened array of deals sorted by date (newest first) with duplicates removed. Requires Pro+ or Enterprise; consumes no credits.",
|
|
1431
|
+
requiredScopes: [],
|
|
1432
|
+
operationType: "read",
|
|
1433
|
+
inputSchema: s.object("Parameters for get alerts.", {
|
|
1434
|
+
alert_ids: s.string('Comma-separated list of alert UUIDs (up to 10 alerts per request).\nAll alerts must be associated with your API key\'s account.\nExample: "uuid1,uuid2,uuid3"', { minLength: 1 }),
|
|
1435
|
+
start_date: s.string("Start date for the alert data range (ISO 8601 format).\nResults will include deals from this date onwards.", { format: "date-time", minLength: 1 }),
|
|
1436
|
+
end_date: s.string("End date for the alert data range (ISO 8601 format).\nResults will include deals up to and including this date.\n\n**Note:** All dates are processed in UTC timezone. Deals are grouped into time periods based on UTC date boundaries.", { format: "date-time", minLength: 1 }),
|
|
1437
|
+
}, { required: ["alert_ids", "start_date", "end_date"] }),
|
|
1438
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1439
|
+
alerts: s.array("Array of alert configurations with their timeline data", alertSchema),
|
|
1440
|
+
}, {
|
|
1441
|
+
required: [],
|
|
1442
|
+
additionalProperties: true,
|
|
1443
|
+
})),
|
|
1444
|
+
}),
|
|
1445
|
+
defineProviderAction("fundable", {
|
|
1446
|
+
name: "get_alert_configurations",
|
|
1447
|
+
description: "Retrieve all alert configurations for the authenticated user (identified by API key). Returns configuration metadata including filters, frequency, and descriptions. Requires Pro+ or Enterprise; consumes no credits.",
|
|
1448
|
+
requiredScopes: [],
|
|
1449
|
+
operationType: "read",
|
|
1450
|
+
inputSchema: s.object("Parameters for get alert configurations.", {}, { required: [] }),
|
|
1451
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1452
|
+
configurations: s.array("Array of alert configurations for this email", alertConfigurationSchema),
|
|
1453
|
+
}, {
|
|
1454
|
+
required: [],
|
|
1455
|
+
additionalProperties: true,
|
|
1456
|
+
})),
|
|
1457
|
+
}),
|
|
1458
|
+
defineProviderAction("fundable", {
|
|
1459
|
+
name: "search_locations",
|
|
1460
|
+
description: "Use this endpoint to resolve a human-readable city, state, country, or region into the exact permalink required by location filters on discovery endpoints. Agents should not guess permalinks. Select the result that matches the user's intended geography, then pass its permalink to the relevant filter.",
|
|
1461
|
+
requiredScopes: [],
|
|
1462
|
+
operationType: "read",
|
|
1463
|
+
inputSchema: s.object("Parameters for search locations.", {
|
|
1464
|
+
name: s.string("Location name to search for", { minLength: 1 }),
|
|
1465
|
+
type: s.stringEnum("Filter by specific location type", ["CITY", "STATE", "REGION", "COUNTRY"]),
|
|
1466
|
+
location_type: s.stringEnum("Alias for 'type' parameter", ["CITY", "STATE", "REGION", "COUNTRY"]),
|
|
1467
|
+
}, { required: ["name"], not: { required: ["type", "location_type"] } }),
|
|
1468
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1469
|
+
locations: s.array("Locations values.", locationSearchResultSchema),
|
|
1470
|
+
}, {
|
|
1471
|
+
required: [],
|
|
1472
|
+
additionalProperties: true,
|
|
1473
|
+
})),
|
|
1474
|
+
}),
|
|
1475
|
+
defineProviderAction("fundable", {
|
|
1476
|
+
name: "search_industries",
|
|
1477
|
+
description: "Use this endpoint before semantic search to resolve a human-readable category into an exact `INDUSTRY` or `SUPER_CATEGORY` permalink. Agents should not guess permalinks. If the taxonomy has an appropriate result, use its permalink in the structured industry filter. Use `search_query` only when the requested niche is not represented by the taxonomy.",
|
|
1478
|
+
requiredScopes: [],
|
|
1479
|
+
operationType: "read",
|
|
1480
|
+
inputSchema: s.object("Parameters for search industries.", {
|
|
1481
|
+
name: s.string("Industry name to search for", { minLength: 1 }),
|
|
1482
|
+
type: s.stringEnum("Filter by specific industry type", ["INDUSTRY", "SUPER_CATEGORY"]),
|
|
1483
|
+
industry_type: s.stringEnum("Alias for 'type' parameter", ["INDUSTRY", "SUPER_CATEGORY"]),
|
|
1484
|
+
}, { required: ["name"], not: { required: ["type", "industry_type"] } }),
|
|
1485
|
+
outputSchema: fundableResponse(s.object("Requested Fundable records.", {
|
|
1486
|
+
industries: s.array("Industries values.", industrySearchResultSchema),
|
|
1487
|
+
}, {
|
|
1488
|
+
required: [],
|
|
1489
|
+
additionalProperties: true,
|
|
1490
|
+
})),
|
|
1491
|
+
}),
|
|
1492
|
+
];
|
|
1493
|
+
export const fundableRoutes = {
|
|
1494
|
+
search_deals: { method: "POST", path: "/deals" },
|
|
1495
|
+
get_deal_by_id: { method: "GET", path: "/deals/{id}" },
|
|
1496
|
+
get_deal_investors: { method: "GET", path: "/deals/{id}/investors" },
|
|
1497
|
+
get_company: { method: "GET", path: "/company" },
|
|
1498
|
+
get_company_deals: { method: "GET", path: "/company/deals" },
|
|
1499
|
+
search_company: { method: "GET", path: "/company/search" },
|
|
1500
|
+
search_companies: { method: "POST", path: "/companies" },
|
|
1501
|
+
list_investors: { method: "POST", path: "/investors" },
|
|
1502
|
+
get_investor_by_identifier: { method: "GET", path: "/investor" },
|
|
1503
|
+
get_investor_deals: { method: "GET", path: "/investor/deals" },
|
|
1504
|
+
search_investors: { method: "GET", path: "/investor/search" },
|
|
1505
|
+
search_people: { method: "POST", path: "/people" },
|
|
1506
|
+
get_person: { method: "GET", path: "/person" },
|
|
1507
|
+
get_person_email: { method: "GET", path: "/person/email" },
|
|
1508
|
+
get_person_phone: { method: "GET", path: "/person/phone" },
|
|
1509
|
+
get_person_deals: { method: "GET", path: "/person/deals" },
|
|
1510
|
+
search_person: { method: "GET", path: "/person/search" },
|
|
1511
|
+
get_alerts: { method: "GET", path: "/alerts" },
|
|
1512
|
+
get_alert_configurations: { method: "GET", path: "/alerts/configurations" },
|
|
1513
|
+
search_locations: { method: "GET", path: "/location/search" },
|
|
1514
|
+
search_industries: { method: "GET", path: "/industry/search" },
|
|
1515
|
+
};
|