Skip to content

feat(findymail): add Findymail B2B contact data integration#4654

Merged
waleedlatif1 merged 4 commits into
stagingfrom
waleedlatif1/add-integration
May 18, 2026
Merged

feat(findymail): add Findymail B2B contact data integration#4654
waleedlatif1 merged 4 commits into
stagingfrom
waleedlatif1/add-integration

Conversation

@waleedlatif1
Copy link
Copy Markdown
Collaborator

Summary

  • adds Findymail integration with 11 tools: verified email finders (by name, LinkedIn, domain roles), email verification, reverse email lookup with profile enrichment, company info, employee discovery, phone lookup, technology stack search/lookup, and credit check
  • single API-key block with operation dropdown, gradient-rendered envelope icon
  • regenerates docs (also picks up stale doc updates for cloudwatch mute/unmute and file_v4 that landed without doc regen)

Type of Change

  • New integration

Testing

Tested manually

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

Adds 11 tools covering verified email lookup (by name, LinkedIn, domain
roles), email verification, reverse email lookup with profile enrichment,
company info, employee discovery, phone lookup, technology stack
detection, and credit checks. Single API-key block with operation
dropdown, gradient-rendered icon, and generated docs.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 18, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview, Comment May 18, 2026 7:48pm

Request Review

@cursor
Copy link
Copy Markdown

cursor Bot commented May 18, 2026

PR Summary

Medium Risk
Adds a new third-party, API-key–authenticated integration with multiple HTTP tools and response transforms, which can affect runtime behavior and error handling when calling external services. Changes are mostly additive and isolated to the new findymail block/tool wiring plus docs/metadata updates.

Overview
Adds a new Findymail tool integration, including a FindymailBlock with an operation dropdown and API-key auth, plus 11 new tool implementations wired into the tool/blocks registries for email finding/verification, reverse lookup, company/employee/phone lookup, technology search, and credit checks.

Updates docs and catalog metadata to expose the new findymail tool (new docs page, icons, tool listings), and also refreshes docs/metadata for CloudWatch mute/unmute operations and the File tool bump to file_v4.

Reviewed by Cursor Bugbot for commit 280d73a. Configure here.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 18, 2026

Greptile Summary

This PR adds a Findymail B2B contact data integration with 11 tools covering email finding, verification, reverse lookup, company enrichment, employee discovery, phone lookup, technology stack search, and credit checking.

  • All 11 tool files follow a consistent structure — correct visibility: 'user-only' on API keys, proper !response.ok error handling returning { success: false, error, output: <empty shape> }, and typed request/response interfaces in a shared types.ts.
  • The block config handles array-typed params (roles, job_titles, technologies) with JSON-parse-then-comma-split fallback, and gates each operation's subfields behind operation-specific conditions.

Confidence Score: 5/5

Safe to merge — all 11 tools correctly handle API errors, use proper credential visibility, and are consistently wired through the block config and tool registry.

The integration is a pure addition with no changes to existing code paths. Error handling, API key visibility, and the block-to-tool dispatch are all implemented correctly. The only outstanding nit (placeholder operation descriptions in integrations.json) was already flagged in a prior review round and has no runtime impact.

No files require special attention.

Important Files Changed

Filename Overview
apps/sim/tools/findymail/types.ts Defines all param/response interfaces and shared output property constants (FINDYMAIL_CONTACT_OUTPUT, FINDYMAIL_TECHNOLOGIES_OUTPUT, etc.) — well structured and consistently used across all 11 tools.
apps/sim/blocks/blocks/findymail.ts Block config with operation dropdown, conditional subfields, and a params() mapper that handles array parsing and empty-value stripping; all operation IDs match the tool registry.
apps/sim/tools/findymail/find_employees.ts Uses Array.isArray(data) ? data : (data.data ?? []) for response extraction — slightly inconsistent with other tools that use named fields (e.g., data.contacts, data.technologies), but likely reflects the actual Findymail employees API response envelope.
apps/sim/tools/findymail/get_company.ts All three identifier fields (linkedin_url, domain, name) are optional; empty-body requests are caught by the API's error response, which the tool handles correctly via !response.ok.
apps/sim/tools/findymail/reverse_email_lookup.ts Correctly surfaces the full LinkedIn profile payload; with_profile is conditionally included in the request body only when truthy, matching API expectations.
apps/sim/tools/findymail/verify_email.ts Simple, clean implementation with correct error handling; uses user-only visibility for the API key as required by the project rule.
apps/sim/tools/registry.ts All 11 Findymail tools registered with correct key names matching block config operation IDs; insertion follows existing alphabetical ordering.
apps/sim/app/(landing)/integrations/data/integrations.json Findymail entry added with correct metadata; three operation descriptions remain as placeholder "Find someone" text (Find Email From Name, Find Email From LinkedIn, Find Phone).

