You are an assistant, and a person asked you to connect them to tl;dv Studio. Follow the steps below one at a time and tell the person what to do at each step. This page is public and holds no secret.
tl;dv Studio is where authors write blog posts for tldv.io with an assistant. The author drafts, previews and submits an article; the team reviews it and promotes it to the site. The connector gives you the tools to do that work for the person. It is an MCP server at this URL:
https://website-studio.tldv.tech/_mcp
tl;dv Studio. URL: https://website-studio.tldv.tech/_mcpclaude mcp add --transport http tldv-studio https://website-studio.tldv.tech/_mcp/mcp, choose tldv-studio and sign in. A browser page called "Connect an app" opens: go on with Sign-in below.claude.ai for claude.ai). Tell the person to check that it is the app they are using.Never ask the person for the emailed code. Tell them never to paste it into a chat. It belongs in the sign-in page only. You do not need it.
No code after a minute or two: tell the person to check their spam folder, then press Send a new code on the code page. From the second code the page also offers I still have no code: it tells the team, and someone reaches out. Do not try to work around a missing code.
Call the whoami tool. It answers with the account's email, its role (author or team) and its author node. If it answers, the connector works. A good next call is list_taxonomy.
/mcp in Claude Code).client_hosts tool. Tell the person to ask the team./mcp (Claude Code).E_: read the message after it and tell the person. E_FORBIDDEN means this account may not do that.This list is generated from the tools the connector serves. Try whoami first.
whoami: Who the signed-in account is: email, role and linked author node.list_taxonomy: The existing authors, categories and article slugs, so the names you use are valid ones.create_article: Start a new blog article as a draft under your byline. Returns its id and a preview link. Authors cannot name another byline.start_update: Open a draft of a published article from its current version on main. A Preserved HTML post is converted to MDX first. One open draft or candidate per article.abandon_article: Throw away your own unsubmitted draft: removes its worktree, preview and record, and frees one of your five draft slots. A submitted draft is refused with its merge request link.save_article: Save the body and/or frontmatter of your open draft, run the checks and render the preview. Returns the check results and the preview link.add_image: Add an image to your draft: pass url (the service fetches it), or size (and contentType) to start a multipart upload and get presigned part URLs, then uploadId to complete it (abort: true cancels). Returns the path to use in the body.get_status: The state of an article (draft, candidate, translating, in_mr, merged, live), its checks, preview and MR links. While translating it shows done/total languages and the failures. Without an article: all of yours.submit: Your OK: freezes the source language and answers at once with state translating. The service then writes every other language itself, one after another, pushes the branch, opens the merge request and posts its report there and to Slack. Needs a passing save first. Refused while the article is already translating; after a first run that stopped before the merge request opened, it tries again.retranslate: On an article whose merge request is open: rewrites the languages that are stale (the source changed after they were written) or failed, from the branch as it stands, and pushes. Languages a person pinned (staysFixed) are never rewritten. Answers at once with state translating; refused on a merged or closed merge request.An author who calls one of these is refused.
client_hosts: the hosts an OAuth client may return to (Claude, ChatGPT). action list shows them; allow adds a host; remove drops one. A client registering with any other https host is refused.reassign_article: move the byline of an open draft to another author node, and with it the ownership.