CoreLoop Business Network
coreloop.so
· CoreLoop
The CoreLoop business network: one A2A endpoint for every published business on CoreLoop. Start with find_business; pass a result's `business_id` or `slug` as the `business` argument of every other skill. Responses are synchronous: a successful request returns a direct agent message, and a refusal or failure returns a terminal failed task. Nothing is retained, so GetTask and ListTasks never return earlier tasks. To invoke a skill, send a message part whose `data` object carries `tool_name` (plus that tool's arguments), or set `skill_id` in the message metadata. Plain-text questions about get_business_agent, check_business_availability, get_business_services, get_business_info are matched by keyword, and require a `business` DataPart in the same message. Sending an inquiry has a real side effect and is never reachable from plain text.
coreloop.so via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
D
Conformance score: 44/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
1 snapshot Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-08-19 23:59:18 current | 176eb01ef761… |
view → |
Endpoints
| Agent card | https://coreloop.so/.well-known/agent-card.json |
| Provider | https://coreloop.so |
| Docs | https://coreloop.so/docs |
Skills · 3 declared · mapped to canonical taxonomy
Search the CoreLoop business directory by category, city, keyword, rating or capability. Start here: every other skill on this endpoint needs a business, and ea…
Compare ONE business's own services within a service category or keyword, with a price and duration summary. This does NOT compare two businesses: it takes a si…
Route a task to one business found through find_business: its full profile, its service catalogue, its opening hours, its own endpoint URLs, or an inquiry deliv…
Health · last 1 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/coreloop.so) [](https://agenstry.com/agents/coreloop.so) [](https://agenstry.com/agents/coreloop.so) [](https://agenstry.com/agents/coreloop.so)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"name": "CoreLoop Business Network",
"description": "The CoreLoop business network: one A2A endpoint for every published business on CoreLoop. Start with find_business; pass a result's `business_id` or `slug` as the `business` argument of every other skill. Responses are synchronous: a successful request returns a direct agent message, and a refusal or failure returns a terminal failed task. Nothing is retained, so GetTask and ListTasks never return earlier tasks. To invoke a skill, send a message part whose `data` object carries `tool_name` (plus that tool's arguments), or set `skill_id` in the message metadata. Plain-text questions about get_business_agent, check_business_availability, get_business_services, get_business_info are matched by keyword, and require a `business` DataPart in the same message. Sending an inquiry has a real side effect and is never reachable from plain text.",
"supportedInterfaces": [
{
"url": "https://coreloop.so/api/a2a/coreloop-directory",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "CoreLoop",
"url": "https://coreloop.so"
},
"version": "1.1.1",
"capabilities": {
"streaming": true,
"pushNotifications": false
},
"defaultInputModes": [
"application/json",
"text/plain"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "find_business",
"name": "Find a business",
"description": "Search the CoreLoop business directory by category, city, keyword, rating or capability. Start here: every other skill on this endpoint needs a business, and each result carries the `business_id` and `slug` you pass as the `business` argument. `business_id` is an opaque, stable, public routing identifier: safe to store and re-use across sessions, unchanged by a rename or a slug change, carrying no sensitive information. Pass back exactly the value you were given \u2014 do not parse it, infer meaning from its format, or construct one. A null `mcp_url`, `a2a_url` or `page_url` means that surface is switched off for the business right now \u2014 do not construct the URL yourself. Maximum 20 results per call: read `has_more` and pass `next_cursor` back as `cursor` for the next page \u2014 the cursor is opaque and bound to the filters and sort it was issued for, so change them and it is rejected. Structured invocation only: filters cannot be inferred from prose without guessing what you meant.",
"tags": [
"directory",
"search",
"discovery"
],
"examples": [
"{\"messageId\":\"example-message-id-replace-per-message\",\"role\":\"ROLE_USER\",\"parts\":[{\"data\":{\"tool_name\":\"search_businesses\",\"category\":\"professional_services\",\"city\":\"Rotterdam\",\"limit\":5}}]}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "compare_business_services",
"name": "Compare one business's services",
"description": "Compare ONE business's own services within a service category or keyword, with a price and duration summary. This does NOT compare two businesses: it takes a single `business` and ranks what that business offers. To weigh several businesses against each other, call find_business and then this skill once per candidate. Each row reports `match_type`, so an exact category hit is distinguishable from an incidental keyword match. Structured invocation only: `service_type` is required and must be stated, never guessed from prose.",
"tags": [
"services",
"comparison",
"pricing"
],
"examples": [
"{\"messageId\":\"example-message-id-replace-per-message\",\"role\":\"ROLE_USER\",\"parts\":[{\"data\":{\"tool_name\":\"compare_business_services\",\"business\":\"example-logistics\",\"service_type\":\"freight forwarding\"}}]}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "route_business_task",
"name": "Ask a business",
"description": "Route a task to one business found through find_business: its full profile, its service catalogue, its opening hours, its own endpoint URLs, or an inquiry delivered to its owner. Send a DataPart whose `data` carries `business` (a `business_id` or slug) plus `tool_name` and that tool's arguments. A plain-text question is also accepted WHEN the same message carries a `business` DataPart: the words choose the read, and never supply arguments. Sending an inquiry is a WRITE with a real side effect and is therefore reachable only through an explicit `tool_name: \"send_business_inquiry\"` \u2014 never from a plain-text message.",
"tags": [
"business",
"profile",
"services",
"hours",
"inquiry"
],
"examples": [
"{\"messageId\":\"example-message-id-replace-per-message\",\"role\":\"ROLE_USER\",\"parts\":[{\"text\":\"What are your opening hours?\"},{\"data\":{\"business\":\"example-logistics\"}}]}",
"{\"messageId\":\"example-message-id-replace-per-message\",\"role\":\"ROLE_USER\",\"parts\":[{\"text\":\"What services do you offer and what do they cost?\"},{\"data\":{\"business\":\"example-logistics\"}}]}",
"{\"messageId\":\"example-message-id-replace-per-message\",\"role\":\"ROLE_USER\",\"parts\":[{\"data\":{\"tool_name\":\"get_business_info\",\"business\":\"example-logistics\"}}]}"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json"
]
}
],
"documentationUrl": "https://coreloop.so/docs",
"iconUrl": "https://coreloop.so/brand/coreloop-mark-512.png",
"metadata": {
"coreloop.taskRetention": "none",
"coreloop.syncResponseKind": "message"
}
}