Sequence Diagram

sequenceDiagram
    participant User
    participant FindymailBlock
    participant ToolRegistry
    participant FindymailAPI

    User->>FindymailBlock: Select operation + enter params
    FindymailBlock->>FindymailBlock: "params() strips empty values,<br/>parses arrays (JSON → comma-split fallback)"
    FindymailBlock->>ToolRegistry: Dispatch to e.g. findymail_find_email_from_name
    ToolRegistry->>FindymailAPI: "POST /api/search/name<br/>Authorization: Bearer {apiKey}"
    alt Success (2xx)
        FindymailAPI-->>ToolRegistry: "{ contact: { name, email, domain } }"
        ToolRegistry-->>FindymailBlock: "{ success: true, output: { contact } }"
    else Error (4xx/5xx)
        FindymailAPI-->>ToolRegistry: "{ message: "..." }"
        ToolRegistry-->>FindymailBlock: "{ success: false, error: "...", output: { contact: null } }"
    end
    FindymailBlock-->>User: Show result
Loading

Reviews (3): Last reviewed commit: "improvement(findymail): exclude operatio..." | Re-trigger Greptile

Comment thread apps/sim/tools/findymail/verify_email.ts
Comment thread apps/sim/tools/findymail/search_technologies.ts Outdated
Comment thread apps/sim/tools/findymail/search_technologies.ts
Comment thread apps/docs/components/ui/icon-mapping.ts
- All 11 tools now check response.ok and return success:false with the API error message on non-2xx responses
- search_technologies now maps last_detected_at to match lookup_technologies and the shared output schema
- Restore file_v3 in docs icon-mapping (translated docs still reference it)
@waleedlatif1
Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1
Copy link
Copy Markdown
Collaborator Author

@cursor review

Comment thread apps/sim/blocks/blocks/findymail.ts
Match the convention used by enrich/apify/box/calendly — destructure out
operation before forwarding the rest to the tool call, so the operation
key doesn't leak into the tool payload.
@waleedlatif1
Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1
Copy link
Copy Markdown
Collaborator Author

@cursor review

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 280d73a. Configure here.

@waleedlatif1 waleedlatif1 merged commit f3cf8fc into staging May 18, 2026
13 checks passed
@waleedlatif1 waleedlatif1 deleted the waleedlatif1/add-integration branch May 18, 2026 19:53
waleedlatif1 added a commit that referenced this pull request May 18, 2026
* feat(findymail): add Findymail B2B contact data integration

Adds 11 tools covering verified email lookup (by name, LinkedIn, domain
roles), email verification, reverse email lookup with profile enrichment,
company info, employee discovery, phone lookup, technology stack
detection, and credit checks. Single API-key block with operation
dropdown, gradient-rendered icon, and generated docs.

* fix(findymail): handle HTTP errors and surface last_detected_at

- All 11 tools now check response.ok and return success:false with the API error message on non-2xx responses
- search_technologies now maps last_detected_at to match lookup_technologies and the shared output schema
- Restore file_v3 in docs icon-mapping (translated docs still reference it)

* improvement(findymail): exclude operation from params transform

Match the convention used by enrich/apify/box/calendly — destructure out
operation before forwarding the rest to the tool call, so the operation
key doesn't leak into the tool payload.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant