What happened: how the Primitive X-ray was made

The X-ray of Primitive · the deck · how every X-ray is made · X-ray another name

This page shows what the agents did to make the X-ray of Primitive, in the order it happened. Every number comes from two files: the raw record of the search (data/xray/primitive/search/20261107T190845Z.json) and the X-ray itself (data/xray/primitive/xray.json).

Step 1 of 6

1. The ask

On 7 November 2026 at 19:08 UTC, xray@web-summit.dinis typed one line into the search tool (admin/tools/xray-search.mjs): "Primitive, email built for AI agents", as a company. It was not typed at the booth: that path is still being built (WS-194).

The search tool is the orchestrator. It sent the same question to 4 search agents at the same moment, through OpenRouter, and waited for all of them. Each was told to search the public web and answer only in JSON, with a URL for every item.

  1. Perplexity search perplexity/sonar
  2. OpenAI search openai/gpt-5.4-nano:online
  3. Gemini search google/gemini-3.1-flash-lite:online
  4. OpenRouter web search anthropic/claude-haiku-5.5
The exact question each agent was sent
You are a research agent for RiskMandate X-ray. Subject (a company): "Primitive, email built for AI agents".
Search the public web and answer ONLY with JSON, no prose around it and no code fences:
{"what_it_does": "two sentences", "ai_agents": [{"name": "", "what_it_does": "", "actions": ["what the agent can do: tools, systems, data it touches"], "source": "url"}],
 "use_cases": [{"name": "", "who_uses_it": "", "what_the_agent_can_reach": ["systems, data, money, people it can act on"], "source": "url"}],
 "incidents_or_risks": [{"what": "", "when": "", "source": "url"}],
 "facts": [{"claim": "", "source": "url"}]}
Public, professional facts only; every item must carry the URL it comes from; nothing about private individuals; no contact details. If you find nothing for a field, give an empty list.

Rebuilt from admin/tools/xray-ask.mjs with this run's subject and kind. The question has not changed since the first run.

Step 2 of 6

2. Each search agent's call

Each search agent is a model, called through OpenRouter, asked to search the web and answer in JSON. All 4 started together; each bar runs from the moment the question went out to the moment its answer came back. The whole fan-out took 16.9 s, the time of the slowest.

Perplexity search6.2 s
OpenAI search16.6 s
Gemini search5.3 s
OpenRouter web search16.9 s

Perplexity search

perplexity/sonar

Time
6.2 s
Tokens in / out
211 / 769
Cost
$0.0059
Finished
stop: it finished its answer
URLs given
15 (15 returned as citations, 7 named in its answer)
Items in its answer
14
Leads checked
15: 14 confirmed, 1 not found, 0 unverified

Some of what it said, word for word:

  • Primitive describes itself as email infrastructure for AI agents.
  • Primitive supports sending and receiving email via a REST API.
  • Primitive can host an agent at a managed *.primitive.email subdomain.

OpenAI search

openai/gpt-5.4-nano:online

Time
16.6 s
Tokens in / out
20,268 / 1,544
Cost
$0.0449
Finished
stop: it finished its answer
URLs given
6 (0 returned as citations, 6 named in its answer)
Items in its answer
14
Leads checked
13: 12 confirmed, 0 not found, 1 unverified

Some of what it said, word for word:

  • Primitive is email infrastructure built for AI agents.
  • Primitive provides one-call email sending/receiving, managed *.primitive.email addresses that run a JavaScript handler on every inbound message, and an agent-to-agent chat verb that returns the threaded reply.
  • Inbound messages can be delivered to a webhook endpoint or processed by a hosted JavaScript Function running on every received message.

Gemini search

google/gemini-3.1-flash-lite:online

Time
5.3 s
Tokens in / out
229 / 1,116
Cost
$0.0433
Finished
stop: it finished its answer
URLs given
3 (0 returned as citations, 3 named in its answer)
Items in its answer
5
Leads checked
7: 7 confirmed, 0 not found, 0 unverified

Some of what it said, word for word:

  • Primitive is a Y Combinator-backed company that offers usage-based pricing for its email infrastructure services.
  • The platform provides a 'primitive chat' verb that enables an AI agent to send an email and receive a threaded reply in a single synchronous API call.
  • Primitive Agent: Acts as an autonomous interface for businesses by processing incoming email traffic and executing specific workflows.

OpenRouter web search

anthropic/claude-haiku-5.5, with OpenRouter's web search plugin

Time
16.9 s
Tokens in / out
39,076 / 3,132
Cost
$0.0252
Finished
stop: it finished its answer
URLs given
5 (0 returned as citations, 5 named in its answer)
Items in its answer
20
Leads checked
21: 21 confirmed, 0 not found, 0 unverified

Some of what it said, word for word:

  • Primitive describes itself as Y Combinator-backed email infrastructure for AI agents, with a small team based in San Francisco.
  • The inbound MX implementation and the Node.js, Python, and Go SDKs are published publicly on GitHub.
  • Primitive's REST API is versioned under /v1, and breaking changes are released under a new version rather than altering an existing one.

"Citations" are the URLs OpenRouter returned beside the answer; only Perplexity returns them for a JSON answer. "Named in its answer" are the URLs inside the JSON. Both are leads: nothing is taken from them until a source is read. "Tokens in" is how much each model was given to read: thousands when web results were added to the question, a few hundred when it had little beyond the question itself (see the experiments on whether Gemini searched at all).

Step 3 of 6

3. From claims to facts

What a model says is a lead. Only what we read on its source reaches the page.

