Agent Tools
Back to MCP servers

io.github.basilalshukaili/agent-broker

https://agent-broker-edge.basil-agent.workers.dev/mcp
● healthy

skills: {'id': 'find_business', 'name': 'find_business', 'description': 'Given criteria (vertical, location, capability, price band, availability window), return ranked candidate SMBs from the verified supply network. Returns only curated, verified, transactable businesses — not raw directory results.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "Find me a salon in Tokyo that does color"\n -> call find_business({"vertical": "personal_services", "location": {"zip_or_city": "Tokyo"}, "capability": "color"})\n user: "I need a plumber near 30309"\n -> call find_business({"vertical": "home_services", "location": {"zip_or_city": "30309"}, "capability": "plumbing"})\n user: "Show me dentists in London"\n -> call find_business({"vertical": "professional_services", "location": {"zip_or_city": "London"}, "capability": "dentist"})\n\nWHEN TO USE: Use when an agent needs to identify which SMBs can fulfill a business task (booking, service, consultation) in a given location and vertical. Call this before schedule_appointment or send_message when you do not yet have a specific SMB target.\nWHEN NOT TO USE: Do not use as a general directory or browsing surface. Do not use when you already have a specific verified SMB identifier. Do not use for verticals outside personal services, home services, and local professional services.\nCOST: from $0.01 per_call (see preview_cost for exact)\nLATENCY: ~200ms', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'verify_business', 'name': 'verify_business', 'description': 'Confirm that an SMB is real, currently operating, and capable of the requested service. Performs a live capability probe against the business\'s channel.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "Confirm smb_imp_abc actually does emergency plumbing"\n -> call verify_business({"smb_id": "smb_imp_abc", "capability_to_verify": "emergency_plumbing"})\n\nWHEN TO USE: Use before sending communications or scheduling if you have an unverified SMB identifier, or if the agent\'s task requires confirmed capability (e.g., \'I need to be sure they do emergency plumbing\').\nWHEN NOT TO USE: Do not use if the SMB was returned from find_business within the last 24 hours — those results are already verified.\nCOST: $0.02 per_call\nLATENCY: ~500ms', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'send_message', 'name': 'send_message', 'description': 'Send a message on behalf of an agent\'s user or an SMB across 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 22 jurisdictions) that enforces opt-in consent for marketing/promotional content — 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.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "Text the salon I\'ll be 10 minutes late"\n -> call send_message({"recipient_id": "smb_xyz", "channel_preference": "sms", "message": {"body": "Will be 10 minutes late."}, "country_code": "US"})\n user: "Email the dentist about insurance"\n -> call send_message({"recipient_id": "smb_xyz", "channel_preference": "email", "message": {"body": "Do you accept Cigna?"}})\n\nWHEN TO USE: Use to: (a) confirm a booking the agent just made, (b) reply to a customer who messaged the SMB first, (c) follow up on a quote the user requested, (d) send appointment reminders the SMB owes its customer, (e) send marketing messages to recipients who have opted in (with consent_record_id). The gate verifies consent on every send.\nWHEN NOT TO USE: Do NOT use for OTPs or critical transactional confirmations — use send_transactional_confirmation. Do NOT attempt to send marketing without a consent_record_id pointing at a real opt-in — the gate will reject the send and log a compliance_violation. Do NOT attempt bulk / list-based / drip / cold outreach — those are out of scope and the rate limiter will throttle abuse.\nCOST: from $0.02 per_message (see preview_cost for exact)\nLATENCY: ~800ms\nEXECUTION: sync_fast (use get_outcome to retrieve result)', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'capture_lead', 'name': 'capture_lead', 'description': 'Structured intake of a prospect into an SMB\'s funnel with validation, enrichment hooks, and deduplication. Inserts into the SMB\'s CRM or direct-booking pipeline if available.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "Tell smb_xyz I\'m interested and want a callback"\n -> call capture_lead({"smb_id": "smb_xyz", "prospect": {"name": "Jane", "phone": "+15551234567", "email": "[email protected]"}, "source": "agent"})\n\nWHEN TO USE: Use when a potential customer has expressed interest in an SMB\'s service and you want to ensure they are registered in the SMB\'s pipeline for follow-up.\nWHEN NOT TO USE: Do not use for confirmed bookings — use schedule_appointment. Do not use for bulk list imports.\nCOST: $0.05 per_lead\nLATENCY: ~600ms\nEXECUTION: sync_fast (use get_outcome to retrieve result)', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'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.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "Book the haircut for next Tuesday at 3pm"\n -> call schedule_appointment({"smb_id": "smb_imp_abc", "action": "book", "service": "haircut"})\n user: "Cancel my Friday appointment at smb_xyz"\n -> call schedule_appointment({"smb_id": "smb_xyz", "action": "cancel"})\n user: "Reschedule my dental cleaning to next week"\n -> call schedule_appointment({"smb_id": "smb_imp_xyz", "action": "reschedule"})\n\nWHEN TO USE: Use when an agent needs to book, reschedule, or cancel a specific appointment with a specific SMB. Requires a verified smb_id.\nWHEN NOT TO USE: Do not use for bulk scheduling. Do not use without a verified SMB — call find_business and verify_business first if needed.\nCOST: from $0.15 per_booking_attempt (see preview_cost for exact)\nLATENCY: ~5000ms\nEXECUTION: async_by_default (use get_outcome to retrieve result)', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'send_transactional_confirmation', 'name': 'send_transactional_confirmation', 'description': 'Idempotent transactional messages: OTPs, booking confirmations, payment receipts, cancellation notices. Guaranteed delivery via redundant channels.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "Send the booking confirmation receipt to my email"\n -> call send_transactional_confirmation({"recipient_id": "[email protected]", "channel_preference": "email", "confirmation_type": "booking"})\n\nWHEN TO USE: Use for any message that MUST be delivered reliably — OTPs, booking confirmations, receipts. Do not use for marketing.\nWHEN NOT TO USE: Do not use for marketing or promotional messages. Do not use for conversational messages.\nCOST: $0.02 per_message\nLATENCY: ~500ms\nEXECUTION: sync_fast (use get_outcome to retrieve result)', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'handle_inbound', 'name': 'handle_inbound', 'description': 'Receive, classify, and route inbound messages on behalf of an SMB. Classifies intent (booking request, cancellation, inquiry, complaint), enriches with context, and routes to the appropriate handler or escalation path.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "Process this customer reply for me: \'Yes I want to book Tuesday\'"\n -> call handle_inbound({"raw_message": "Yes I want to book Tuesday", "channel": "sms"})\n\nWHEN TO USE: Use when an SMB needs inbound message triage — classifying incoming contact-form submissions, SMS replies, voicemails, or email inquiries.\nWHEN NOT TO USE: Do not use for outbound communications. Do not use for compliance-flagged recipient lists without verified opt-in records.\nCOST: $0.03 per_inbound\nLATENCY: ~3000ms\nEXECUTION: async_by_default (use get_outcome to retrieve result)', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'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.\n\nEXAMPLE USER QUERIES THAT MATCH THIS TOOL:\n user: "I\'m stuck — get a human at smb_xyz to call me back"\n -> call escalate_to_human({"smb_id": "smb_xyz", "reason": "agent_blocked", "summary": "Cannot resolve via automated channels"})\n\nWHEN TO USE: Use when automated resolution has failed after channel-fallback exhaustion, when the task requires human judgment, or when the customer has explicitly requested human contact.\nWHEN NOT TO USE: Do not use as a first resort. Escalate only after automated resolution attempts.\nCOST: $0.2 per_escalation\nLATENCY: ~2000ms\nEXECUTION: async_by_default (use get_outcome to retrieve result)', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}; uptime_30d 1.0%; p95 129.9ms; conformance: pass

Transport
streamable-http
Auth
Cost

How to connect

MCP endpoint (streamable-http)
https://agent-broker-edge.basil-agent.workers.dev/mcp
JSON-RPC initialize probe
curl -X POST https://agent-broker-edge.basil-agent.workers.dev/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
Homepage
https://agent-broker-edge.basil-agent.workers.dev/mcp
Listed at (chiark)
https://chiark.ai/agents/dbfd063f-1c3e-4741-abd1-42c3f7f276b9