REAL PRODUCT STATEDoneOS
live proofTurn a sentence into tracked execution.
Ask an agent to create a goal, add work, start it, or explain a blocker. DoneOS writes the change, reads the board back, and shows the same state in the app.
OpenAPI → reviewed tools → visible state
MCP is not a side project here. It is a capability inside DoneOS and Inner Quest—generated from each product’s real API, constrained by product judgment, and verified with read-back.
“Add this goal, then show me that it exists.”
The evidence ladder
Discovery proves a server answered. The useful proof is the chain from a model-visible tool to persisted product state.
A 401 with correct OAuth metadata proves discovery—not authentication, tool execution, persistence, or visible product state.
Live DoneOS sandbox
This invokes the deployed generated MCP route against a short-lived, private fictional board, then opens the real DoneOS web client in a mobile frame against that exact sandbox. No credential or code path reaches DoneOS production data.
created when you runReset step: press Run again fresh. A new token starts from a clean fictional board and loads a matching DoneOS view.
MCP inside the products
The adapter is infrastructure. The point is what a person can now ask the product to understand or do.
The reusable pattern
OpenAPI removes repetitive adapter work. Product judgment still decides access, language, confirmation, and recovery.
Expose a reviewed product surface, not every route by default.
Tell the model what changes, who sees it, and what success means.
Keep scopes, schemas, confirmation, and validation in the contract.
Read important writes back through the same authenticated boundary.
Where the human stays
Connect a client
Connect directly to the Human Quest MCP endpoint. Each throwaway token creates an isolated fictional board for the live proof.
{
"mcpServers": {
"doneos-demo": {
"type": "http",
"url": "https://mcp.humanquest.net/api/mcp/doneos",
"headers": {
"Authorization": "Bearer pick-a-demo-string"
}
}
}
}list_goalsGET /v1/goalsreadcreate_goalPOST /v1/goalswriteget_goalGET /v1/goals/{goalId}readupdate_goalPATCH /v1/goals/{goalId}writelist_work_itemsGET /v1/work-itemsreadcreate_work_itemPOST /v1/work-itemswriteget_work_itemGET /v1/work-items/{workItemId}readupdate_work_itemPATCH /v1/work-items/{workItemId}writestart_work_itemPOST /v1/work-items/{workItemId}/executewriteclaim_work_itemPOST /v1/work-items/{workItemId}/executewritemove_work_item_to_nextPOST /v1/work-items/{workItemId}/executewritemark_work_item_waitingPOST /v1/work-items/{workItemId}/executewriteblock_work_itemPOST /v1/work-items/{workItemId}/executewritesend_work_item_to_reviewPOST /v1/work-items/{workItemId}/executewritecomplete_work_itemPOST /v1/work-items/{workItemId}/executewritereopen_work_itemPOST /v1/work-items/{workItemId}/executewritemove_work_item_to_backlogPOST /v1/work-items/{workItemId}/executewriteheartbeat_work_itemPOST /v1/work-items/{workItemId}/heartbeatwritelist_execution_eventsGET /v1/eventsreadrecord_execution_eventPOST /v1/eventswritelist_recent_doneGET /v1/recent-donereadsummarize_status_for_slackGET /v1/status/dailyreadpublish_status_to_slackPOST /v1/integrations/slack/publishwrite