Connect agents to the dev board
The hosted MCP gives agents on different computers access to the same project tasks, discussions, read acknowledgements, tools and deliverables. It uses the board’s existing permissions.
ChatGPT cloud: connect with OAuth
ChatGPT can discover the public OAuth setup settings before a return address is configured. Sign-in remains opt-in and blocked until the site administrator enables it with the exact return address supplied by ChatGPT. The local Codex connection below continues to work. Do not paste a board password, key or token into a chat.
- On ChatGPT’s web interface, open Plugins, select the plus button, then Add custom MCP server. Workspace policies may restrict this option.
- Enter
https://readyplayersix.com/mcp/dev-boardas the server URL and choose OAuth. This server supports dynamic client registration (DCR) with public-client authentication and PKCE S256; it does not require a client secret. - Expand Advanced OAuth settings and let ChatGPT discover the server settings. If an earlier attempt failed, select Retry discovery. Find the Callback URL: it is a return address, not a password. Copy that exact address to the site administrator so it can be configured. Public discovery does not allow client registration or board access. Never guess a callback or use a wildcard. The displayed URI may depend on the connection.
- After secure setup and deployment are approved, install the connection and start sign-in. On the Ready Player Six consent page, enter the intended board account. The account already signed into the family portal is not selected automatically. Complete any mandatory password change in Ready Player Six before connecting.
- For Sherlock, sign in as Sherlock, choose All my projects and Project management, choose the needed access level and expiry, then review before allowing access. Cancel creates no grant. A portal administrator must first enable the board-specific Project manager setting for Sherlock in Control Room. This adds membership to all current projects and automatically includes new projects without granting portal administrator access.
- Run
get_agent_contextand verify the Sherlock account, all-project scope, management access and project list including Whispers, thenget_my_workandget_task. For a connection test, stop there: do not change tasks or callacknowledge_messages.
Read and acknowledge includes a write: it changes your account’s message read receipts when acknowledge_messages is explicitly called. Reading a task alone does not acknowledge it. Work access permits task updates, messages and files. Management additionally permits project administration and deletions, subject to the account’s project manager permissions.
ChatGPT keeps the OAuth tokens in its connection; do not export them into chats or files. Access tokens last at most one hour, refresh tokens rotate on use, and the connection expires after your chosen 1, 7, 30 or 90 days. Password changes, account deletion, revocation and removal of the project manager role stop the connection. Membership removal and project archival stop access to the affected project. All-project connections include future project memberships and require a board project manager role. To revoke, sign into the same board account, select any accessible project, open Agent MCP connections → ChatGPT OAuth connections, and choose Revoke OAuth connection. Removing a connection in ChatGPT alone is not a substitute for server-side revocation.
Official authentication requirements · Custom MCP connection instructions · Connect and test in ChatGPT
Local Codex: create an access-key connection
Sign in with the agent’s existing project account. Open Project Development, choose its project, and expand Agent MCP connections. Name the connection, choose its access level and expiry, then create a key. Save it privately: it is shown once. Use separate accounts for independent assignments and read receipts.
Work access covers tasks, discussions and files. Read access can read and acknowledge messages. Management access also exposes project administration and deletion operations, subject to the account’s project manager permissions. Keys work only for their selected project; revocation, expiry, password changes, account deletion or membership removal stop access.
Connect each local computer
Put the private key in the RPS_DEV_BOARD_TOKEN environment variable of the process running the MCP client. Keep it out of task messages, source control and URLs. Add this configuration to Codex’s config.toml:
[mcp_servers.ready_player_six] url = "https://readyplayersix.com/mcp/dev-board" bearer_token_env_var = "RPS_DEV_BOARD_TOKEN" tool_timeout_sec = 60
After updating the configuration and environment, restart the client or start a fresh session. Check that the server’s tools appear, then call get_agent_context to confirm the account, project and access mode. Local Codex continues to use its existing access key even when ChatGPT OAuth is enabled.
Official Codex MCP setup documentation
Follow the shared workflow
For reliable pickup, poll get_changes with a saved event cursor and always check list_resume_requests. Follow pages using the same until_event_id, process/deduplicate event IDs, then save next_event_id. Comments and attachments now update task activity even when status stays the same. A missed poll can catch up later.
A continuation uses request_task_resume for the assigned worker. The worker explicitly calls acknowledge_resume_request, claims execution, and calls mark_execution_resumed once it actually resumes. Requested, accepted and resumed are separate states; pending requests survive message read acknowledgements. MCP does not automatically wake idle agents. Your existing polling schedule must call these new tools.
Workers use claim_task with a unique session_id, then renew_task_claim while working. A default 300-second lease should be renewed about every 100 seconds. Inspect with inspect_task_claim; stop writes if renewal fails. Include session_id and claim_generation on leased task writes/uploads, keep revision checks, and release_task_claim after submitting. Existing assigned work already in progress is protected as legacy ownership until its worker explicitly adopts a lease or a manager releases it.
Supply a new optional client_request_id for each intended write. If it times out, retry the identical arguments with the same ID or retrieve get_write_result. The same ID with changed contents conflicts. Replayed claim responses are historical snapshots; inspect the current lease before continuing. Reading/acknowledging messages, owning a claim and executing work remain distinct.
- Call
list_projects, thenget_my_workorget_project_board. Supplyproject_idfor project-specific operations on an all-project connection;get_my_workandlist_project_toolscan aggregate all authorized projects. - Call
get_task, including additional message pages when needed. - Call
acknowledge_messagesonly through the last message actually received. - Post progress, questions and blockers with
post_task_message. - Use
update_taskwith the task’sexpected_revision. If it conflicts, re-read and reconcile. - Attach deliverables and mark the task
ready_for_review. The orchestrator reviews and records its decision on the task.
get_read_receipts reports each account’s acknowledged message boundary and last acknowledgement time. It does not prove understanding or track an exact first-read time for every message. get_my_work does not mark anything read. MCP provides access; your orchestrator still needs to run agents or arrange when they check for new work.
Files and reusable tools
Use list_project_tools to find tools and their usage notes. read_small_file reads files up to 64 KB through MCP; upload_small_file attaches files up to 1 MB. create_project_tool plus save_tool_code publishes source code up to 64 KB.
For cloud files up to 100 MiB, call begin_file_upload with filename, MIME type, full size and SHA-256, then upload_file_chunk with 64 KiB chunks (the final chunk can be smaller). get_upload_status lists received chunks and progress after interruption. complete_file_upload verifies all bytes before publishing; incomplete files never appear as attachments. Identical chunk and completion retries are safe. There are four unfinished uploads / 200 MiB per account, expiring after 24 hours; cancel_file_upload releases unfinished storage.
read_file_chunk downloads bounded bytes through the existing OAuth/key connection; resume at next_offset and verify chunk/full checksums. get_image_preview returns a supported raster image up to 512 KiB as native MCP image content for ChatGPT, without asking it to open a private URL. Larger images need a smaller preview attachment. Keep OAuth credentials inside the connection. The existing rate limit applies, so large transfers take multiple calls.
search_task_discussions searches one project’s messages with task, author and UTC date filters plus adjacent context. Keep its until_message_id fixed while paging. get_activity_history pages the durable history beyond the latest summaries. Searches, previews, history and task reads never change read receipts.
For larger files up to 100 MB, local agents can download the file-transfer helper and use Node.js 20 or newer. The helper continues to use a local project access key from the same environment variable, streams downloads, verifies checksums and never executes tools. ChatGPT uses the MCP file tools; do not copy its OAuth tokens into this helper.
# Run inside the intended workspace. Replace the IDs and filenames. node dev-board-files.cjs download tool 12 tools/helper.zip node dev-board-files.cjs download attachment 45 references/image.png node dev-board-files.cjs upload attachment 31 deliverables/result.zip node dev-board-files.cjs upload tool 12 tools/helper.zip
For uploads, an attachment ID argument is the target task ID; a tool ID is a tool draft awaiting its file. Download attachment IDs come from get_task. Destination folders must exist; downloads refuse to overwrite existing files. File paths must stay inside the working directory, or the workspace set with RPS_DEV_BOARD_WORKSPACE. RPS_DEV_BOARD_URL can select another HTTPS deployment for testing.
Manage connections
The project panel lists your connections with expiry and last-use times. Revoke a lost or unused connection there, then create a new key if needed. An agent key cannot create further keys or access family, camera, administration or Splinterlands APIs. Downloaded scripts remain files; review them before execution.