BuzzMeBro
Set up an apartment buzzer number that rings every roommate’s phone. Canada.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"buzzmebro": {
"url": "https://buzzmebro.com/api/mcp"
}
}
}Remote endpoints
https://buzzmebro.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (17)
🟢check_building(postal_code)
Checks whether BuzzMeBro can give this building a local buzzer number, and returns the price, the free-trial terms and how the service works. Call this first. Stores nothing and costs nothing.
Input Schema
{
"type": "object",
"properties": {
"postal_code": {
"type": "string",
"description": "The apartment building’s postal code, e.g. \"M4B 1B3\". Canadian postal codes only for now.",
"minLength": 3,
"maxLength": 12
}
},
"required": [
"postal_code"
],
"additionalProperties": false
}🟡create_setup(postal_code, unit, mobile_phone, referral_code, agent_name)
Creates a BuzzMeBro setup for the person and returns setup_id and a status_token you must keep for every later call (plus setup_url, a fallback link if you cannot relay a texted code). Only call it after check_building said available and the person has asked you to set it up. No text message is sent and nothing is charged by this call. Next: send_phone_code.
Input Schema
{
"type": "object",
"properties": {
"postal_code": {
"type": "string",
"description": "The apartment building’s postal code, e.g. \"M4B 1B3\". Canadian postal codes only for now.",
"minLength": 3,
"maxLength": 12
},
"unit": {
"type": "string",
"description": "Their apartment or unit number as the lobby panel lists it, e.g. \"1502\", \"B\" or \"PH3\".",
"minLength": 1,
"maxLength": 32
},
"mobile_phone": {
"type": "string",
"description": "The person’s own mobile number. It becomes the first phone the buzzer rings and how they sign in; we text it a code when they open the link.",
"minLength": 7,
"maxLength": 32
},
"referral_code": {
"type": "string",
"description": "Optional BuzzMeBro referral code from a friend.",
"maxLength": 20
},
"agent_name": {
"type": "string",
"description": "Optional: your name as the person knows you (e.g. \"ChatGPT\", \"Claude\"), shown on their link page.",
"maxLength": 64
}
},
"required": [
"postal_code",
"unit",
"mobile_phone"
],
"additionalProperties": false
}🟡send_phone_code(setup_id, status_token)
Texts a 6-digit code to the mobile number given in create_setup (never to any other number). Tell the person a text is coming and ask them to read the code to you, then call confirm_phone_code. Call again only if it has not arrived after a minute; each setup gets 3 codes.
Input Schema
{
"type": "object",
"properties": {
"setup_id": {
"type": "string",
"description": "setup_id from create_setup.",
"format": "uuid"
},
"status_token": {
"type": "string",
"description": "status_token from create_setup. Keep it private."
}
},
"required": [
"setup_id",
"status_token"
],
"additionalProperties": false
}🟢confirm_phone_code(setup_id, status_token, code)
Checks the code the person read back to you. This proves the phone is theirs, which matters because that phone will open their front door. Five tries per setup. Next: start_checkout.
Input Schema
{
"type": "object",
"properties": {
"setup_id": {
"type": "string",
"description": "setup_id from create_setup.",
"format": "uuid"
},
"status_token": {
"type": "string",
"description": "status_token from create_setup. Keep it private."
},
"code": {
"type": "string",
"description": "The digits from the BuzzMeBro text, e.g. \"482913\"."
}
},
"required": [
"setup_id",
"status_token",
"code"
],
"additionalProperties": false
}⚪start_checkout(setup_id, status_token)
After confirm_phone_code: creates the person’s BuzzMeBro account and apartment and returns payment_url, Stripe’s own secure page where the person approves a card, Apple Pay, Google Pay or Link (with the free month when it applies, nothing is charged until it ends). Give them the link or message_for_the_person; you never see or type card details. Calling it again returns a fresh link for the same apartment.
Input Schema
{
"type": "object",
"properties": {
"setup_id": {
"type": "string",
"description": "setup_id from create_setup.",
"format": "uuid"
},
"status_token": {
"type": "string",
"description": "status_token from create_setup. Keep it private."
}
},
"required": [
"setup_id",
"status_token"
],
"additionalProperties": false
}🟡get_setup_status(setup_id, status_token)
Reads how far the setup has got and says what to do next. Once the person has paid, this call gets their number; when status is "ready" it returns their new BuzzMeBro number and swap_the_buzzer: the steps to get the building to point the buzzer at that number, and ready-to-send messages for building management, the landlord, the concierge, the superintendent or a building portal.
Input Schema
{
"type": "object",
"properties": {
"setup_id": {
"type": "string",
"description": "setup_id from create_setup.",
"format": "uuid"
},
"status_token": {
"type": "string",
"description": "status_token from create_setup. Keep it private."
}
},
"required": [
"setup_id",
"status_token"
],
"additionalProperties": false
}🟢partner_program_info
Returns how the partner program works: the 50% share of collected revenue, what counts and what does not, when and how payouts happen, the rules, and the steps to join. Call it first and explain it to the person before applying. Stores nothing.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡partner_apply(name, mobile_phone, email, persona, building, ...)
Starts a partner application with the person’s details and returns application_id and application_token. Only call it when the person has asked to join. No text is sent by this call. Next: partner_send_code.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "The person’s name."
},
"mobile_phone": {
"type": "string",
"minLength": 7,
"maxLength": 32,
"description": "The person’s own Canadian mobile number. We text it a code."
},
"email": {
"type": "string",
"maxLength": 254,
"description": "The person’s email."
},
"persona": {
"type": "string",
"enum": [
"front_desk",
"property_manager",
"condo_board",
"leasing_agent",
"mover",
"student_housing",
"creator",
"other"
],
"description": "How they meet renters."
},
"building": {
"type": "string",
"maxLength": 120,
"description": "Optional: the building or company they work with."
},
"employer_ok": {
"type": "boolean",
"description": "If they work for a building or concierge company: has their employer allowed it?"
}
},
"required": [
"name",
"mobile_phone",
"email",
"persona"
],
"additionalProperties": false
}🟡partner_send_code(application_id, application_token)
Texts a 6-digit code to the mobile number in the application (never any other number). Ask the person to read it to you, then call partner_confirm_code. Each application gets 3 codes, at least a minute apart.
Input Schema
{
"type": "object",
"properties": {
"application_id": {
"type": "string",
"format": "uuid",
"description": "application_id from partner_apply."
},
"application_token": {
"type": "string",
"description": "application_token from partner_apply. Keep it private; it collects the partner key once."
}
},
"required": [
"application_id",
"application_token"
],
"additionalProperties": false
}⚪partner_confirm_code(application_id, application_token, code)
Checks the texted code. Five tries per application. Next: partner_terms_link.
Input Schema
{
"type": "object",
"properties": {
"application_id": {
"type": "string",
"format": "uuid",
"description": "application_id from partner_apply."
},
"application_token": {
"type": "string",
"description": "application_token from partner_apply. Keep it private; it collects the partner key once."
},
"code": {
"type": "string",
"description": "The digits from the text."
}
},
"required": [
"application_id",
"application_token",
"code"
],
"additionalProperties": false
}🟢partner_terms_link(application_id, application_token)
Returns a one-time link to the partner terms. Give it to the person: they read the terms and press Accept themselves. You cannot accept for them. When they say it is done, call partner_claim_key.
Input Schema
{
"type": "object",
"properties": {
"application_id": {
"type": "string",
"format": "uuid",
"description": "application_id from partner_apply."
},
"application_token": {
"type": "string",
"description": "application_token from partner_apply. Keep it private; it collects the partner key once."
}
},
"required": [
"application_id",
"application_token"
],
"additionalProperties": false
}🟢partner_claim_key(application_id, application_token)
After the person accepted the terms: returns their partner link, code and partner key. The key is shown once; keep it private and use it for the partner_get_* tools. The application token stops working after this call.
Input Schema
{
"type": "object",
"properties": {
"application_id": {
"type": "string",
"format": "uuid",
"description": "application_id from partner_apply."
},
"application_token": {
"type": "string",
"description": "application_token from partner_apply. Keep it private; it collects the partner key once."
}
},
"required": [
"application_id",
"application_token"
],
"additionalProperties": false
}🟢partner_get_links(partner_key)
Returns the partner’s share link, typed code, a QR code (SVG) and their dashboard address.
Input Schema
{
"type": "object",
"properties": {
"partner_key": {
"type": "string",
"description": "The partner key from partner_claim_key. On REST send it as \"Authorization: Bearer <key>\" instead."
}
},
"additionalProperties": false
}🟢partner_get_kit(partner_key)
Returns ready texts, a resident email, desk card and move-in insert wording with the partner’s link, plus the house rules for sharing (honest words only, no pressure, never ask residents for phone numbers or door codes).
Input Schema
{
"type": "object",
"properties": {
"partner_key": {
"type": "string",
"description": "The partner key from partner_claim_key. On REST send it as \"Authorization: Bearer <key>\" instead."
}
},
"additionalProperties": false
}🟢partner_get_stats(partner_key)
Returns status, visits, signups, free months, paying apartments, collected revenue, earnings by state (on hold, ready, paid, reversed), the share ledger (apartments as codes only, never names or addresses) and payout history. Quote only these numbers.
Input Schema
{
"type": "object",
"properties": {
"partner_key": {
"type": "string",
"description": "The partner key from partner_claim_key. On REST send it as \"Authorization: Bearer <key>\" instead."
}
},
"additionalProperties": false
}🟡partner_payout_link(partner_key)
Returns a one-time link to a BuzzMeBro page that sends the person to Stripe’s own secure page, where THEY confirm their identity and add their bank. You never see or type bank details. Payouts start once they have at least $25 ready.
Input Schema
{
"type": "object",
"properties": {
"partner_key": {
"type": "string",
"description": "The partner key from partner_claim_key. On REST send it as \"Authorization: Bearer <key>\" instead."
}
},
"additionalProperties": false
}🔴partner_rotate_key(partner_key)
Revokes the current partner key and returns a new one (shown once). Use it if the key may have leaked.
Input Schema
{
"type": "object",
"properties": {
"partner_key": {
"type": "string",
"description": "The partner key from partner_claim_key. On REST send it as \"Authorization: Bearer <key>\" instead."
}
},
"additionalProperties": false
}Community
Evidence