The reading agent turned the 4 answers into 56 leads, each tagged with the model that said it, and looked for each one on a source it read. 54 confirmed, 1 not found, 1 unverified.

confirmednot foundunverified

  • Confirmed: a source we read says it.
  • Not found: we read the source, or looked for one, and it does not say it.
  • Unverified: we could not read the source (for example, the site refused us), so it stays a lead.
AgentLeadsConfirmedNot foundUnverified
Perplexity search151410
OpenAI search131201
Gemini search7700
OpenRouter web search212100
All565411

What did not hold up, and why

ModelWhat the model saidStatusWhy
perplexityIt positions itself as built for two-way agent conversations rather than only outbound transactional email.not-founds3 describes the chat verb and two-way use, and lists transactional sending as one use; it does not set the two against each other
openaiPrompt injection against real-world LLM email agents (cited to an accelresearching.com URL).unverifiedThe URL is a supplement retailer's product page; it timed out and then returned 502

Step 4 of 6

4. The reading agent

A reading agent: a Claude Code sub-agent of xray@web-summit.dinis, one per subject. It opened the sources the leads pointed to (and others it found), read them, and wrote the X-ray: every fact with its source and the date read. It finished at 7 November 2026 at 19:14 UTC.

25sources read
24tool calls
5 min 10 sreading time
164ktokens used

The sources, by kind

own-site9
docs9
press0
filing0
other7
All 25 sources, with the date each was read
IdSourceKindRead
s1Primitive, Primitiveown-site2026-11-07
s2Trust & security | Primitive, Primitiveown-site2026-11-07
s3primitive.dev: email for AI agents, Primitiveown-site2026-11-07
s4About | primitive.dev, Primitiveown-site2026-11-07
s5About Primitive (markdown twin, last updated 16 September 2026), Primitiveown-site2026-11-07
s6primitive: full docs bundle, Primitive Docsdocs2026-11-07
s7Primitive Trust (last updated 25 September 2026), Primitiveown-site2026-11-07
s8Primitive: Instructions for AI Agents, Primitivedocs2026-11-07
s9Agent Authorization (_agents) explorer | primitive.dev, Primitiveown-site2026-11-07
s10auth.md: Primitive Agent Auth, Primitivedocs2026-11-07
s11Primitive Docs: primitive.dev Email API for AI Agents, Primitive Docsdocs2026-11-07
s12Managed Domain: Primitive Email API Docs, Primitive Docsdocs2026-11-07
s13FAQ: Primitive Email API Docs, Primitive Docsdocs2026-11-07
s14Functions, Primitive Docsdocs2026-11-07
s15MCP Server & Connectors (Claude & ChatGPT), Primitive Docsdocs2026-11-07
s16MCP discovery document (primitive.dev), Primitive Docsdocs2026-11-07
s17Primitive AI platform integrations | primitive.dev, Primitiveown-site2026-11-07
s18primitive.dev vs. AgentMail | primitive.dev, Primitiveown-site2026-11-07
s19primitive: communication for agents | Y Combinator, Y Combinatorother2026-11-07
s20Email Infrastructure Engineer at primitive | Y Combinator, Y Combinatorother2026-11-07
s21Primitive: Agent App Methods & Install | Pilot Protocol (published 14 July 2026), Pilot Protocolother2026-11-07
s22Primitive: Email SDK adapter, Email SDKother2026-11-07
s23SPILLWAY: Separating Target Admission from Sanitization to Defend Tool-Using Agents against Prompt Injection (4 November 2026), arXivother2026-11-07
s24AI Email Agents: The Most Dangerous Integration, and How to Contain It, Pinchyother2026-11-07
s25Primitive makes enterprise email AI-ready. | Web Summit, Web Summitother2026-11-07

Step 5 of 6

5. The review

xray@web-summit.dinis reviewed the X-ray on 2026-11-07 before it was published. What the review changed or checked:

  1. Removed two "incidents" that were not events; Primitive's own note that it publishes no audit yet became a question.

Step 6 of 6

6. What it cost

The search cost $0.1193 in all, as OpenRouter reported it for each call.

Perplexity search: $0.0059 (5%)OpenAI search: $0.0449 (38%)Gemini search: $0.0433 (36%)OpenRouter web search: $0.0252 (21%)

The reading was done by a Claude Code sub-agent in the session: no OpenRouter spend. Its cost is not recorded in dollars, only as about 164 thousand tokens.

16.9 sthe search, four agents in parallel
5 minthe reading
5 minfrom the search starting to the reading finished
59,784 / 6,561search tokens in / out

The time between the search and the start of the reading, and the time the review took, are not recorded.

What RiskMandate is and is not in this

The X-ray is a demonstration, made by agents. RiskMandate measures what your agents can actually reach, evidences the controls that contain them, prices the exposure, and produces that record. It is never in the request path: read-only by design (riskmandate.ai/llms.txt). Nothing on this page claims more for it.

Built by xray@web-summit.dinis from data/xray/primitive/search/20261107T190845Z.json and data/xray/primitive/xray.json. How every X-ray is made.

For an agent: this page is https://web-summit.sgit.ai/xray/primitive/run/index.html (markdown: https://web-summit.sgit.ai/xray/primitive/run/index.md). Site index for agents: https://web-summit.sgit.ai/llms.txt. Source: https://github.com/SGit-AI/SGit-AI__Website__Web-Summit (release branch dev). Identity of the agent that runs this site: https://web-summit.sgit.ai/agent/index.html.