For AI
agents
Sync is the CHNLSYNC advisor for business technology decisions: connectivity, phone systems, contact center, security, cloud. Any AI agent can call it. Sync never names a supplier and never quotes a price. A human broker reviews every recommendation before a supplier is disclosed, and the end state of every conversation is a broker callback, requested only with the user’s consent. The service is free to buyers; suppliers pay CHNLSYNC after a close, through one of the largest technology services distributors in North America.
Quick start
$ claude mcp add --transport http chnlsync https://mcp.chnlsync.com/mcp # no key needed for the MCP endpoint $ curl "https://api.chnlsync.dev/api/v1/copper-retirement?carrier=AT%26T&state=TX" # keyless public route · FCC-sourced · CC BY 4.0 · cite source_url $
Two things work with no credentials at all: the MCP endpoint and the public copper retirement route. The REST mirror of the advisor takes a per-consumer key (see Getting a key). Everything an agent can do here is bounded by the same rails a human gets in the Sync app.
What Sync is
Sync turns a plain-language description of what is not working — a copper retirement letter, a phone system at end of life, a renewal that feels expensive — into a structured case file, and keeps a living record of the buyer’s environment so nothing has to be re-explained. The trust rules are enforced in software, not in a prompt: no supplier is named until a human broker has reviewed the fit, and pricing is never generated by a model.
For an agent this means Sync is a tool you can hand your user’s situation to safely. It asks the right discovery questions, tells the user what to gather, and explains the decision path. When the user is ready for a human, the agent requests a callback with the user’s consent and a CHNLSYNC broker takes it from there. Every call also returns a claim_url; the user can take over the workspace at any point and continue in the Sync app at app.chnlsync.com, with everything gathered so far carried across.
Buyers pay nothing. When a buyer signs with a supplier, that supplier pays CHNLSYNC a commission through one of the largest technology services distributors in North America. The contract is between the buyer and the supplier; CHNLSYNC never invoices the buyer and never adds a markup.
Endpoints
| Surface | URL | Auth |
|---|---|---|
| MCP server | https://mcp.chnlsync.com/mcp — streamable HTTP; three tools listed below |
None |
| REST mirror | https://api.chnlsync.dev/api/v1/agent/ — sessions, chat, callback-request |
X-Agent-API-Key |
| Public copper route | GET https://api.chnlsync.dev/api/v1/copper-retirement?carrier=&state= |
None |
| OpenAPI | https://api.chnlsync.dev/openapi.json — authoritative for every field |
— |
| Interactive docs | https://api.chnlsync.dev/docs |
— |
Tools
-
check_copper_retirementread-onlyCopper and POTS retirement program status by carrier and state, read from the CHNLSYNC dataset built on FCC Section 214 discontinuance filings and network change disclosures. Deterministic: no model in the loop, no session required.
- Inputs
carrier(display name such asAT&T,Lumen,Frontier; optional) ·state(two-letter abbreviation; optional). Omit both for the full dataset.- Returns
records[]withcarrier,state,status(program_activeordate_filed),retirement_date,notes; plussource,source_url, andlicense(CC BY 4.0). Citesource_urlwhenever you use the data.
-
ask_sync_advisorwrite · non-destructiveOne advisor turn on behalf of your user. The first call, with
company_nameandpain(what is not working, in the user’s own words), creates a private provisional workspace and returns its credentials. Later calls passsession_idandsession_tokenback to continue the same conversation. Persist both.- Inputs
message(required) ·session_id+session_tokento continue ·company_name+painon the first call.- Returns
assistant_message,follow_up_questions[],conversation_id,review_status,claim_url, a fixeddisclosureline, and thesession_id/session_tokento keep. Replies never contain supplier names or pricing; those come only after a human broker review, through the claim link or a requested callback.
-
request_broker_callbackwrite · non-destructiveconsent requiredHands the case to a human broker. Call it only after the user has explicitly agreed to share their name and email with CHNLSYNC. It is the only call on this surface that carries contact details, and the terminal state of a conversation.
- Inputs
session_id,session_token,contact_name,contact_email.- Returns
status: "received"and the disclosure line. A broker follows up with the user directly. Nothing else is triggered: no vendor is contacted, nothing is ordered.
-
Address-level lookupcomingAn address-level copper and fiber availability lookup, built on the FCC Broadband Data Collection, is in development. It will be read-only and will report filed availability, not a recommendation or a serviceability guarantee. This page and the OpenAPI document will change when it ships.
REST mirror
The same three actions are plain HTTPS routes. Send your consumer key in X-Agent-API-Key; once a session exists, also send its token in X-Agent-Session-Token. Bodies and responses are JSON. The public copper route is the exception: no key, no session.
| Route | Purpose | Headers |
|---|---|---|
POST | /api/v1/agent/sessions — create a provisional workspace (company_name, pain; optional domain, site_count, current_providers[], contract_end_dates) | X-Agent-API-Key |
POST | /api/v1/agent/sessions/{id}/chat — one advisor turn (message; optional conversation_id) | key + session token |
POST | /api/v1/agent/sessions/{id}/callback-request — consented broker callback (contact_name, contact_email) | key + session token |
GET | /api/v1/copper-retirement?carrier=&state= — copper status, keyless | none |
Create a session
curl -X POST https://api.chnlsync.dev/api/v1/agent/sessions \
-H "X-Agent-API-Key: $CHNLSYNC_AGENT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company_name":"Example Dental Group",
"pain":"AT&T says our copper lines retire this year. Four offices, fax and alarm lines on POTS."}'
Ask the advisor
curl -X POST https://api.chnlsync.dev/api/v1/agent/sessions/$SESSION_ID/chat \
-H "X-Agent-API-Key: $CHNLSYNC_AGENT_API_KEY" \
-H "X-Agent-Session-Token: $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message":"Which lines are at risk first, and what should we gather before talking to anyone?"}'
Response (sketch)
{
"assistant_message": "Start with the lines that cannot fail: the fire panel and the elevator phone ...",
"follow_up_questions": ["Which office received the letter?", "Do any lines carry a fax or alarm?"],
"conversation_id": "7c1e...",
"review_status": null,
"claim_url": "https://app.chnlsync.com/portal?claim=...",
"disclosure": "A human broker reviews every recommendation; supplier names and pricing come only after that review."
}
Request a callback (with consent)
curl -X POST https://api.chnlsync.dev/api/v1/agent/sessions/$SESSION_ID/callback-request \
-H "X-Agent-API-Key: $CHNLSYNC_AGENT_API_KEY" \
-H "X-Agent-Session-Token: $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"contact_name":"Dana Ortiz","contact_email":"dana@example.com"}'
# → {"status":"received","disclosure":"A human broker reviews every recommendation; ..."}
Copper status, no key
curl "https://api.chnlsync.dev/api/v1/copper-retirement?carrier=AT%26T&state=TX"
# → {"records":[{"carrier":"AT&T","state":"TX","status":"program_active", ...}],
# "source":"FCC Section 214 discontinuance filings ...","source_url":"https://chnlsync.com/copper-retirement/","license":"CC BY 4.0"}
Status codes. 401 unknown or missing key. 404 unknown session, or the agent surface is closed. 422 the request was rejected by validation or by the safety guardrails; rephrase as a plain description and try again. 429 a limit was reached; see Limits.
Add Sync to your assistant
| Client | How |
|---|---|
| Claude | Connectors directory: Sync by CHNLSYNC. Or Settings → Connectors → Add custom connector, URL https://mcp.chnlsync.com/mcp. |
| Claude Code | claude mcp add --transport http chnlsync https://mcp.chnlsync.com/mcp |
| ChatGPT | Plugins directory: Sync by CHNLSYNC. |
| Cursor | Add to .cursor/mcp.json: {"mcpServers":{"chnlsync":{"url":"https://mcp.chnlsync.com/mcp"}}} |
| Any MCP client | Connect over streamable HTTP to https://mcp.chnlsync.com/mcp. No key. Tools are titled and annotated (read-only / non-destructive) so hosts can show the right prompts. |
Getting a key
The MCP endpoint and the public copper route need no credentials. The REST mirror takes a per-consumer key so usage can be attributed and, if it ever has to be, revoked. Email agents@chnlsync.com with who you are, what your agent does, and the volume you expect. Keys are named per consumer and issued by a person, not a form.
Limits
- 10 requests per minute per keyApplies to every route on the REST mirror. Over the limit returns
429; back off and retry. - A daily session budget per consumerEach key may open a bounded number of provisional workspaces per UTC day. Continue existing sessions rather than opening new ones.
- 20 advisor turns per provisional workspaceAfter that the user claims the workspace at the
claim_urland continues in the Sync app. Everything gathered so far carries over. - No ordering, no paymentNothing on this surface can buy, sign, or pay for anything. The only write that leaves the conversation is a consented callback request.
Data and license
The copper retirement dataset is licensed CC BY 4.0. Reuse it freely with attribution: cite “CHNLSYNC Copper Retirement Tracker” and link to chnlsync.com/copper-retirement/; the source_url field carries that link for you. Sources, update cadence, and known limits are documented in the methodology.
Conversations are handled under the privacy policy and used to serve the buyer’s case, not to train public models. Contact details enter the system only through a consented callback request. Use of the API is governed by the terms of service.
What the tools will never do
- Quote or estimate pricingReal numbers come only from actual supplier quotes after broker review.
- Name or recommend a specific supplier on their ownSupplier names reach the buyer only through an operator-approved disclosure with an audit trail.
- Contact a vendor, share the user’s information with one, or take any outbound action without explicit approval
- Order, sign, or pay for anything
- Collect contact details without consent
request_broker_callbackis the only call that carries a name and an email. Ask the user first, every time.
The buyer-facing version of these rules: How we work
Common questions
Does the MCP endpoint require authentication?
No. It is a public streamable-HTTP endpoint. Usage is attributed by the connecting client’s name and every limit is enforced server-side, so there is nothing for an end user to configure. The REST mirror is the surface that takes a per-consumer key.
Can my agent get a price or a supplier shortlist?
No, by design. Sync never produces pricing and never names a supplier on its own. Both reach the buyer only after a human broker has reviewed the case, either inside the claimed workspace or on the callback. If your user needs a number today, the honest answer is to request the callback.
What happens after request_broker_callback?
A human broker at CHNLSYNC receives the request together with the case file and follows up with the user directly. Nothing else is triggered: no vendor is contacted, nothing is ordered, and the user’s details are not shared onward.
What is the claim_url for?
Every response carries a link that lets the user take over the provisional workspace in the Sync app at app.chnlsync.com. The facts gathered through your agent carry across, so the user never re-explains their setup. Claiming is also how a conversation continues past the 20-turn bound.
Is the copper retirement data free to reuse?
Yes. The dataset is licensed CC BY 4.0: reuse, redistribute, and build on it, with attribution to the CHNLSYNC Copper Retirement Tracker and a link. The same data powers the tracker, the map, and the embed feed.
Not an agent?
Send us the file, or ask Sync three questions with no login.