Skip to main content
4 min read

Data accuracy & GDPR

Account-based marketing for AI agents means the data has to be answerable. Every value abm.dev returns can be traced, scored, and explained. This article covers how, who is accountable for it, and what that means for your own GDPR obligations.

How a value earns its place

abm.dev resolves ten data sources into one response — LinkedIn, Companies House, Perplexity, Tavily, Hunter, and more. You send one request; the resolution happens behind it.

One request, one shape. Send a person, a company domain, or a LinkedIn URL:

Bash
curl https://api.abm.dev/api/v2/enrichments \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"targets":[{"type":"person","email":"[email protected]"}]}'

Retrieve a result by id:

Bash
curl https://api.abm.dev/api/v2/enrichments/{id} \
  -H "x-api-key: YOUR_API_KEY"

Note

Send your key as either an x-api-key header (used above) or Authorization: Bearer on POST /api/v2/enrichments. Confirm against the live API reference at /api-reference/enrichment.

A response carries eighty-nine canonical fields — forty-three about the person, forty-six about the company — alongside forty signals. See /docs/concepts/canonical-fields.

Three things travel with every value

This is the part that matters for accuracy. Each value comes with:

  • A source.Which provider it came from. Not “the internet” — a named origin.
  • A confidence score, from zero to one. Higher means more agreement across the sources that resolved it. There are no bands and no zero-to-one-hundred scale; it is a number between zero and one. See /docs/concepts/confidence-scores.
  • A selection_reason. Why that value was chosen.

So you never have to take a value on faith. You can read where it came from, how sure abm.dev is, and why it was chosen — then decide. More on the model at /docs/concepts/enrichment.

No fabricated facts

The hard rule, stated plainly:

  • No silent fallbacks. A value is cited or it is not returned.
  • No fabricated facts. Nothing is guessed to fill a gap.
  • No per-source bills, no per-field charges. All ten sources are included in one price.

If a field is absent, that is the answer: abm.dev could not verify it. An empty field is honest. Read more on the sources at /docs/concepts/data-sources.

Who handles the data

abm.dev is operated by Foxley Farm Operations Ltd, a company registered in the United Kingdom (Company No. 16392009), based in Oakham. The service is built to be GDPR-compliant.

What that means in practice:

  • The data describes professional identities — people in their working capacity and the companies they work for.
  • Every value is sourced and explained, which is what an audit trail needs.
  • You remain the controller of the data you request and store. abm.dev resolves and returns it; what you do with it next is your responsibility.

Your side of GDPR

abm.dev gives you sourced, scored, explained data. GDPR still asks something of you as the party using it. In short:

  1. Have a lawful basis. Know why you are processing each contact — typically legitimate interest for B2B outreach — and be able to say so.
  2. Be ready to honour requests. Access, correction, and erasure requests land with you. Keep enrichment results where you can find and remove them.
  3. Re-enrich as data decays. Professional data goes stale — people change jobs, companies rename. Re-enrich periodically rather than trusting an old value.
  4. Mind the confidence score. A low score is a signal to verify before you act, not a fact to forward.

For agents and pipelines

The same accountability holds however you call abm.dev.

  • Agents in Claude. The MCP server at https://mcp.abm.dev/mcp exposes abm.dev’s enrichment tools inside Claude — in Settings, open Connectors, choose Custom, and paste the URL. The exact tool list is unverified; see /for-agents.
  • Agent loops. Results can stream in real time over SSE, so an agent can act on values as they resolve.
  • Batch jobs. Webhooks fire when a batch job finishes. The job model lives at /api-reference/jobs.
  • Scripts and terminals. Call the REST endpoints directly, as shown above.

Whichever path, the source, confidence, and selection_reason ride along with each value. The accountability does not change between a script and an agent.

Where to go next