Double opt-in intros for AI data

Your data is training someone's model. You're just not getting paid.

A cold email asks for attention. A double opt-in intro asks for permission. On Highford, nobody starts a conversation they didn't agree to.

What it is

Highford is a prospecting tool and matching marketplace for AI training data. When a buyer and a data owner match, Highford sends a double opt-in intro:

  1. You opt in by previewing the draft and confirming the send. Outreach is never automatic.
  2. They opt in by accepting from the link in the email. Or they decline.

You're on reply-to and cc. Once both sides say yes, the conversation is yours.

Who it's for

  • AI labs and model teams reaching data owners without cold-blasting them.
  • Data owners who want inbound interest without publishing their contact details. On wanted posts, the contact stays locked until the buyer accepts an intro.
  • Agents acting for either side. A buyer or an owner can be a person or that person's agent, so intros can run person to person, agent to agent, or person to agent.

How it compares

HighfordCold email toolsGeneral warm-intro platforms
ConsentBoth sides opt inRecipient never askedBoth sides, through a mutual connector
Where matches come fromAI data listings and buyer data requestsYour own listYour network
Cost of a noA decline returns the free intro, or the paid creditSunkVaries
Agent accessAPI and MCP: request_intro, decide_introVariesVaries

General warm-intro platforms work well when you already share a network. Highford is for when the counterparty is a stranger who listed a dataset or posted a data request.

The rules

  • There's a free tier with a monthly allowance of intros. After that, intros use paid credits. See pricing.
  • An intro is charged only after the email actually sends.
  • A decline returns the free intro, or the paid credit if one was spent. The unlock stays used.
  • A reply in the thread isn't charged again.
  • If email isn't configured, nothing is sent and nothing is charged.

FAQ

What is a double opt-in intro?

An introduction where both sides agree before the conversation starts. On Highford, the requester confirms the send, and the listing contact accepts or declines from the email.

What happens if the contact declines?

You get the free intro back, or the paid credit if one was spent. The contact unlock stays used.

Does Highford sell or broker data?

Highford does not sell or broker data, and takes no cut. A license is between the data owner and the buyer.

Can an AI agent send intros?

Yes, through the REST API or MCP. The agent previews and then confirms each send. Nothing goes out automatically.

How much does it cost?

There's a free tier with a monthly allowance of intros. See pricing for current plans.

Machine view of /double-opt-in-intros

This page, for an agent

The same page as markdown, plus the API and MCP calls that belong to it.

API

Search listings

GET /api/v1/listings?q=support+ticket+archive

Skill file

GET /skill.md

Create a free account

POST /api/v1/signup
Content-Type: application/json

{"email":"ada@example.com"}

api_key and token come back immediately. Search works with that key. Unlocks, intros, and credits wait until the sign-in link is opened. POST /api/v1/verify with {"email":"ada@example.com","code":"<6 digits>"} still confirms the address.
A new account starts with 10 credits. Each month it includes 50 contact unlocks, 5 intros, and 1 CSV export once the email is confirmed. Summary search stays free.

MCP

MCP server

{
  "mcpServers": {
    "highford": {
      "url": "/mcp"
    }
  }
}

Start here

search_deals {"q":"support ticket archive"}

JSON

{
  "site": "Highford",
  "page": "/double-opt-in-intros",
  "markdown": "/double-opt-in-intros?format=md",
  "api": [
    {
      "label": "Search listings",
      "request": "GET /api/v1/listings?q=support+ticket+archive"
    },
    {
      "label": "Skill file",
      "request": "GET /skill.md"
    },
    {
      "label": "Create a free account",
      "request": "POST /api/v1/signup\nContent-Type: application/json\n\n{\"email\":\"ada@example.com\"}\n\napi_key and token come back immediately. Search works with that key. Unlocks, intros, and credits wait until the sign-in link is opened. POST /api/v1/verify with {\"email\":\"ada@example.com\",\"code\":\"<6 digits>\"} still confirms the address.\nA new account starts with 10 credits. Each month it includes 50 contact unlocks, 5 intros, and 1 CSV export once the email is confirmed. Summary search stays free."
    }
  ],
  "mcp": {
    "url": "/mcp",
    "calls": [
      {
        "label": "MCP server",
        "request": "{\n  \"mcpServers\": {\n    \"highford\": {\n      \"url\": \"/mcp\"\n    }\n  }\n}"
      },
      {
        "label": "Start here",
        "request": "search_deals {\"q\":\"support ticket archive\"}"
      }
    ]
  }
}

Markdown

Reading this page…