Repository navigation
feat(anymailfinder): add Anymail Finder email finder and verifier integration - #8563
emma-anymailfinder wants to merge 2 commits into
Conversation
…egration 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>
|
@emma-anymailfinder is attempting to deploy a commit to the Sim Team on Vercel. A member of the Team first needs to authorize it. |
|
…t a missing charge to zero Only the selected operation's subBlocks are forwarded to the tool, so a company name left in another operation's field cannot leak into a lookup through the shared company_name mapping. The four billable tools pass credits_charged through untouched, so a response without it hits the getCost guard instead of being recorded as free. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Both Greptile findings addressed in the follow-up commit: the block now forwards only the selected operation's fields (the three *_company_name subBlocks share one tool param, so a stale value could leak into another lookup), and the four billable tools pass credits_charged through untouched so a response without it hits the getCost guard instead of being recorded as free. |
|
@TheodoreSpeaks you merged the hosted-key work in #4777, so you may be the right person for this. Greptile's two findings are fixed in the second commit. I'll rebase and regenerate the generated files as soon as someone can review, so they don't drift again. If you'd rather serve it on Sim's hosted key, we can set up a funded account. |
Summary
Adds Anymail Finder, a B2B work-email finder and verifier, as an integration: five tools, a block, hosted-key (BYOK) support with API-reported pricing, and provider slots in the Work Email and Email Verification enrichment waterfalls. Footprint mirrors the Findymail integration.
I work at Anymail Finder. Contact: team@anymailfinder.com.
If you want to judge the data quality yourselves before deciding anything, email that address and we will send test credits for a side-by-side run against the providers already in the waterfalls. We also publish a benchmark of email finders and verifiers, with method and domain list, at https://anymailfinder.com/email-finder-benchmark. Anymail Finder has been running since 2015.
If you then want to serve it on Sim's hosted keys, we will set up a funded account; the env vars are
ANYMAILFINDER_API_KEY_COUNTandANYMAILFINDER_API_KEY_1..N.Tools (
apps/sim/tools/anymailfinder/)anymailfinder_find_person_emailPOST /v5.1/find-email/personanymailfinder_find_decision_maker_emailPOST /v5.1/find-email/decision-makeranymailfinder_find_company_emailsPOST /v5.1/find-email/companyanymailfinder_verify_emailPOST /v5.1/verify-emailanymailfinder_get_accountGET /v5.1/accountAuth is the raw key in
Authorization. Misses are HTTP 200 withemail_status: not_found;valid_emailis set only for a verified address, and that is the field the enrichments read, so ariskyguess never fills a cell. Repeats of the same search or verification within 30 days are free. Response shapes come from the published OpenAPI document (https://api.anymailfinder.com/openapi.json) and were checked against live calls.Pricing and throttling (per the add-hosted-key skill)
credits_charged, the exact amount for that call (0 on a miss or a repeat).transformResponsepasses it through andgetCostbillscredits_charged * ANYMAILFINDER_CREDIT_USD, throwing when the field is missing rather than guessing.ANYMAILFINDER_CREDIT_USD = 0.02, from the $199/month 10,000-credit plan ($0.0199/credit), the same basis asFINDYMAIL_CREDIT_USD. Monthly plans run from $29/400 credits to $799/100k; one-time packs from $1,090/100k. Adjust to the plan Sim funds.per_request, 60 requests per minute per workspace, matching Findymail.Block
apps/sim/blocks/blocks/anymailfinder.ts: five operations,canvasPresentationsentences for each, the duplicate-apiKeypattern so the account-balance operation always uses the user's own key,tools.config.paramscoercing the department list from JSON or comma-separated text, seven templates and four skills grounded in the five operations.Enrichments
work-email: ananymailfinderprovider after Findymail (LinkedIn) and before Prospeo. One provider covers name + domain, LinkedIn URL alone, or both;mapOutputreadsvalid_email.email-verification: ananymailfinderprovider after MillionVerifier and before Enrow.validandinvalidare verdicts;riskyfalls through likeunknowndoes for the other verifiers.Both positions are deliberately conservative for a vendor-submitted provider. The cascade runner logs a hit per provider, so once you have a few weeks of hit rate and cost per hit, reorder on your own numbers; we will not argue for a slot we have not earned on your data.
BYOK and docs
BYOKProviderIdunion,byokProviderIdSchema,PROVIDERSand the EnrichmentPROVIDER_SECTIONSinbyok.tsx, a row incosts.mdx.fill='currentColor', blockbgColor#0E2240.integrations/anymailfinder.mdxwith the MANUAL-CONTENT intro; the rest is generator output.Tests
tools/enrichment-hosting.test.ts: a hit bills one credit, a miss and a 30-day repeat bill 0, decision maker 2, company list 1, verification 0.2, and a response withoutcredits_chargedthrows.enrichments/work-email/work-email.test.ts: the provider accepts name + domain, LinkedIn alone, or both, skips with neither, fills fromvalid_emailonly, and treats ariskyresult as a miss.Checks run
bun run tool-metadata:generate,bun run scripts/generate-docs.ts,bun run generate:block-successors,bun run docs-manifest:generate,bun run deployment-config:generate(output committed)bun run check:byok-providers,check:canvas-sentences --block=anymailfinder,check:bare-icons,check:tool-request-boundarybun run integration-catalog:check,docs:check,deployment-config:check,tool-metadata:checkbun run type-check,bun run lint,bunx vitest run tools/enrichment-hosting.test.ts enrichments/🤖 Generated with Claude Code