terse-types 0.1.2 → 0.1.4

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/dist/Tools.js CHANGED
@@ -2840,6 +2840,161 @@ export const resendSendTemplateTool = defineTool({
2840
2840
  inputSchema: resendSendTemplateInputSchema,
2841
2841
  outputSchema: resendSendTemplateOutputSchema
2842
2842
  });
2843
+ // Apollo schemas — projections of Apollo.io's large payloads down to the fields GTM workflows need
2844
+ export const apolloOrganizationSummarySchema = z.object({
2845
+ id: z.string().nullable(),
2846
+ name: z.string().nullable(),
2847
+ websiteUrl: z.string().nullable(),
2848
+ primaryDomain: z.string().nullable(),
2849
+ industry: z.string().nullable(),
2850
+ estimatedNumEmployees: z.number().int().nullable()
2851
+ });
2852
+ export const apolloEnrichedPersonSchema = z.object({
2853
+ id: z.string(),
2854
+ firstName: z.string().nullable(),
2855
+ lastName: z.string().nullable(),
2856
+ name: z.string().nullable(),
2857
+ title: z.string().nullable(),
2858
+ seniority: z.string().nullable(),
2859
+ email: z.string().nullable(),
2860
+ emailStatus: z.string().nullable(),
2861
+ linkedinUrl: z.string().nullable(),
2862
+ city: z.string().nullable(),
2863
+ state: z.string().nullable(),
2864
+ country: z.string().nullable(),
2865
+ organization: apolloOrganizationSummarySchema.nullable()
2866
+ });
2867
+ export const apolloOrganizationSchema = apolloOrganizationSummarySchema.extend({
2868
+ keywords: z.array(z.string()),
2869
+ annualRevenuePrinted: z.string().nullable(),
2870
+ totalFundingPrinted: z.string().nullable(),
2871
+ latestFundingStage: z.string().nullable(),
2872
+ foundedYear: z.number().int().nullable(),
2873
+ city: z.string().nullable(),
2874
+ state: z.string().nullable(),
2875
+ country: z.string().nullable(),
2876
+ linkedinUrl: z.string().nullable(),
2877
+ shortDescription: z.string().nullable(),
2878
+ technologyNames: z.array(z.string())
2879
+ });
2880
+ export const apolloSearchPersonSchema = z.object({
2881
+ id: z.string(),
2882
+ firstName: z.string().nullable(),
2883
+ lastName: z.string().nullable(),
2884
+ name: z.string().nullable(),
2885
+ title: z.string().nullable(),
2886
+ hasEmail: z.boolean().nullable(),
2887
+ linkedinUrl: z.string().nullable(),
2888
+ city: z.string().nullable(),
2889
+ state: z.string().nullable(),
2890
+ country: z.string().nullable(),
2891
+ organization: apolloOrganizationSummarySchema.nullable()
2892
+ });
2893
+ // Apollo input schemas
2894
+ const apolloPersonMatchFields = {
2895
+ id: z.string().nullable().optional().describe("Apollo person ID, e.g. from apollo_search_people results. The most reliable match key."),
2896
+ email: z.string().nullable().optional().describe("The person's email address."),
2897
+ firstName: z.string().nullable().optional().describe("The person's first name."),
2898
+ lastName: z.string().nullable().optional().describe("The person's last name."),
2899
+ name: z.string().nullable().optional().describe("The person's full name, if first/last are not known separately."),
2900
+ domain: z.string().nullable().optional().describe("The person's employer domain, without www or @ (e.g. acme.com)."),
2901
+ organizationName: z.string().nullable().optional().describe("The person's employer name."),
2902
+ linkedinUrl: z.string().nullable().optional().describe("The person's LinkedIn profile URL.")
2903
+ };
2904
+ export const apolloEnrichPersonInputSchema = z.object({
2905
+ integrationId: z.string().describe("The integration ID of the Apollo connection to use."),
2906
+ ...apolloPersonMatchFields,
2907
+ revealPersonalEmails: z.boolean().nullable().optional().describe("Also return personal emails (may consume extra credits; suppressed for people in GDPR regions). Default false.")
2908
+ });
2909
+ export const apolloBulkEnrichPeopleInputSchema = z.object({
2910
+ integrationId: z.string().describe("The integration ID of the Apollo connection to use."),
2911
+ people: z.array(z.object(apolloPersonMatchFields)).describe("Up to 10 people to enrich (Apollo's bulk_match limit). Each entry needs at least one match key (id, email, or name + domain)."),
2912
+ revealPersonalEmails: z.boolean().nullable().optional().describe("Also return personal emails (may consume extra credits; suppressed for people in GDPR regions). Default false.")
2913
+ });
2914
+ export const apolloEnrichOrganizationInputSchema = z.object({
2915
+ integrationId: z.string().describe("The integration ID of the Apollo connection to use."),
2916
+ domain: z.string().describe("The company domain to enrich, without www or @ (e.g. acme.com).")
2917
+ });
2918
+ export const apolloSearchPeopleInputSchema = z.object({
2919
+ integrationId: z.string().describe("The integration ID of the Apollo connection to use."),
2920
+ personTitles: z.array(z.string()).nullable().optional().describe('Job titles to match, e.g. ["Head of Marketing", "DevRel"].'),
2921
+ includeSimilarTitles: z.boolean().nullable().optional().describe("Whether to also match titles similar to personTitles. Default true."),
2922
+ personSeniorities: z.array(z.string()).nullable().optional().describe("Seniorities to match: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern."),
2923
+ personLocations: z.array(z.string()).nullable().optional().describe('Person locations, e.g. ["New York, US", "Germany"].'),
2924
+ organizationLocations: z.array(z.string()).nullable().optional().describe("Company HQ locations."),
2925
+ organizationDomains: z.array(z.string()).nullable().optional().describe("Company domains to search within, without www or @."),
2926
+ organizationNumEmployeesRanges: z.array(z.string()).nullable().optional().describe('Headcount ranges as "min,max" strings, e.g. ["11,50", "51,200"].'),
2927
+ keywords: z.string().nullable().optional().describe("Free-text keywords to narrow results."),
2928
+ contactEmailStatus: z.array(z.string()).nullable().optional().describe("Filter by email status: verified, unverified, likely to engage, unavailable."),
2929
+ page: z.number().int().min(1).nullable().optional().describe("Result page to fetch. Default 1."),
2930
+ perPage: z.number().int().min(1).max(100).nullable().optional().describe("Results per page, 1-100. Default 25.")
2931
+ });
2932
+ export const apolloEnrichPersonTool = defineTool({
2933
+ name: "apollo_enrich_person",
2934
+ description: "Enrich a person via Apollo.io by Apollo ID, email, or name plus company domain. Returns contact details, seniority, location, and employer firmographics. Consumes one Apollo export credit per successful match.",
2935
+ inputSchema: apolloEnrichPersonInputSchema,
2936
+ outputSchema: toolOutputBaseSchema.extend({
2937
+ found: z.boolean(),
2938
+ person: apolloEnrichedPersonSchema.nullable()
2939
+ })
2940
+ });
2941
+ export const apolloBulkEnrichPeopleTool = defineTool({
2942
+ name: "apollo_bulk_enrich_people",
2943
+ description: "Enrich up to 10 people in a single Apollo.io call, using the same match keys as apollo_enrich_person. Consumes one Apollo export credit per matched person. Prefer this over repeated apollo_enrich_person calls for lists.",
2944
+ inputSchema: apolloBulkEnrichPeopleInputSchema,
2945
+ outputSchema: toolOutputBaseSchema.extend({
2946
+ matches: z.array(apolloEnrichedPersonSchema),
2947
+ matchedCount: z.number().int(),
2948
+ requestedCount: z.number().int()
2949
+ })
2950
+ });
2951
+ export const apolloEnrichOrganizationTool = defineTool({
2952
+ name: "apollo_enrich_organization",
2953
+ description: "Enrich a company via Apollo.io by domain. Returns firmographics: industry, headcount, revenue, funding, location, keywords, and technologies. Consumes one Apollo export credit per matched company.",
2954
+ inputSchema: apolloEnrichOrganizationInputSchema,
2955
+ outputSchema: toolOutputBaseSchema.extend({
2956
+ found: z.boolean(),
2957
+ organization: apolloOrganizationSchema.nullable()
2958
+ })
2959
+ });
2960
+ export const apolloSearchPeopleTool = defineTool({
2961
+ name: "apollo_search_people",
2962
+ description: "Search Apollo.io for people by title, seniority, location, company domain, and headcount filters to build prospect lists. Consumes no credits but requires the connected key to be an Apollo master API key. Results never include emails — pass result ids to apollo_bulk_enrich_people to unlock contact data.",
2963
+ inputSchema: apolloSearchPeopleInputSchema,
2964
+ outputSchema: toolOutputBaseSchema.extend({
2965
+ people: z.array(apolloSearchPersonSchema),
2966
+ totalEntries: z.number().int(),
2967
+ page: z.number().int(),
2968
+ perPage: z.number().int()
2969
+ })
2970
+ });
2971
+ export const apolloJobPostingSchema = z.object({
2972
+ id: z.string(),
2973
+ title: z.string().nullable(),
2974
+ url: z.string().nullable(),
2975
+ city: z.string().nullable(),
2976
+ state: z.string().nullable(),
2977
+ country: z.string().nullable(),
2978
+ postedAt: z.string().nullable(),
2979
+ lastSeenAt: z.string().nullable()
2980
+ });
2981
+ export const apolloListJobPostingsInputSchema = z.object({
2982
+ integrationId: z.string().describe("The integration ID of the Apollo connection to use."),
2983
+ organizationId: z.string().describe("The Apollo organization ID to list job postings for, e.g. the id returned by apollo_enrich_organization or in apollo_search_people results."),
2984
+ page: z.number().int().min(1).nullable().optional().describe("Result page to fetch. Default 1."),
2985
+ perPage: z.number().int().min(1).max(500).nullable().optional().describe("Results per page, 1-500. Default 100. Apollo charges per page returned, so prefer one large page over many small ones.")
2986
+ });
2987
+ export const apolloListJobPostingsTool = defineTool({
2988
+ name: "apollo_list_job_postings",
2989
+ description: "List active job postings at a company via Apollo.io, as a hiring signal (open roles, titles, locations, posted dates). Takes the Apollo organization ID from apollo_enrich_organization. Works with any Apollo key (no master key needed) but consumes Apollo credits per page of results returned — fetch one large page instead of paging in small steps. Postings include title/url/location metadata only, not full descriptions; assess role fit from the title.",
2990
+ inputSchema: apolloListJobPostingsInputSchema,
2991
+ outputSchema: toolOutputBaseSchema.extend({
2992
+ postings: z.array(apolloJobPostingSchema),
2993
+ totalPostings: z.number().int(),
2994
+ page: z.number().int(),
2995
+ perPage: z.number().int()
2996
+ })
2997
+ });
2843
2998
  export const ToolDefinitions = {
2844
2999
  [linearCreateTicketTool.name]: linearCreateTicketTool,
2845
3000
  [linearUpdateTicketTool.name]: linearUpdateTicketTool,
@@ -2922,7 +3077,12 @@ export const ToolDefinitions = {
2922
3077
  [webResearchTool.name]: webResearchTool,
2923
3078
  [imageEditTool.name]: imageEditTool,
2924
3079
  [memoryTool.name]: memoryTool,
2925
- [resendSendTemplateTool.name]: resendSendTemplateTool
3080
+ [resendSendTemplateTool.name]: resendSendTemplateTool,
3081
+ [apolloEnrichPersonTool.name]: apolloEnrichPersonTool,
3082
+ [apolloBulkEnrichPeopleTool.name]: apolloBulkEnrichPeopleTool,
3083
+ [apolloEnrichOrganizationTool.name]: apolloEnrichOrganizationTool,
3084
+ [apolloSearchPeopleTool.name]: apolloSearchPeopleTool,
3085
+ [apolloListJobPostingsTool.name]: apolloListJobPostingsTool
2926
3086
  };
2927
3087
  export const toolsWithIntegrationId = new Set(Object.entries(ToolDefinitions)
2928
3088
  .filter(([, def]) => {