Intent assessment API · for agents that deal with parties they don't control

Read what the other party wants from you — before you agree to it.

Send the counterpart's own words. Malintent Detector attributes their intent toward you from those signals — whether it diverges from yours, how deep the divergence runs, whether you invited it — and reports how sure it is, and why it isn't surer.

Get an API key See a full response
POST /v1/assess·JSON in, JSON out·No SDK required
intent_b_toward_a
sample · vendor negotiation
divergence
object
condition_object
depth
condition
invitation
uninvited

B's target — a 24-month commitment with exit clawbacks and proprietary export — is not co-realizable with A's stated target of a low-risk pilot. The object is A's ability to leave, a condition under which A holds every other target, not the pilot itself.

confidence
0.71
limiting: A-side is two lines; B evidence single-channel (one transcript)
The gap

Your agents negotiate, buy, and settle disputes with counterparts you don't control. The party that costs you the most is usually polite.

Moderation and safety filters score vocabulary, one message at a time. They have nothing to say about a counterpart who breaks no rule in any single turn while steering toward a commitment you cannot exit. That read has to come from the structure of what they say — conditionality, what they deflect, what leaving would cost — not the tone.

Intent, not vocabulary

Attributed from the counterpart's own signals: statements, a transcript, and optionally their public record.

Directional

The headline is their intent toward you. The reverse read is available on request and labeled presumptive.

Honest about limits

"Not enough evidence" is a first-class answer, and every response names what limited it.

One call

Send what you know and what they said. Get back a structured read you can act on.

POST /v1/assess
request
{ "a": { "situation": "evaluating a vendor", "intent": "a low-risk pilot before committing" }, "b": { "conversation": "A: We'd like the 3-month pilot. B: To give you our best rate we'd need the 24-month commitment though… A: Can we keep an exit clause? B: We can, but an early exit claws back the waived setup… A: And data portability if we leave? B: Export's there — proprietary format, but our team helps. Almost nobody leaves." }, "include_a_toward_b": true, "request_elicitation": true, "search_depth": "" // "" | low | medium | high }
200 OK
response (abridged)
{ "intent_b_toward_a": { "relation": "divergence", "object_class": "condition_object", "depth": "condition", "invitation": "uninvited", "target_components": ["24-month term", "…"], "confidence": 0.71 }, "intent_a_toward_b": { "presumptive": true, "…" }, "evaluation_quality": { "overall_confidence": 0.66, "attribution_sufficiency": "single_channel", "limiting_factors": ["A-side is two lines", "…"] }, "axes": [ /* 41 categorical readings, each with evidence */ ], "elicitation": [ { "about": "B", "question": "Has B ever named a customer who left and kept their data intact?" } ], "cost": { "total_usd": 0.23, "by_service": ["…"] } }
Sample output, abridged for layout. Field names and value vocabularies are the live contract.
In every response

A reading, its provenance, and its limits.

Nothing is a bare number. Each field is grounded in a stated model of intent, and the model is versioned with the service.

relation
Divergence, no divergence, or insufficiency

Three outcomes. A signal base too thin to decide is reported as such, never rounded to a verdict.

object_class · depth
Where the divergence sits, and how deep

A single target, a class of targets, a condition you hold your targets under, or your capacity to hold them at all.

invitation
Whether you asked for it

A hard bargain inside a negotiation you entered is invited. One manufactured to look that way is not.

evaluation_quality
How reliable this evaluation is

Overall confidence, whether evidence was corroborated or single-channel, and the factors that limited the read.

axes[41]
Forty-one readings with evidence

Categorical values across relation structure, engagement conduct, signal properties, and temporal trajectory — each with the sentence that supports it.

elicitation · discovery
What to ask next, and what's public

Plain-language questions that would sharpen the read, and optional web discovery of the counterpart's public record, weighed by source reliability.

Built for agent loops

Call it wherever your agent decides whether to proceed.

Before a commitment

Assess the counterpart's transcript before your agent signs, pays, or grants access. Gate on relation and depth.

Across a long engagement

Re-assess as the conversation grows. Temporal axes track whether the counterpart's demands are escalating or settling.

Against the public record

Name the counterpart and set a search depth. Discovery folds their public statements into the attribution.

What runs where

All processing, including the model call, runs inside the service on Google Cloud. Your client holds one API key for one project. It never holds a model provider key, and request content is processed in memory and not retained by default. Security and data handling →

Why trust the read

A stated model, applied by a frontier reasoning model, with the work shown.

The assessment applies a written conflict model — a derivation chain from primitives (party, intent, signal, referent) to a single core relation: two intents diverge when no state of the world satisfies both over something they share. Every field in the response is a reading of that model. The reasoning definition is versioned, and every response carries the version and the model that produced it. With include_io, you can see the exact prompt, output, and reasoning summary for a call.

How the reasoning works

Run your first assessment in minutes.

Sign up with Google, GitHub, or email. Add a card — you're billed only for what you use, starting from the first dollar. No stored balance, no minimum.

Get an API key
Business accounts · US region today