Schedule, preview, pause, and cancel Duey Sessions — the cloud writer that types your draft into Google Docs with a realistic edit history — plus the Duey Humanizer and AI detector. Install in two clicks — OAuth handles auth, no API keys to manage.
https://app.duey.ai/api/mcpOne-click install. Cursor will open and prompt you to confirm.
{
"mcpServers": {
"duey": {
"url": "https://app.duey.ai/api/mcp"
}
}
}In Claude Desktop: Settings → Connectors → Add custom connector → paste the server URL above. Or drop this JSON into ~/.claude.json (Code) / the desktop client config.
{
"mcpServers": {
"duey": {
"type": "http",
"url": "https://app.duey.ai/api/mcp"
}
}
}Setup must be done in the web version of ChatGPT (chatgpt.com). Open Settings → Apps → Advanced settings, enable Developer mode, then Create app: give it a title, paste the server URL above, tick “I understand and want to continue”, and click Create. Once created, the connector is available across ChatGPT on web, desktop, and mobile. OpenAI Responses API can also connect to the same URL directly.
{
"type": "mcp",
"server_label": "duey",
"server_url": "https://app.duey.ai/api/mcp",
"require_approval": "never"
}Twelve tools, scoped to your account. The LLM never sees your Google password — Duey holds the Drive credentials.
create_sessionSchedule a Duey Session over hours, days, or weeks.preview_sessionCheck when a session would finish before creating it.list_sessionsShow all your scheduled, running, and completed sessions.get_session_statusCheck progress on a specific session.cancel_sessionCancel a scheduled or running session.pause_sessionPause a scheduled or running session.resume_sessionResume a paused session; the deadline shifts by the pause length.list_recent_docsList your recently-touched Google Docs to attach to a session.get_session_transcriptRead the source text that a session is typing into Google Docs.humanize_textRewrite AI-generated text to read as human-written (100–5000 words).detect_ai_textScore whether text reads as AI-written. Primary detector with backup fallback.get_account_statusRead your subscription tier, free trial state, and Drive connection status.How an assistant should use these tools. Agents can read the same guide as plain Markdown at app.duey.ai/mcp.md.
get_account_status when you don't know the user's plan or whether Google Drive is connected. If Drive isn't connected, send the user to https://app.duey.ai/sessions to connect it — tools that write to Google Docs fail until they do.deadline_at. If the user says when writing may happen, pass work_hours with their IANA timezone (paid plans only).preview_session with the same arguments before create_session when the deadline is tight or the user asks whether it will finish in time. If it reports feasible: false, suggest a later deadline.format: "markdown" to create_session whenever the text has headings, lists, bold or italics, so they become real Google Docs formatting instead of symbols.list_recent_docs and pass its document_id as existing_document_id. Otherwise a new doc is created.list_sessions, get_session_status, pause_session, resume_session and cancel_session. Resuming shifts the rest of the schedule and the deadline by the pause length.humanize_text takes 100–5000 words; free accounts get one run per day. Use detect_ai_text before and after to check the result.{ ok: false, error, message } with a stable error code (below). Relay the message, and any upgrade_url or connect_url, to the user rather than retrying.schedule_writing — Guided flow: check the account, preview the deadline, create the session.humanize_and_check — Score text, humanize it if needed, and re-check.drive_not_connected | Google Drive isn't connected. Send the user to connect_url. |
missing_deadline | Normal mode needs deadline_at. |
invalid_deadline | deadline_at isn't valid ISO 8601. |
invalid_work_hours | End hour not after start hour, or unknown timezone. |
plan_error | The schedule can't be built, e.g. the deadline is too close. Suggest a later one. |
free_trial_exhausted | The free Session trial is used up. Share upgrade_url. |
free_tier_limit | Free trial limit hit (length or mode). Share upgrade_url. |
asap_paid_required | ASAP mode needs a paid plan. Use a deadline instead. |
asap_in_flight | An ASAP session is already running. |
not_found | No session with that id for this user. |
not_pausable | Only scheduled or running sessions can be paused. |
not_paused | Only paused sessions can be resumed. |
docs_error | Google Docs rejected the write. retryable says whether to try again. |
payment_required | Free Humanizer tries used up for today. Share subscribe_url. |
invalid_word_count | humanize_text needs 100–5000 words. |
moderation_blocked | The text was refused by content moderation. |
rate_limited | Too many calls. Wait retry_after_seconds (or the Retry-After header). |
detector_unavailable | Both AI detectors failed. Try again later. |
drive_error | Google Drive couldn't list the user's docs. Try again later. |
no_source_text | That session has no stored source text. |
decrypt_failed | Stored source text couldn't be read (server-side issue). |
parse_failed | humanize_text couldn't split the text into paragraphs. Clean up the formatting. |
humanizer_failed | The Humanizer errored mid-run. Try again. |
empty_result | The Humanizer returned nothing. Try again. |
internal_error | Unexpected failure. Apologize and try again later. |
Duey speaks the standard OAuth 2.1 + PKCE handshake (RFC 6749 / 7636) plus Dynamic Client Registration (RFC 7591), so any MCP-compliant client can connect without us pre-issuing credentials. The first time your LLM client connects you'll see a Duey consent screen — approve once, and the client gets a refresh token tied to your account.
Already approved a client? Manage or revoke connections in Settings →
Need help? Email [email protected].