The Claude connector (MCP)
Business Studio ships a remote Model Context Protocol server. Add it to Claude as a custom connector and Claude works your board directly: files cards, reads what’s on them, edits them, drafts social and blog posts against your connected channels — and publishes them when you ask.
Everything is scoped to your account. Claude signs in as you, so it sees your cards and nobody else’s; another user’s card id reads back as “Card not found”, which is also what a genuinely missing id returns.
Connect it
Section titled “Connect it”- Copy your connector URL from the dashboard: Connectors → Claude. It is
your API origin plus
/api/mcp— on the hosted platform,https://platform-api.viite.ai/api/mcp. - In Claude: Settings → Connectors → Add custom connector, paste the URL.
- Claude sends you through a Business Studio login and consent screen. Approve it, and the card in the dashboard flips to Connected.
There is nothing to configure on our side — no client id, no secret to paste.
Authorization is OAuth 2.0 with Dynamic Client Registration: Claude discovers the
auth server from the /.well-known/oauth-* routes and registers itself. The
access token it receives is bound to your user, and every tool call is scoped to
it.
What Claude can do
Section titled “What Claude can do”| Tool | What it does |
|---|---|
list_tasks | Read your cards, newest-updated first. Filter by status or by kind (task, user-story, post, link, email, deal, custom). Each row reports its kind and, for posts and links, its inner status — e.g. draft. |
create_task | File a card in To-do. Optional description, priority, tags, image, and kind. |
update_task | Edit a card — title, description, priority, tags, due date — and/or move it. This is also how Claude publishes (see below). |
list_destinations | The channels you’ve connected (X, LinkedIn, Facebook, the blog) with each one’s format rules: title required?, maximum body length, excerpt and image support. |
create_post | Draft a post — one card per destination, so one body can be cross-posted. Refuses to write anything if the body breaks a destination’s rules (over 280 characters for X, say). |
upload_asset | Upload image bytes and get a public URL back, for an image that isn’t already online. PNG, JPEG, WebP, GIF, AVIF; the format is read from the bytes, not from what the caller claims. |
Moving a card
Section titled “Moving a card”update_task’s status argument speaks each card’s own vocabulary — the
same one its status selector offers in the dashboard:
- a
task,user-story,dealorcustomcard moves on the board spine:todo→in_progress→done→archived; - a
postmoves ondraft→reviewed→archived; - a
linkmoves oncaptured→enriched→failed→archived, and separately accepts a board-spine value to change which column it sits in.
A value the card can’t take comes back listing the ones it can, so Claude
corrects itself rather than guessing twice. Statuses owned by a worker — a post’s
posting — are never settable: taking that lock without doing the work would
leave a post that never publishes.
Publishing
Section titled “Publishing”Claude can publish. Moving a post to reviewed arms the publish worker, so:
- “draft a LinkedIn post about the release” → a draft card, nothing published;
- “looks good, publish it” →
update_tasksetsreviewed, and it goes out; - “…schedule it for Monday 9am” → the same call with a
dueDate, and it goes out then instead.
Nothing publishes that you didn’t ask for: create_post only ever drafts, and
reviewed is a separate, explicit move. You can equally review the draft on the
board yourself and hit Publish now — the connector doesn’t change that path,
it adds one.
Publishing to a social channel needs that channel connected first
(Connectors); list_destinations
reports exactly what’s available, which is why Claude should call it before
drafting.
Limits worth knowing
Section titled “Limits worth knowing”- No delete. The connector cannot destroy a card.
archivedis the reversible equivalent, and it’s reachable throughupdate_task. create_postfor posts,create_taskfor everything else. A post needs a destination and its own lane status;create_taskdeliberately refuses to stampentity: 'post'on a card the publish worker could never route.- Tags replace, they don’t merge. Passing
tagsoverwrites the card’s set. - One org. Tools act in your active organization.
