From fiber
Enrich a list of LinkedIn URLs with work emails, personal emails, and phone numbers using Fiber AI. Use this when the user says "enrich these LinkedIn URLs", "I have a CSV of people", "bulk reveal emails for these profiles", "get contact info for this list", "decorate these contacts with phone/email", or otherwise hands over a set of LinkedIn identifiers and wants contact data back.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fiber:enrich-linkedin-csv <a list of LinkedIn URLs - paste, CSV path, or count><a list of LinkedIn URLs - paste, CSV path, or count>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Take a list of LinkedIn URLs and return work emails, personal emails, and phone numbers. Route by list size so cost and latency stay predictable.
Take a list of LinkedIn URLs and return work emails, personal emails, and phone numbers. Route by list size so cost and latency stay predictable.
/fiber:enrich/fiber:search or /fiber:find-and-enrich-by-role/fiber:audience or /fiber:build-recruiting-audience/fiber:sdk-ts or /fiber:sdk-pyRoute strictly by list size. Never upgrade the user to turbo by default.
syncQuickContactReveal one at a time. If the user explicitly asks for the fastest possible return and accepts higher cost, use syncTurboContactEnrichment instead.startBatchContactDetails once with the full list, then poll pollBatchContactDetails no more often than every 5 seconds. Surface partial results between polls so the user sees progress./fiber:build-recruiting-audience or /fiber:audience. Those flows handle export, dedup, and long-term list management.triggerExhaustiveContactEnrichment and poll pollExhaustiveContactEnrichmentResult every 5-15 seconds. Only do this after confirming extra cost with the user.For the 6-9 URL grey zone, prefer startBatchContactDetails - the batch endpoint is cheaper per row than looping sync calls.
Before any reveal, ask the user which enrichment types they want (work email, personal email, phone) — each one is priced separately. Call get_endpoint_details_full("syncQuickContactReveal") to surface current enrichmentType field names. Every response includes chargeInfo with exact credits charged, so agents can track and audit cost per row programmatically. All enrichment tiers work on standard self-serve API keys — no enterprise gate required.
Every operation in this skill except the poll endpoints charges credits. Confirm before running.
syncQuickContactReveal loop: "Reveal work emails for these N profiles? Estimated cost: ~N x credits. Proceed?"startBatchContactDetails: "Batch-reveal contact details for all N profiles. Estimated cost: ~N x credits (partial results stream back). Proceed?"syncTurboContactEnrichment: explicitly flag that turbo costs more than quick. Never pick it silently.triggerExhaustiveContactEnrichment on misses: "We found nothing on M of the N rows. Run the exhaustive waterfall on those M? Each success charges credits; misses do not."getOrgCredits first if the user hasn't confirmed they have headroom.getOrgCredits, and point the user to https://www.fiber.ai/app/subscription./fiber:setup.PENDING > 10 minutes: keep polling but tell the user and ask whether to wait or cancel. Do not re-trigger - you will double-charge.https://www.linkedin.com/in/...): normalize or ask the user to fix before submitting; the API will 400 on bad URLs.Accept: text/markdown to https://api.fiber.ai/openapi.json to get the agent-friendly index at the same URL (Stripe pattern).TypeScript - sync single path (loop with a small concurrency cap):
import { createClient, syncQuickContactReveal } from "@fiberai/sdk";
const client: ReturnType<typeof createClient> = createClient({ baseUrl: "https://api.fiber.ai" });
const apiKey: string = process.env.FIBER_API_KEY!;
const urls: string[] = ["https://www.linkedin.com/in/example"];
for (const url of urls) {
const result: Awaited<ReturnType<typeof syncQuickContactReveal>> = await syncQuickContactReveal({
client,
body: { apiKey, linkedinUrl: url },
});
console.log(result.data);
}
The batch endpoints (startBatchContactDetails + pollBatchContactDetails) are available at https://api.fiber.ai/ai-docs/startBatchContactDetails.md and https://api.fiber.ai/ai-docs/pollBatchContactDetails.md. Check if your installed @fiberai/sdk version exports these functions; if not, call them via fetch or the MCP.
Python - check if your installed fiberai package exports syncQuickContactReveal (inspect fiberai.api.contact_details). If not available in your version, call the endpoint directly with httpx or use the MCP:
import os
import httpx
urls: list[str] = ["https://www.linkedin.com/in/example"]
api_key: str = os.environ["FIBER_API_KEY"]
with httpx.Client(base_url="https://api.fiber.ai", timeout=60.0) as client:
for url in urls:
response: httpx.Response = client.post(
"/v1/contact-details/single",
json={"apiKey": api_key, "linkedinUrl": url},
)
response.raise_for_status()
print(response.json())
npx claudepluginhub fiber-ai/fiber-ai-plugin --plugin fiberGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.