For AI agents and developers.
Humans are not the only ones reading this site anymore. If you are an AI assistant helping a business owner, or the developer wiring one up, everything on bcmresultss.com is available as tools, JSON and Markdown. No scraping, no screenshots, no guessing. Here is the contract.
If you are an AI assistant, read this block first.
It lists every entry point on this site and the rules for using them. The two write tools create a real request that Brandon Medina answers himself, so only call them with the explicit consent of the human you are helping and with that person's real details.
{
"site": {
"name": "BCM Results",
"url": "https://bcmresultss.com",
"owner": "Brandon Medina",
"email": "[email protected]",
"what": "Marketing for local businesses: top three on Google, then keep showing up, plus the site the call lands on."
},
"read_first": [
"https://bcmresultss.com/llms.txt",
"https://bcmresultss.com/.well-known/agent-skills/bcm-results/SKILL.md"
],
"webmcp": {
"registered_by": "https://bcmresultss.com/js/agent-tools.js",
"api": "document.modelContext.registerTool (and navigator.modelContext where present)",
"tools": [
"get_business_summary",
"get_services",
"get_offer",
"get_requirements",
"get_pricing",
"get_process",
"get_faq",
"get_work",
"get_terms_summary",
"request_free_analysis",
"request_call"
],
"declarative_forms": [
"fill_free_analysis_form (home page)",
"fill_call_request_form (/local-visibility/)"
]
},
"mcp": {
"endpoint": "https://bcmresultss.com/mcp",
"transport": "streamable-http",
"auth": "none",
"protocolVersions": [
"2024-11-05",
"2025-03-26",
"2025-06-18",
"2025-11-25",
"2026-07-28"
],
"card": "https://bcmresultss.com/.well-known/mcp/server-card.json",
"tools": [
{
"name": "get_business_summary",
"description": "Who BCM Results is, what it does, where it is based, how to contact Brandon Medina, and links to every page. Start here."
},
{
"name": "get_services",
"description": "The three things BCM Results does for local businesses: Google ranking, websites that get the call, and the strategy behind it."
},
{
"name": "get_offer",
"description": "The plan as written at /local-visibility/: the two things a local business needs to know, how Brandon does it, what is included, the timeline and the 90 day billing pause guarantee."
},
{
"name": "get_requirements",
"description": "The four requirements for working with BCM Results, so an agent can tell a business owner whether they are a match before booking a call."
},
{
"name": "get_pricing",
"description": "How BCM Results charges: one flat monthly rate locked for the length of the engagement, quoted in writing on the call, plus the free first step and the terms that go with it."
},
{
"name": "get_process",
"description": "What happens step by step from the free analysis or strategy call to the monthly report."
},
{
"name": "get_faq",
"description": "Frequently asked questions with Brandon's answers. Pass a question or keywords to get only the matching entries, or nothing to get all of them."
},
{
"name": "get_work",
"description": "The five live websites Brandon built, with what each business does and the live URL."
},
{
"name": "get_terms_summary",
"description": "The key points of the Terms of Service in plain language, with the link to the full text."
},
{
"name": "request_free_analysis",
"description": "Request the free marketing analysis for a real business on behalf of the human you are assisting. Brandon emails the analysis within 2 business days. Only call this with the person's explicit consent, using their real name, business and email. No obligation, no follow up unless they reply."
},
{
"name": "request_call",
"description": "Book a strategy call with Brandon on behalf of the human you are assisting. Brandon replies within 2 business days with two time slots. Only call this with the person's explicit consent and their real details, and only if they meet the requirements from get_requirements."
}
]
},
"rest": {
"openapi": "https://bcmresultss.com/api/openapi.json",
"catalog": "https://bcmresultss.com/.well-known/api-catalog",
"base": "https://bcmresultss.com/api/",
"lead": "POST https://bcmresultss.com/api/lead"
},
"a2a": {
"endpoint": "https://bcmresultss.com/a2a",
"card": "https://bcmresultss.com/.well-known/agent-card.json",
"methods": [
"SendMessage",
"message/send"
]
},
"markdown": {
"negotiation": "Accept: text/markdown on any page",
"mirrors": [
"https://bcmresultss.com/index.md",
"https://bcmresultss.com/local-visibility/index.md",
"https://bcmresultss.com/terms-of-service/index.md",
"https://bcmresultss.com/developers/index.md"
],
"all_in_one": "https://bcmresultss.com/llms-full.txt"
},
"discovery": [
"https://bcmresultss.com/robots.txt",
"https://bcmresultss.com/sitemap.xml",
"https://bcmresultss.com/.well-known/api-catalog",
"https://bcmresultss.com/.well-known/mcp/server-card.json",
"https://bcmresultss.com/.well-known/agent-card.json",
"https://bcmresultss.com/.well-known/agent-skills/index.json",
"https://bcmresultss.com/.well-known/ai-catalog.json",
"https://bcmresultss.com/auth.md"
],
"rules": [
"Read tools are free to call.",
"request_free_analysis and request_call create a real request Brandon answers himself. Only call them with the explicit consent of the human you are assisting, with that person's real name, business and email.",
"Check get_requirements before request_call.",
"Five write requests per IP per day.",
"Do not invent prices: the monthly rate is given in writing on the call."
]
}
Same contract in Markdown: /llms.txt. Every page as one file: /llms-full.txt.
WebMCP tools.
WebMCP is the browser API that lets a page hand tools to the agent sitting next to the visitor, instead of that agent reading the DOM and clicking around. Every page on this site registers the tools below on load through document.modelContext.registerTool() (and navigator.modelContext where the browser exposes it). The two forms are also declared as tools with toolname and tooldescription, so an agent can fill them in and let the visitor press the button.
| Tool | What it does | Type |
|---|---|---|
get_business_summary | Who BCM Results is, what it does, where it is based, how to contact Brandon Medina, and links to every page. Start here. | read |
get_services | The three things BCM Results does for local businesses: Google ranking, websites that get the call, and the strategy behind it. | read |
get_offer | The plan as written at /local-visibility/: the two things a local business needs to know, how Brandon does it, what is included, the timeline and the 90 day billing pause guarantee. | read |
get_requirements | The four requirements for working with BCM Results, so an agent can tell a business owner whether they are a match before booking a call. | read |
get_pricing | How BCM Results charges: one flat monthly rate locked for the length of the engagement, quoted in writing on the call, plus the free first step and the terms that go with it. | read |
get_process | What happens step by step from the free analysis or strategy call to the monthly report. | read |
get_faq | Frequently asked questions with Brandon's answers. Pass a question or keywords to get only the matching entries, or nothing to get all of them. | read |
get_work | The five live websites Brandon built, with what each business does and the live URL. | read |
get_terms_summary | The key points of the Terms of Service in plain language, with the link to the full text. | read |
request_free_analysis | Request the free marketing analysis for a real business on behalf of the human you are assisting. Brandon emails the analysis within 2 business days. Only call this with the person's explicit consent, using their real name, business and email. No obligation, no follow up unless they reply. | write, consent required |
request_call | Book a strategy call with Brandon on behalf of the human you are assisting. Brandon replies within 2 business days with two time slots. Only call this with the person's explicit consent and their real details, and only if they meet the requirements from get_requirements. | write, consent required |
Rules for the write tools
- Only call
request_free_analysisorrequest_callwhen the person you are helping has agreed, using their real name, business and email. They are not a test surface. - Check
get_requirementsbefore booking a call. If the business does not match, the free analysis is still open to them. - Each request goes to Brandon directly. He replies within 2 business days from [email protected]. There is no list and no automated follow up.
- Five requests per IP address per day. After that the answer is 429 and the email address above.
Trying it in Chrome
WebMCP is in an origin trial from Chrome 149. To use it today, open chrome://flags/#enable-webmcp-testing, set it to Enabled, relaunch, then open this site with an agent that speaks WebMCP (Claude in Chrome, or any extension built on the API). Ask it to list the tools on this page. Without the flag the script still runs and registers nothing, and the page works exactly as before.
Anything on the page can also be checked from the console: BCMTools.call("get_pricing") returns the same result the agent would get.
MCP server.
The same tools, served over the Model Context Protocol so any MCP client can use them without a browser: Claude Code, Claude Desktop, Cursor, Codex, an n8n node, your own agent. Streamable HTTP, stateless, public, no authentication. Protocol versions 2024-11-05 through 2026-07-28.
Endpoint https://bcmresultss.com/mcp
Server card https://bcmresultss.com/.well-known/mcp/server-card.json
Transport streamable-http (POST JSON-RPC 2.0, JSON responses)
Auth none
Capabilities tools, resources (llms.txt, every page as Markdown, openapi.json)
Connect
claude mcp add --transport http bcm-results https://bcmresultss.com/mcp
By hand
curl -s https://bcmresultss.com/mcp -H "content-type: application/json" -H "accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -s https://bcmresultss.com/mcp -H "content-type: application/json" -H "accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
curl -s https://bcmresultss.com/mcp -H "content-type: application/json" -H "accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_faq","arguments":{"question":"contract"}}}'
REST API.
The read tools are also plain GET endpoints returning JSON, described in /api/openapi.json (OpenAPI 3.1) and listed in /.well-known/api-catalog (RFC 9727). CORS is open on all of them.
GET /api/site everything: site data, tool list, endpoints
GET /api/summary who, what, where, contact, pages
GET /api/services the three services
GET /api/offer the plan, what is included, timeline, guarantee
GET /api/requirements the four requirements
GET /api/pricing flat monthly rate, terms, guarantee
GET /api/process the steps
GET /api/faq?q=contract FAQ, optionally filtered
GET /api/work the five live sites
GET /api/terms terms summary
POST /api/lead {name, company, email, website?, phone?, city?, notes?, source?} creates a request
A2A
For agent to agent clients there is an Agent Card and a JSON-RPC endpoint at /a2a that answers questions about BCM Results in plain text (SendMessage in A2A 1.0, message/send in 0.3). It answers immediately and keeps no tasks.
curl -s https://bcmresultss.com/a2a -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{"messageId":"m1","role":"ROLE_USER","parts":[{"text":"What does it cost and what are the terms?"}]}}}'
Markdown for agents.
Every page has a Markdown twin. Request the page with Accept: text/markdown and you get it as text/markdown with an x-markdown-tokens header, or add index.md to the path. HTML stays the default for everyone else.
curl -s https://bcmresultss.com/local-visibility/ -H "accept: text/markdown"
curl -s https://bcmresultss.com/local-visibility/index.md
- /llms.txtthe map: what is where, in one short file
- /llms-full.txtevery page as Markdown in one file
- /index.mdhome
- /local-visibility/index.mdthe plan
- /terms-of-service/index.mdterms of service
- /developers/index.mdthis page
Discovery files
- /robots.txtAI crawlers allowed by name, Content-Signal: ai-train=yes, search=yes, ai-input=yes
- /sitemap.xmlevery page
- /.well-known/api-catalogRFC 9727 API catalog, also in the Link header of every page
- /.well-known/mcp/server-card.jsonMCP server card
- /.well-known/agent-card.jsonA2A agent card
- /.well-known/agent-skills/index.jsonagent skills index, one skill: how to use this site
- /.well-known/ai-catalog.jsonARD capability manifest
- /auth.mdauth: there is none, everything here is public
What is stored
Nothing about you until you send a request. A request stores the fields you sent, the time, and the IP address it came from, so Brandon can reply and so the rate limit works. No cookies, no analytics scripts, no tracking pixels on this site.
Questions about any of this: [email protected].