Banjo
Self-hosted AI assistant that places real phone calls for you: bookings, reservations, errands.
Connector by shatch · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying Banjo?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Pick your client. Read the repository before you give any tool access to your data.
No install instructions from the source yet. Check the repository for setup steps.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 10 read · 16 write · 3 delete · 2 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Docker image
Tools by what they do 31
Read from the source code; the running server may list different tools.
Read 10 · Look things up without changing anything.
ask_ownercheck_availabilitycheck_my_availabilityfind_contactfind_my_bookingget_call_transcriptget_task_statuslist_contactslist_recent_taskssuggest_times
Write 16 · Create, change, send or run things.
add_contactbook_appointmentconfirm_appointmentend_callend_conversation_callescalate_and_end_callflag_for_owner_and_end_callleave_voicemail_and_end_callplace_callpress_digitsrecord_answerrecord_task_outcome
Show 4 more tools
report_answers_and_end_callreschedule_bookingtransfer_to_ownerundo_confirmed_appointment
Delete 3 · Delete, drop, revoke or wipe things.
cancel_taskstop_callupdate_contact
Not yet classified 2 · We could not tell from the name and description.
report_negotiation_failedwait_on_hold
Network hosts it talks to 9
api.openai.com· found in codeapi.pushover.net· found in codeapi.twilio.com· found in codecaldav.fastmail.com· found in codecarddav.fastmail.com· found in codedevelopers.openai.com· found in codegithub.com· found in codeglama.ai· found in codejson.schemastore.org· found in code
Files it touches
/dev/null
Tools (31)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_contactAdd a contactSave a new contact (business or person) for future calls/bookings.
ask_ownerDescription is built at runtime.
book_appointmentLock in a new appointment once a specific time has been agreed with the caller. Fails with "already_has_active_booking" if this caller already has one — offer reschedule_booking instead of retrying. Fails with "outside_business_hours" or "slot_unavailable" if the time does not work; offer a different time rather than retrying the same one. Fails with "in_the_past" or "beyond_lookahead_window" if the requested date is out of the bookable range; offer a different date. Fails with "caller_id_unavailable" if the caller's number is blocked/withheld — this line cannot take a booking without a real c…
cancel_taskCancel a scheduled callcan change or delete dataCall off a phone call that hasn't been placed yet — typically one scheduled for later with place_call's scheduledFor. A call already in progress or finished is not affected; the result says whether it was cancelled. An agent's key can cancel only calls it asked for.
check_availabilityCheck whether a specific date and time the caller is proposing is free on the calendar and within business hours. Use this before agreeing to any specific time.
check_my_availabilityDescription is built at runtime.
confirm_appointmentDescription is built at runtime.
end_callCall this once you have said everything you need to say and are ready to end the call normally — e.g. right after book_appointment or reschedule_booking has succeeded and you have told the caller the confirmed details.
end_conversation_callUse this once this open-ended conversation has reached a natural close — you've said what you called to say, and/or the other person has too, and there's nothing more to discuss right now. This is a normal, successful way to end a conversational call — it is not an escalation or a failure. Only available on calls with no booking/negotiation goal. Before calling this, in the same turn: answer any question the other party just asked, then say an actual goodbye to them (e.g. "Thanks so much — have a great day!"). Your goodbye is the last thing you say. Never call this in the same turn as a questi…
escalate_and_end_callDescription is built at runtime.
find_contactFind a contactread-onlyFuzzy-search saved contacts by name or notes text. Call this before place_call to resolve a contactId, or to check whether a contact already exists before add_contact.
find_my_bookingLook up the current caller's own active booking, if any. Takes no arguments — it always looks up whoever is calling right now. The result includes callerName, the name already on file from when the booking was made — read it back to the caller to confirm identity rather than asking them to restate their name.
flag_for_owner_and_end_callUse this when you are genuinely stuck and cannot proceed — a request outside what your tools support, a hostile or nonsensical caller, or anything you cannot resolve on your own. Texts the assistant's owner and ends the call.
get_call_transcriptGet call transcriptread-onlyRead what was said on a task's phone calls, line by line, when the owner wants to know what the other party actually said. Only available if this install saves transcripts (PERSIST_TRANSCRIPTS); the result says so if not. Lines marked suspect may not be what was said.
get_task_statusGet task statusread-onlyCheck the current status and (if finished) outcome of a previously started task, whether it was a phone call or a recorded online booking. For an 'ask' call, collectedAnswers holds the answers saved during the call, even when it ended as something other than answered (a transfer, an escalation).
Show 16 more tools
leave_voicemail_and_end_callLeave a voicemail message and end the call. Use this when you have reached an answering machine or voicemail system instead of a human. Call it without saying anything first: the voicemail records everything, and it must open with the AI disclosure, which the system says for you. Provide the message as the `message` argument — the system says the disclosure, then your message, verbatim, then hangs up. Leave the disclosure out of the message, and do NOT say the message yourself: the callee would hear it twice. Never tell the callee how the message is delivered or that the call is ending.
list_contactsList contactsread-onlyList saved contacts, optionally filtered by category.
list_recent_tasksList recent tasksread-onlyList the most recently updated tasks (phone calls and online bookings), most recent first. An ask call's answers saved before it ended some other way aren't included: get_task_status has them (collectedAnswers).
place_callPlace a phone callPlace an outbound phone call to a contact to accomplish a task (e.g. book an appointment, or ask a business a question with mode 'ask'). Returns immediately with a taskId — the call itself runs asynchronously over the following minutes (or at scheduledFor, if given, to call later instead of now). Poll get_task_status with the returned taskId to learn the outcome. If this server asks the owner to approve calls first, the result says so: get_task_status then shows approval: 'waiting' until they approve (the call goes ahead) or 30 minutes pass (it's cancelled, approval: 'not_approved'). Tell the …
press_digitsSend DTMF tones on the phone line, e.g. to navigate an IVR menu.
record_answerSave one answer as soon as it is settled: call this right after the other party confirms your read-back of an answer, without saying anything about it, then carry on with the call. Use the question's number in your list. If they can't or won't answer one, save it with answered: false. Saving the same number again replaces what you saved before. This does not end the call; report_answers_and_end_call still does, at the end.
record_task_outcomeRecord an online bookingLog the outcome of a task that was completed OUTSIDE the phone-call path (typically an online booking the skill completed itself via browser automation), so it appears in the same task history as phone-call tasks.
report_answers_and_end_callUse this to end the call once you have asked every question on your list and they have answered what they can. Record one entry per question, by its number: what they said, in a short plain sentence, or answered: false if they didn't know, wouldn't say, or you never got to it. Record only what they actually told you on this call. Never fill a gap with a guess. Answers you saved with record_answer are kept: an answer here for the same question replaces it, and answered: false here never erases one. This is the normal, successful end of this call, even if some questions went unanswered. Before c…
report_negotiation_failedUse this when you reached and properly engaged with a human, but none of the times offered by either side fit the constraints of the task, and no further negotiation is possible. This is distinct from escalate_and_end_call — use this only when the call went smoothly but simply failed to reach an agreement.
reschedule_bookingMove the current caller's own active booking to a new date/time. The name on the booking carries over automatically — do not ask the caller for their name again. Fails with "no_active_booking" if they don't have one — direct them to book_appointment instead. Fails with "outside_business_hours" or "slot_unavailable" if the new time does not work; their original booking is left untouched in that case. Fails with "in_the_past" or "beyond_lookahead_window" if the requested date is out of the bookable range; their original booking is left untouched in that case too. Fails with "caller_id_unavailabl…
stop_callHang up a call in progresscan change or delete dataHang up a call that is already in progress — the one thing cancel_task cannot do. Use this to stop a call that is going wrong or was placed in error. The task is recorded as failed with the reason given, and the usual outcome notification is sent. An agent's key can stop only calls it asked for.
suggest_timesSuggest a few open times on a specific day, within business hours, when the caller does not have a specific time in mind yet.
transfer_to_ownerDescription is built at runtime.
undo_confirmed_appointmentDescription is built at runtime.
update_contactUpdate a contactcan change or delete dataUpdate an existing contact — e.g. record the assistant's owner's stated preferred booking channel so future tasks for this contact skip asking again, or update notes/booking URL. Notes go into every call to the contact, and the booking URL is the page opened to book online, so only the owner's key can change either.
wait_on_holdUse this, without saying anything first, as soon as you are in a hold queue: hold music, "please hold", "your call will be answered by the next available…", or an estimated wait time. Also use it when a phone menu says you can remain on the line and you have nothing to enter. Not after each key press, though: a menu goes on to its next prompt by itself, and you answer it faster off hold. You stay on the line silently, and you are told the moment a live person picks up, or handed back as soon as a menu asks you for something. Never use it with a person on the line.
Signals
- Stars
- 2
- Forks
- 1
- Open issues
- 13
- Last commit
- Oct 24, 2026 (14 days ago)
- Last release
- Oct 22, 2026 (15 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.shatch/banjo- Version
- 0.1.14
- Auth
- API key
- Packages
- oci
ghcr.io/shatch/banjo:0.1.14 - License
- MIT
- Repository
- github.com/shatch/banjo
- Website
- github.com/shatch/banjo
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Banjo running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Banjo MCP server. Agent Mart. https://agentmart.dev/connectors/shatch-banjo (last updated 2026-10-24)