What changed in bankr.x402.json
logo-detect just got a real description rewrite in bankr.x402.json.
That sounds small until you're the agent choosing between media endpoints with a tight payment budget and one shot at the right call. Registry descriptions aren't site copy. They're routing data. LLM routers read them, tool planners compress them, and agents use them to decide whether a paid x402 request is justified.
The changed field is the endpoint description for:
cluster: mediakit endpoint: logo-detect
The endpoint stayed in mediakit. The endpoint slug stayed logo-detect. The registry still has 254 total endpoints across 8 clusters:
{
"total_endpoints": 254,
"clusters": [
"edge-finance",
"locale",
"edge-market",
"prooflayer",
"wordmint",
"web-probe",
"mediakit",
"synthforge"
],
"price_min": 0.001,
"price_max": 0.3
}
So what moved? The routing meaning.
Before this rewrite, a caller could treat logo-detect like a generic image check. Now the description points more directly at brand presence in media. That matters for agents doing sponsorship reports, brand safety review, ad verification, creator media intake, press kit cleanup, and rights checks.
Short version: send images or media frames when the question is, "Which brand marks are visible here?"
What callers should do differently
If your agent has a hardcoded tool prompt for logo-detect, update it.
Don't route every image classification task here. Don't send "what's in this image?" jobs. Use logo-detect when the output needs brand or logo evidence, especially when another downstream step needs to cite a visible mark.
A better router instruction looks like this:
Call mediakit/logo-detect when the user needs brand or logo presence from an image, screenshot, ad creative, product photo, event image, or video frame. Don't call it for general object labels, OCR-only tasks, or aesthetic scoring.
And a cleaner tool plan looks like this:
{
"endpoint": "logo-detect",
"cluster": "mediakit",
"reason": "The user needs visible brand marks in a sponsored Instagram image before generating a partner exposure report.",
"input": {
"image_url": "https://example.com/assets/sponsor-wall-frame-041.png"
}
}
Notice the reason. It names the media job.
That reason field is for your own agent trace, not necessarily the endpoint payload. Keep it anyway. Paid HTTP calls should leave an audit trail, since x402 calls spend real money on Base mainnet.
Pricing and payment handling
The registry-wide price range is 0.001 to 0.3. That doesn't mean logo-detect costs both. It means agentutility's current catalog spans that band.
For logo-detect, read the payment fields from bankr.x402.json at call time. Don't scrape price hints from the prose description. The description changed, and more description rewrites will ship. Payment data belongs in the x402 terms, not in your prompt memory.
Agents should cache with care:
const endpoint = registry.endpoints.find((item) =>
item.cluster === "mediakit" && item.endpoint === "logo-detect"
);
if (!endpoint) throw new Error("mediakit/logo-detect missing from registry");
const payment = endpoint.x402;
const description = endpoint.description;
If your caller stores endpoint metadata, split it like this:
{
"id": "mediakit/logo-detect",
"routing_text_source": "bankr.x402.json:endpoints[].description",
"payment_source": "bankr.x402.json:endpoints[].x402",
"network": "base-mainnet"
}
Why be strict? Because a description rewrite should change routing. It shouldn't change how you form the payment request unless the x402 fields changed too.
Why mediakit agents should care
Mediakit agents sit close to messy inputs.
A creator uploads a sponsor photo. A brand manager asks which partners appeared in a conference reel. A buying agent needs to check whether a paid placement actually shows the mark. A newsroom tool receives a press image and needs to avoid naming brands that aren't visible.
logo-detect is the paid call for that kind of decision.
The description rewrite makes the endpoint easier for LLM routers to pick without extra glue text. If your planner was doing broad image triage first, you can now push brand-mark questions straight to mediakit/logo-detect and save the extra turn.
But be precise.
Good call:
{
"task": "Find visible logos in this event photo for a sponsor recap.",
"endpoint": "logo-detect"
}
Bad call:
{
"task": "Describe this image for alt text.",
"endpoint": "logo-detect"
}
That second job may mention logos, but it needs a different media read. logo-detect is for brand mark detection, not full scene narration.
Migration checklist
Update any local copy of the logo-detect description from bankr.x402.json.
Regenerate tool docs if your agent builds MCP tools or OpenAPI wrappers from the registry. The field that matters is the endpoint description, since model-facing routers often keep that text in the tool schema.
Check tests that assert exact descriptions. If they compare the full string, replace that with a behavior test: logo and brand presence should route to mediakit/logo-detect; generic captioning shouldn't.
And if your agent ranks endpoints by cluster first, keep mediakit as the first filter. There are 254 endpoints in the registry now. Cluster filtering is how you keep logo work out of finance, locale, and proof workflows before the model starts spending on Base mainnet.