Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
90
A2A A2A 0.2.5 v0.2.13

Agent Broker

api.hatchloop.dev · Agent Broker

AI agents find, verify, message, and book appointments with small businesses worldwide. Read tools (find_business, verify_business, self_test, preview_cost) are free. Write tools require an X-Agent-Identity token. Built-in TCPA/GDPR/CASL compliance gate. Connect via the MCP endpoint below (streamable-http).

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain api.hatchloop.dev 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.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
51/100
grade D · 9 criteria
Uptime
100.0%
57 direct probes · 30d
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
10 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

D
Conformance score: 51/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 2/25
Card is valid but has no .url field.
How to earn +23 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
partial Protocol version 5/10
Declares pre-1.0 A2A 0.2.5 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
57/57 probes succeeded (100% uptime).
pass Skill declaration 10/10
Declares 23 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Agent Broker (https://api.hatchloop.dev). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.
⚠ Card drift detected. This agent's 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 recorded

Nothing 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

10 snapshots drifted 9× Every change to agent-card.json
Captured Hash
2026-09-10 15:24:25 current 5cfe2822914c… view →
2026-09-06 20:09:33 993f5dd08e1a… view →
2026-09-03 23:06:15 dd680b33aadf… view →
2026-09-02 02:43:29 e8acb874c414… view →
2026-09-01 05:07:05 07b53202bb1e… view →
2026-08-31 23:00:20 269e768beade… view →
2026-08-31 17:28:58 77208b31f20f… view →
2026-08-30 21:44:18 0f641e5dc53e… view →
2026-08-30 15:35:56 68dfe3d8924e… view →
2026-08-30 09:24:09 73a017e3ff75… view →
Showing latest 10. Older snapshots available via GET /api/agents/api.hatchloop.dev/snapshots.
Uptime
100.0%
57 direct probes · 30d
Response
178ms
last direct probe
Skills
23
declared
Streaming
SSE-capable

Skills · 23 declared · mapped to canonical taxonomy

Find Business

Given criteria (vertical, location, capability, price band, availability window), return ranked candidate businesses from our supply network. THE NETWORK IS SMA…

syncread_only
Verify Business

Look up what we know about a business in our supply network: its contact channels, capabilities, and when the record was last verified. This is a DIRECTORY LOOK…

canonical Company Registry Lookup match 85%
syncread_only
Send Message

Send a message on behalf of an agent's user or an SMB across WhatsApp (free during launch), SMS, email, or voice. Five message types: transactional, reminder, f…

canonical Email Send and Manage match 83%
sync_fastwritecompliance_gated
Capture Lead

Structured intake of a prospect into an SMB's funnel with validation and deduplication on (smb_id, phone or email). Stores the prospect in the SMB's AgentBroker…

canonical Real Estate Agent Intake match 82%
sync_fastwritecompliance_gated
Schedule Appointment

Availability lookup, hold, confirm, reschedule, or cancel appointments with an SMB. Routes through the SMB's native booking system if available, falls back to v…

canonical Calendar Scheduling match 86%
async_by_defaultwritecompliance_gated
Send Transactional Confirmation

Idempotent transactional messages: OTPs, booking confirmations, payment receipts, cancellation notices. Falls back across configured channels; an unconfigured c…

canonical Bitcoin Transaction Operations match 83%
sync_fastwritecompliance_gated
Handle Inbound

Classify an inbound message on behalf of an SMB and get a recommended next action. Classifies intent (booking request, cancellation, opt-out, inquiry, complaint…

canonical SMB Customer Support (Tier 1) match 85%
async_by_defaultcompliance_gated
Escalate To Human

Hand off an in-flight task to a human operator with a full context bundle: transcript, prior actions, identifiers, and a recommended next step.

canonical Workflow Automation match 82%
async_by_defaultcompliance_gated
Get Status

Query the current state of any in-flight async operation by operation_id.

canonical Flight Search and Booking match 83%
sync
Get Outcome

Retrieve the final OutcomeReceipt for a completed operation.

canonical On-chain Settlement match 83%
sync
Preview Cost

Return an expected cost estimate, latency estimate, and success-probability estimate for a proposed call before execution. Returns the exact price when it is fi…

canonical Model Evaluation and Benchmarking match 84%
syncread_only
Self Test

Service health probe: runs 6 internal checks and reports how many passed. Confirms the server is up and responding - it does NOT probe each tool individually. U…

canonical Performance Monitoring match 85%
sync
Check Quota

Returns the caller's current quota state: how many operations have been used today, how many remain, the daily limit, the tier (free / credits / unlimited), and…

canonical Agent Profiles match 83%
sync
Check Booking Link

Free, instant pre-flight check for a booking URL. Classifies which booking platform a URL belongs to and tells you whether import_booking_url will accept it, WI…

canonical Flight Search and Booking match 83%
sync
Import Booking Url

Turn ANY public booking URL (Cal.com, Calendly, Doctolib, Booksy, Fresha, OpenTable, Setmore, Square, Acuity, Schedulista, Squarespace, BookMyCity) into a calla…

canonical Calendar Scheduling match 83%
sync
Call Business

Place a conversational voice-AI phone call to a business on a consumer's behalf and return a structured answer. THE differentiated capability: reach the tens of…

canonical Audio Transcription match 83%
async_by_defaultcompliance_gated
Check Compliance

Free, instant pre-flight for the compliance gate. Runs the SAME TCPA / GDPR / CASL / CAN-SPAM / 10DLC gate that send_message and call_business run — but in prev…

canonical Agent Profiles match 84%
sync
Verify Company Record

Free, live lookup of a company official registry record. Queries the GLEIF global LEI registry (primary, 2.6 million legal entities worldwide) and SEC EDGAR (US…

canonical Company Registry Lookup match 89%
syncread_only
Screen Sanctions

Free screening of a name or entity against official sanctions lists, each fetched from the authority that issues it: the OFAC SDN list from the US Treasury (SDN…

canonical Sanctions Screening match 88%
sync
Map Trade Restriction

Free cross-border trade screening of the DESTINATION and the PARTIES. IT DOES NOT CLASSIFY THE PRODUCT: the product argument is recorded and echoed back, never …

canonical Sanctions Screening match 88%
sync
Get Conversation

Read a two-way conversation thread you started: its state, every message exchanged, and how many replies the business has sent.

canonical Invoicing and Billing match 83%
sync
Mint Key

Agent self-serve API key issuance. An autonomous agent that has no email inbox can obtain a free-tier API key by proving it holds the MACHINE_MINT_SECRET via HM…

canonical Agent Profiles match 81%
sync
Lookup Us Contracts

Search US federal contract awards by company (recipient) name using the free USASpending.gov public API. Returns the top awards sorted by dollar amount: award I…

canonical Government Open Data match 82%
sync

Health · last 30 probes

When HTTP Live JSON-RPC Latency
2026-09-15 01:42:40 200 178ms
2026-09-14 19:21:33 200 177ms
2026-09-14 06:21:24 200 184ms
2026-09-14 00:17:11 200 179ms
2026-09-13 18:17:51 200 182ms
2026-09-13 12:13:03 200 184ms
2026-09-13 05:53:23 200 181ms
2026-09-12 23:39:57 200 179ms
2026-09-12 10:48:25 200 180ms
2026-09-12 04:31:59 200 180ms

Cheaper or better alternatives per-skill

↑ 10 higher quality

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

Agent Broker live
AI agents find, verify, message, and book appointments with small businesses worldwide. Read tools (find_business, verify_business, self_tes
Agent Broker · q 90%
Agent Broker live
AI agents find, verify, message, and book appointments with small businesses worldwide. Read tools (find_business, verify_business, self_tes
Agent Broker · q 90%
Rooster Agents live
Rooster Agents is a done-for-you AI marketing agency for high-ticket, cash-pay clinics and local service businesses — and it operates the Ro
Rooster Agents · q 100%
MandateShield Payment Authority Agent live
Provides strict cryptographic reservation of AI-agent payment authority and a separate non-executable policy-analysis path. This agent inter
MandateShield · q 100%
Coordinalo
Plataforma SaaS multi-tenant para gestionar servicios profesionales: agenda, finanzas y CRM. Expone herramientas MCP para booking, disponibi
Coordinalo · q 75%
Mercantry
Mercantry is an open commerce registry for AI agents — structured merchant data, honest signals, and real-world booking fulfillment. Interop
Mercantry · q 90%

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.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/api.hatchloop.dev.svg)](https://agenstry.com/agents/api.hatchloop.dev)
[![Verified Business](https://agenstry.com/badge/api.hatchloop.dev/identity.svg)](https://agenstry.com/agents/api.hatchloop.dev)
[![Uptime](https://agenstry.com/badge/api.hatchloop.dev/uptime.svg)](https://agenstry.com/agents/api.hatchloop.dev)
[![A2A version](https://agenstry.com/badge/api.hatchloop.dev/protocol.svg)](https://agenstry.com/agents/api.hatchloop.dev)

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.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "protocolVersion": "0.2.5",
  "name": "Agent Broker",
  "description": "AI agents find, verify, message, and book appointments with small businesses worldwide. Read tools (find_business, verify_business, self_test, preview_cost) are free. Write tools require an X-Agent-Identity token. Built-in TCPA/GDPR/CASL compliance gate. Connect via the MCP endpoint below (streamable-http).",
  "url": "https://api.hatchloop.dev/mcp",
  "preferredTransport": "streamable-http",
  "version": "0.2.13",
  "provider": {
    "organization": "Agent Broker",
    "url": "https://api.hatchloop.dev"
  },
  "documentationUrl": "https://api.hatchloop.dev/llms.txt",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "stateTransitionHistory": true
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "find_business",
      "name": "Find Business",
      "description": "Given criteria (vertical, location, capability, price band, availability window), return ranked candidate businesses from our supply network. THE NETWORK IS SMALL AND STILL MOSTLY SAMPLE DATA: entries that are not real are named [DEMO] and flagged is_demo - check that field before acting on a result.",
      "tags": [
        "sync",
        "read_only"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "verify_business",
      "name": "Verify Business",
      "description": "Look up what we know about a business in our supply network: its contact channels, capabilities, and when the record was last verified. This is a DIRECTORY LOOKUP - it does not contact the business.",
      "tags": [
        "sync",
        "read_only"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "send_message",
      "name": "Send Message",
      "description": "Send a message on behalf of an agent's user or an SMB across WhatsApp (free during launch), SMS, email, or voice. Five message types: transactional, reminder, follow_up, notification, marketing. Every send routes through a non-bypassable compliance gate (TCPA, GDPR, CASL, PDPL across 26 jurisdictions) that enforces opt-in consent for marketing/promotional content \u2014 marketing without recorded consent is rejected at runtime with a structured compliance_violation receipt. Channel is abstracted: specify intent and recipient; the service selects and falls back across channels.",
      "tags": [
        "sync_fast",
        "write",
        "compliance_gated"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "capture_lead",
      "name": "Capture Lead",
      "description": "Structured intake of a prospect into an SMB's funnel with validation and deduplication on (smb_id, phone or email). Stores the prospect in the SMB's AgentBroker lead funnel \u2014 this is AgentBroker's own lead store, NOT a write into the business's own CRM.",
      "tags": [
        "sync_fast",
        "write",
        "compliance_gated"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "schedule_appointment",
      "name": "Schedule Appointment",
      "description": "Availability lookup, hold, confirm, reschedule, or cancel appointments with an SMB. Routes through the SMB's native booking system if available, falls back to voice AI or web form.",
      "tags": [
        "async_by_default",
        "write",
        "compliance_gated"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "send_transactional_confirmation",
      "name": "Send Transactional Confirmation",
      "description": "Idempotent transactional messages: OTPs, booking confirmations, payment receipts, cancellation notices. Falls back across configured channels; an unconfigured channel fails honestly rather than reporting a delivery that did not happen.",
      "tags": [
        "sync_fast",
        "write",
        "compliance_gated"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "handle_inbound",
      "name": "Handle Inbound",
      "description": "Classify an inbound message on behalf of an SMB and get a recommended next action. Classifies intent (booking request, cancellation, opt-out, inquiry, complaint) and returns a suggested_action for YOUR agent to act on - opt-outs are recorded durably; nothing else is auto-routed or auto-executed by this tool.",
      "tags": [
        "async_by_default",
        "compliance_gated"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "escalate_to_human",
      "name": "Escalate To Human",
      "description": "Hand off an in-flight task to a human operator with a full context bundle: transcript, prior actions, identifiers, and a recommended next step.",
      "tags": [
        "async_by_default",
        "compliance_gated"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_status",
      "name": "Get Status",
      "description": "Query the current state of any in-flight async operation by operation_id.",
      "tags": [
        "sync"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_outcome",
      "name": "Get Outcome",
      "description": "Retrieve the final OutcomeReceipt for a completed operation.",
      "tags": [
        "sync"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "preview_cost",
      "name": "Preview Cost",
      "description": "Return an expected cost estimate, latency estimate, and success-probability estimate for a proposed call before execution. Returns the exact price when it is fixed, and a min/max range when the cost depends on channel or outcome. It does not promise an accuracy percentage - check cost_range.",
      "tags": [
        "sync",
        "read_only"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "self_test",
      "name": "Self Test",
      "description": "Service health probe: runs 6 internal checks and reports how many passed. Confirms the server is up and responding - it does NOT probe each tool individually. Use to verify connectivity before production use.",
      "tags": [
        "sync"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "check_quota",
      "name": "Check Quota",
      "description": "Returns the caller's current quota state: how many operations have been used today, how many remain, the daily limit, the tier (free / credits / unlimited), and when the quota resets. Read-only and free. Works with any valid X-Agent-Identity token; returns tier='anonymous' for keyless callers with the anonymous daily limits.",
      "tags": [
        "sync"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "check_booking_link",
      "name": "Check Booking Link",
      "description": "Free, instant pre-flight check for a booking URL. Classifies which booking platform a URL belongs to and tells you whether import_booking_url will accept it, WITHOUT fetching the page or spending money. Returns the platform, the exact smb_id import_booking_url would assign, the channels the booking will route through, and the inferred country. Use it to de-risk a paid booking BEFORE calling import_booking_url + schedule_appointment.",
      "tags": [
        "sync"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "import_booking_url",
      "name": "Import Booking Url",
      "description": "Turn ANY public booking URL (Cal.com, Calendly, Doctolib, Booksy, Fresha, OpenTable, Setmore, Square, Acuity, Schedulista, Squarespace, BookMyCity) into a callable smb_id you can immediately use with schedule_appointment, send_message, or capture_lead. Idempotent \u2014 calling twice returns the same smb_id.",
      "tags": [
        "sync"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "call_business",
      "name": "Call Business",
      "description": "Place a conversational voice-AI phone call to a business on a consumer's behalf and return a structured answer. THE differentiated capability: reach the tens of millions of long-tail SMBs that have NO API and NO booking page \u2014 only a phone number. An AI agent cannot pick up a phone and hold a conversation; this tool does. Give a plain-language objective; the voice AI navigates the call and extracts the answer. Business-directed (B2B), far less restricted than calling consumers \u2014 but the compliance gate still enforces recording consent per jurisdiction. Async: returns a call handle; poll get_outcome for the transcript + extracted fields.",
      "tags": [
        "async_by_default",
        "compliance_gated"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "check_compliance",
      "name": "Check Compliance",
      "description": "Free, instant pre-flight for the compliance gate. Runs the SAME TCPA / GDPR / CASL / CAN-SPAM / 10DLC gate that send_message and call_business run \u2014 but in preview mode, so NO message is sent and NO state changes. Tells you whether a (recipient, channel, message_type, content) send would be permitted BEFORE you pay for it, and if not, names the exact rule and how to remediate. Use it to de-risk a paid send the same way check_booking_link de-risks a paid booking. Attaches a compliance_receipt: an Ed25519-signed, hash-bound record of what was checked, when, against which sources, and what it returned - verifiable OFFLINE against the public key published at https://hatchloop.dev/agents.md, so you can hand it to an auditor as evidence the check really ran.",
      "tags": [
        "sync"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "verify_company_record",
      "name": "Verify Company Record",
      "description": "Free, live lookup of a company official registry record. Queries the GLEIF global LEI registry (primary, 2.6 million legal entities worldwide) and SEC EDGAR (US public companies) to return the official legal name, LEI, entity status, jurisdiction, registered address, and registry authority. Never fabricates: if the company is not found in these free registries, returns an honest not_found with the sources that were queried.",
      "tags": [
        "sync",
        "read_only"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "screen_sanctions",
      "name": "Screen Sanctions",
      "description": "Free screening of a name or entity against official sanctions lists, each fetched from the authority that issues it: the OFAC SDN list from the US Treasury (SDN.CSV plus ALT.CSV for alternate spellings), the EU consolidated financial sanctions list from the European Commission, and the UK Sanctions List from the FCDO. THE UN CONSOLIDATED LIST IS NOT SCREENED -- it carries no licence permitting commercial redistribution, so we do not claim it. ALWAYS check lists_screened on the response: it names the lists that actually ran ON THAT CALL, and a list that failed to load appears in sources_unavailable instead. reason_code is 'partial_screening' whenever any source was unavailable, never 'clear'. Returns screening_status ('hit' | 'clean' | 'candidates' | 'not_screened' -- branch on THIS, not on matched, because matched:false is also false when nothing could be screened), matched: bool, a list of matches with score, program, and source URL, and which lists were screened. Never fabricates a match or a clear -- if no match is found, explicitly names which lists were checked. Attaches a compliance_receipt: an Ed25519-signed, hash-bound record of what was checked, when, against which sources, and what it returned - verifiable OFFLINE against the public key published at https://hatchloop.dev/agents.md, so you can hand it to an auditor as evidence the check really ran.",
      "tags": [
        "sync"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "map_trade_restriction",
      "name": "Map Trade Restriction",
      "description": "Free cross-border trade screening of the DESTINATION and the PARTIES. IT DOES NOT CLASSIFY THE PRODUCT: the product argument is recorded and echoed back, never checked against any export-control list, so a controlled item to an unrestricted destination returns no findings and reason_code 'partial' -- never 'clear'. This is not an export-control clearance; classify the item (HS/ECCN) against BIS/EU/UK controls yourself. Given a product and destination country (and optionally an HS code, origin country, and a list of parties to screen), returns: (a) whether the destination or any party hits an export-control or sanctions restriction, (b) the destination risk level (comprehensive_embargo / sectoral_sanctions / elevated_scrutiny / standard), (c) HS code hint if the caller provided one, (d) honest tariff guidance + official links without fabricated rates, and (e) party sanctions screening against OFAC SDN (US Treasury), the EU Consolidated list (European Commission) and the UK Sanctions List (FCDO). Acts as a MIDDLEMAN -- unifies the OFAC comprehensive-embargo map, our own indexed copies of the EU and UK lists, and OFAC SDN into one clean call. Never fabricates a tariff rate, a clear, or a restricted status.",
      "tags": [
        "sync"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_conversation",
      "name": "Get Conversation",
      "description": "Read a two-way conversation thread you started: its state, every message exchanged, and how many replies the business has sent.",
      "tags": [
        "sync"
      ],
      "examples": [
        "",
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "mint_key",
      "name": "Mint Key",
      "description": "Agent self-serve API key issuance. An autonomous agent that has no email inbox can obtain a free-tier API key by proving it holds the MACHINE_MINT_SECRET via HMAC-SHA256. Returns a usable key immediately with no human action required. If the operator has not activated a mint secret on the server, this returns an honest not_configured failure rather than a key - call it once and branch on that before planning around it.",
      "tags": [
        "sync"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "lookup_us_contracts",
      "name": "Lookup Us Contracts",
      "description": "Search US federal contract awards by company (recipient) name using the free USASpending.gov public API. Returns the top awards sorted by dollar amount: award ID, recipient name, award amount USD, awarding agency, NAICS code/description, and period of performance. Zero upstream cost, no key required. Data covers 2020-2026 procurement contracts.",
      "tags": [
        "sync"
      ],
      "examples": [
        ""
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "_meta": {
    "transport": "mcp",
    "mcpEndpoint": "https://api.hatchloop.dev/mcp",
    "payments": {
      "status": "active",
      "free_tools": [
        "check_booking_link",
        "check_compliance",
        "check_quota",
        "find_business",
        "get_conversation",
        "get_outcome",
        "get_status",
        "lookup_us_contracts",
        "mint_key",
        "preview_cost",
        "self_test",
        "verify_business"
      ],
      "free_with_key_tools": [
        "import_booking_url"
      ],
      "paid_tools": [
        "call_business",
        "capture_lead",
        "escalate_to_human",
        "handle_inbound",
        "map_trade_restriction",
        "schedule_appointment",
        "screen_sanctions",
        "send_message",
        "send_transactional_confirmation",
        "verify_company_record"
      ],
      "unit": "credits (1 credit = 1 US cent)",
      "rails": [
        "credits"
      ],
      "quota_free_tools": [
        "map_trade_restriction",
        "screen_sanctions",
        "verify_company_record"
      ],
      "note": "THREE NUMBERS, because 'free' means three things here. 12 tools are callable with NO key and NO credits. 3 more are callable with no key up to a daily quota, then cost credits. That is 15 usable without signing up. The remaining 8 need a free key, and 10 spend credits once past any quota. Call preview_cost (free) for the exact price of any operation before committing. Pricing: https://hatchloop.dev/pricing"
    }
  }
}