Skip to content

Commit 987ef1b

Browse files
feat(anymailfinder): add Anymail Finder email finder and verifier integration
Five tools on https://api.anymailfinder.com/v5.1 (find person email by name + company or LinkedIn URL, find decision maker email by department, find company emails, verify email, get account), a block with canvas sentences, templates and skills, and hosted-key support where getCost bills the credits_charged the API reports (0 on a miss or a 30-day repeat) at $0.02 per credit. Adds an anymailfinder provider to the work-email and email-verification enrichment waterfalls, reading valid_email so a risky guess never fills a cell; registers the BYOK provider id, settings entry and costs row; monochrome icon; docs intro; tests for pricing and the cascade provider; regenerated tool metadata, docs, block names, docs manifest and deployment config. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 43cd243 commit 987ef1b

32 files changed

Lines changed: 1511 additions & 6 deletions

File tree

‎apps/docs/components/icons.tsx‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2882,6 +2882,19 @@ export function ElevenLabsIcon(props: SVGProps<SVGSVGElement>) {
28822882
)
28832883
}
28842884

2885+
export function AnymailFinderIcon(props: SVGProps<SVGSVGElement>) {
2886+
return (
2887+
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='-1 -1 40 40' fill='none'>
2888+
<path
2889+
fillRule='evenodd'
2890+
clipRule='evenodd'
2891+
d='M0.914602 12.1473C0.914602 12.1473 13.8811 21.2685 19.0491 22.5118C16.5611 25.4521 9.66107 31.2255 9.75306 31.167C17.1059 26.8151 32.5413 13.7506 32.5413 13.7506C33.02 13.4454 33.5147 13.6719 33.6455 14.2523L37.3308 30.6191C37.4615 31.1995 37.0496 31.7654 36.4095 31.8833L6.78525 37.3397C6.1457 37.4575 5.47651 36.8836 5.29052 36.0576L0.0463848 12.7683C-0.13958 11.9425 0.250498 11.6686 0.914602 12.1473ZM2.52542 9.77466C2.52542 9.77466 19.3996 -0.381419 21.4381 0.011091C23.428 0.394256 31.1593 11.1758 31.5264 11.689L31.5399 11.7079C31.8475 12.0512 31.6451 12.3014 31.0874 12.2682L2.42364 10.571C1.86514 10.5381 1.91192 10.1802 2.52542 9.77466Z'
2892+
fill='currentColor'
2893+
/>
2894+
</svg>
2895+
)
2896+
}
2897+
28852898
export function FindymailIcon(props: SVGProps<SVGSVGElement>) {
28862899
const id = useId()
28872900
const gradient0 = `findymail_paint0_${id}`

‎apps/docs/components/ui/icon-mapping.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
AirweaveIcon,
2929
AlgoliaIcon,
3030
AmplitudeIcon,
31+
AnymailFinderIcon,
3132
ApifyIcon,
3233
ApiIcon,
3334
ApolloIcon,
@@ -328,6 +329,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
328329
airweave: AirweaveIcon,
329330
algolia: AlgoliaIcon,
330331
amplitude: AmplitudeIcon,
332+
anymailfinder: AnymailFinderIcon,
331333
api: ApiIcon,
332334
api_trigger: ApiIcon,
333335
apify: ApifyIcon,
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
---
2+
title: Anymail Finder
3+
description: Find and verify B2B work emails, paying only for verified results
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="anymailfinder"
10+
color="#0E2240"
11+
/>
12+
13+
{/* MANUAL-CONTENT-START:intro */}
14+
[Anymail Finder](https://anymailfinder.com/) is a B2B email finder and verifier. Every address it returns from a find was verified in real time before the response, catch-all domains included, and a find is charged only when it returns a verified email.
15+
16+
With the Anymail Finder block, you can:
17+
18+
- **Find a person's work email**: from their full name and company domain or name, or from their LinkedIn profile URL alone.
19+
- **Find a decision maker**: name a company and a department (CEO, finance, HR, sales and so on) and get one person back with their title, LinkedIn URL and verified email, when you do not know who to look for.
20+
- **List emails at a company**: up to 20 verified addresses at a company, generic mailboxes and named employees, filtered by type.
21+
- **Verify addresses you already have**: a live check that returns valid, invalid or risky, including on catch-all domains.
22+
- **Check your balance**: read the remaining credits on the account.
23+
24+
To connect, create an API key under Settings, API in your Anymail Finder account and paste it into the block, or add it as a workspace BYOK key. Finds cost 1 credit on a verified hit (2 for a decision maker), verifications 0.2 credits each; misses and repeats of the same search within 30 days are free, and every response states the exact charge in `credits_charged`.
25+
26+
In Sim, the Anymail Finder block lets your agents fill in missing emails on prospect tables, find the right contact at a target account, clean a list before an outbound send, and enrich CRM records with addresses that have already been verified.
27+
{/* MANUAL-CONTENT-END */}
28+
29+
30+
## Usage Instructions
31+
32+
Integrate Anymail Finder to find verified work emails from a name and company or a LinkedIn URL, find the decision maker in a department at a company, list verified emails at a company, verify addresses you already have, and check your credit balance. A find is charged only when it returns a verified email.
33+
34+
35+
36+
## Actions
37+
38+
### Anymail Finder Find Person Email
39+
40+
Find a person's verified work email from their name and company domain or name, or from their LinkedIn URL alone. Charges 1 credit only when a verified email is found.
41+
42+
#### Input
43+
44+
| Parameter | Type | Required | Description |
45+
| --------- | ---- | -------- | ----------- |
46+
| `full_name` | string | No | Person's full name \(e.g., 'Satya Nadella'\). Required together with domain or company_name unless linkedin_url is given |
47+
| `domain` | string | No | Company domain \(e.g., microsoft.com\). Preferred over company_name |
48+
| `company_name` | string | No | Company name \(e.g., Microsoft\). Used only when domain is not provided |
49+
| `linkedin_url` | string | No | Person's LinkedIn profile URL. Can be sent on its own, or together with the name to refine the match |
50+
| `apiKey` | string | Yes | Anymail Finder API Key |
51+
52+
#### Output
53+
54+
| Parameter | Type | Description |
55+
| --------- | ---- | ----------- |
56+
| `email` | string | Email address found, including risky ones that could not be verified |
57+
| `valid_email` | string | The email address only when email_status is valid; the one to send to |
58+
| `email_status` | string | valid, risky, not_found or blacklisted |
59+
| `mx_domain` | string | Mail provider of the domain \(e.g., google.com, outlook.com\) |
60+
| `mx_host` | string | Primary MX hostname of the domain |
61+
| `person_full_name` | string | Matched full name |
62+
| `person_company_name` | string | Company name, when a LinkedIn profile was involved |
63+
| `person_job_title` | string | Job title, when a LinkedIn profile was involved |
64+
| `credits_charged` | number | Credits charged for this call \(1 on a verified hit, 0 otherwise\) |
65+
66+
### Anymail Finder Find Decision Maker Email
67+
68+
Find the name, job title and verified email of a decision maker in a given department at a company, when you do not know who to look for. Charges 2 credits only when a verified email is found.
69+
70+
#### Input
71+
72+
| Parameter | Type | Required | Description |
73+
| --------- | ---- | -------- | ----------- |
74+
| `domain` | string | No | Company domain \(e.g., microsoft.com\). Preferred over company_name |
75+
| `company_name` | string | No | Company name \(e.g., Microsoft\). Used only when domain is not provided |
76+
| `decision_maker_category` | array | Yes | One to five departments, tried in order until a verified email is found: ceo, engineering, finance, hr, it, logistics, marketing, operations, buyer, sales \(plus any custom categories on the account\) |
77+
| `apiKey` | string | Yes | Anymail Finder API Key |
78+
79+
#### Output
80+
81+
| Parameter | Type | Description |
82+
| --------- | ---- | ----------- |
83+
| `email` | string | Email address found |
84+
| `valid_email` | string | The email address only when email_status is valid; the one to send to |
85+
| `email_status` | string | valid, not_found or blacklisted |
86+
| `decision_maker_category` | string | The requested category the person was found in |
87+
| `person_full_name` | string | Full name |
88+
| `person_first_name` | string | First name |
89+
| `person_last_name` | string | Last name |
90+
| `person_job_title` | string | Job title |
91+
| `person_linkedin_url` | string | LinkedIn profile URL |
92+
| `mx_domain` | string | Mail provider of the domain \(e.g., google.com, outlook.com\) |
93+
| `mx_host` | string | Primary MX hostname of the domain |
94+
| `credits_charged` | number | Credits charged for this call \(2 on a verified hit, 0 otherwise\) |
95+
96+
### Anymail Finder Find Company Emails
97+
98+
List up to 20 verified email addresses at a company, generic ones like contact@ and individual employees. Charges 1 credit for the whole list, only when at least one address is found.
99+
100+
#### Input
101+
102+
| Parameter | Type | Required | Description |
103+
| --------- | ---- | -------- | ----------- |
104+
| `domain` | string | No | Company domain \(e.g., microsoft.com\). Preferred over company_name |
105+
| `company_name` | string | No | Company name \(e.g., Microsoft\). Used only when domain is not provided |
106+
| `email_type` | string | No | 'any' \(default\) returns both kinds, 'generic' only role addresses like info@ or sales@, 'personal' only individual employees' work addresses |
107+
| `apiKey` | string | Yes | Anymail Finder API Key |
108+
109+
#### Output
110+
111+
| Parameter | Type | Description |
112+
| --------- | ---- | ----------- |
113+
| `emails` | array | Email addresses found at the company \(up to 20\) |
114+
| `valid_emails` | array | The verified subset of emails; the ones to send to |
115+
| `email_status` | string | valid, risky, not_found or blacklisted |
116+
| `mx_domain` | string | Mail provider of the domain \(e.g., google.com, outlook.com\) |
117+
| `mx_host` | string | Primary MX hostname of the domain |
118+
| `credits_charged` | number | Credits charged for this call \(1 when verified addresses were found, 0 otherwise\) |
119+
120+
### Anymail Finder Verify Email
121+
122+
Check whether an email address exists and can receive mail, including on catch-all domains. Charges 0.2 credits per check whatever the outcome; repeats within 30 days are free.
123+
124+
#### Input
125+
126+
| Parameter | Type | Required | Description |
127+
| --------- | ---- | -------- | ----------- |
128+
| `email` | string | Yes | Email address to verify \(e.g., john@example.com\) |
129+
| `apiKey` | string | Yes | Anymail Finder API Key |
130+
131+
#### Output
132+
133+
| Parameter | Type | Description |
134+
| --------- | ---- | ----------- |
135+
| `email_status` | string | valid \(deliverable\), invalid \(does not exist or does not accept mail\) or risky \(could not be determined\) |
136+
| `mx_domain` | string | Mail provider of the domain \(e.g., google.com, outlook.com\) |
137+
| `mx_host` | string | Primary MX hostname of the domain |
138+
| `credits_charged` | number | Credits charged for this call \(0.2, or 0 on a 30-day repeat\) |
139+
140+
### Anymail Finder Get Account
141+
142+
Retrieve the remaining credit balance of the authenticated account. Free.
143+
144+
#### Input
145+
146+
| Parameter | Type | Required | Description |
147+
| --------- | ---- | -------- | ----------- |
148+
| `apiKey` | string | Yes | Anymail Finder API Key |
149+
150+
#### Output
151+
152+
| Parameter | Type | Description |
153+
| --------- | ---- | ----------- |
154+
| `credits_left` | number | Remaining credits on the account |
155+
| `account_email` | string | Login email of the account owner |
156+
157+

‎apps/docs/content/docs/integrations/meta.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"airweave",
1212
"algolia",
1313
"amplitude",
14+
"anymailfinder",
1415
"apify",
1516
"apollo",
1617
"appconfig",

‎apps/docs/content/docs/platform/costs.mdx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ The BYOK settings page groups providers the same way.
202202
| Hunter | Email finder, verification, and domain search |
203203
| People Data Labs | Person and company enrichment, search, and identity |
204204
| Findymail | Email finder, verification, and phone lookup |
205+
| Anymail Finder | Verified email finder, decision maker lookup, and verification |
205206
| Prospeo | Person and company enrichment and search |
206207
| Wiza | Prospect search, individual reveal, and company enrichment |
207208
| Datagma | Email, phone, person, and company enrichment |

‎apps/sim/app/workspace/[workspaceId]/settings/components/byok/byok.tsx‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useParams } from 'next/navigation'
77
import { useQueryState } from 'nuqs'
88
import {
99
AnthropicIcon,
10+
AnymailFinderIcon,
1011
BasetenIcon,
1112
BrandfetchIcon,
1213
CohereIcon,
@@ -279,6 +280,13 @@ const PROVIDERS: (BYOKManagerProvider & { id: BYOKProviderId })[] = [
279280
description: 'Email finder, verification, and phone lookup',
280281
placeholder: 'Enter your Findymail API key',
281282
},
283+
{
284+
id: 'anymailfinder',
285+
name: 'Anymail Finder',
286+
icon: AnymailFinderIcon,
287+
description: 'Verified email finder, decision maker lookup, and verification',
288+
placeholder: 'Enter your Anymail Finder API key',
289+
},
282290
{
283291
id: 'prospeo',
284292
name: 'Prospeo',
@@ -399,6 +407,7 @@ const PROVIDER_SECTIONS: BYOKProviderSection[] = [
399407
'hunter',
400408
'peopledatalabs',
401409
'findymail',
410+
'anymailfinder',
402411
'prospeo',
403412
'wiza',
404413
'datagma',

0 commit comments

Comments
 (0)