Agents work in the thread, not around it.
The ProductOS MCP connector gives Claude, Claude Code, Codex, Cursor and any MCP client 52 tools over your workspace. They read a feature with the customers behind it, then write back: status, links, sessions and pull requests, with your role and an undo for every write.
Server URL
Sign in with OAuth when your client asks. There is no token to paste.
Connect a client
Claude
Settings, Connectors, Add custom connector, paste the URL.
Claude Code
claude mcp add --transport http --scope user productos https://productos.ca/api/mcp/mcpCodex
codex mcp add productos --url https://productos.ca/api/mcp/mcp && codex mcp login productosCursor
Settings, Tools & MCP, New MCP Server: add the URL, then sign in when Cursor asks.
Any MCP client
Streamable HTTP with OAuth sign-in. No token to copy.
The work reports back
Most tools hand an agent a spec and lose track of it. In ProductOS the session, its progress, its questions for you and the pull request are recorded on the Work item, so the plan and the code stay in step.
> Pick up the next Work item in the Multi-language initiative and build it.
- get_feature(WRK-000009)
→ French and German reply generation · 3 feedback · Embertech, Foxglove · spec and acceptance criteria
- start_session(WRK-000009, branch feat/fr-de-replies)
→ Session running · visible on the Work item
Reusing the Spanish eval harness. Adding FR and DE glossaries and 40 graded tickets each.
- update_session(pr_url …/pull/1307)
→ PR attached to WRK-000009
French and German reply generation
3 feedback · Embertech, Foxglove
Sessions and code
- Codex sessionRunning
- #1307 feat(replies): French and German+388 −41
Progress, questions and the PR land here as the agent works.
Example workspace: Helio, a fictional customer support platform.
52 tools
Read the thread
Find anything, walk its links, and load a feature with its evidence, spec and code.
- whoamiWho am I
- get_featureGet feature context
- get_golden_threadGet the Golden Thread
- search_featuresSearch features
- search_entitiesFind entities
- find_similarCheck for duplicates
- search_workspaceSearch the whole workspace
- list_entitiesList entities
- count_entitiesCount entities
- get_entityGet an entity
- get_entitiesGet several entities
- describe_entityDescribe an entity type
- get_workspace_knowledgeGet workspace knowledge
- get_workspaceGet workspace settings
- get_commentsRead comments
- list_notificationsList my notifications
- list_saved_viewsList my saved views
- search_documentsSearch linked documents
- get_ai_usageGet AI usage and cost
- export_workspaceExport the workspace to Excel
Write back
Create, update and link anything, with a dry run first and an inverse to undo it. Deletes live behind their own tool.
- list_actionsList write actions
- execute_actionCreate, update or link
- execute_destructive_actionDelete, unlink or merge
- update_feature_statusChange a feature's status
- attach_artifactAttach a link to a feature
- complete_with_workspace_modelGenerate with the workspace model
- sync_repo_connectionRe-sync a GitHub connection
Screenshots and files
Attach a screenshot or file to a Work item, put it in the spec, and look at the images a PM pasted in.
- upload_attachmentUpload a file
- create_attachment_uploadStart a large file upload
- finish_attachment_uploadFinish a file upload
- list_attachmentsList an entity's files
- get_attachmentRead a file
Meeting transcripts
Bring a Teams, Zoom or Meet transcript in, matched to the team and the customers in the room, read it back as speaker turns, review the feedback processing found in it, and see which asks keep coming up across calls.
- import_meeting_transcriptImport a meeting transcript
- get_meeting_transcriptRead a meeting transcript
- process_meetingProcess a meeting with AI
- propose_from_meetingPropose changes from a meeting
- list_meeting_proposalsList a meeting's proposals
- apply_meeting_proposalsAccept or reject meeting proposals
- list_meeting_trendsList asks heard across meetings
Run coding sessions
Open a session on a Work item, report progress, ask the PM a question, ask for another repository and open its pull request, and attach the pull request.
- start_sessionStart a coding session
- update_sessionUpdate a session
- report_progressReport session progress
- log_session_eventLog a session event
- ask_user_questionAsk the PM a question
- request_repoAsk for another repository
- open_pull_requestOpen a pull request
- get_session_messagesRead session messages
- get_sessionGet a session
- list_sessionsList sessions
- get_session_diffGet a session's changed files
- record_session_outcomeRecord a session's outcome
- mark_session_completeClose a session
Things to ask
- Rank the backlog by ARR asking and tell me what we should cut.
- Which key results have no Work moving them?
- Summarise everything Embertech has asked for and what shipped.
- Pick up WRK-000009, build it, and attach the PR when you open it.
Safe by default
- Agents act as the person who connected them, with that person’s role. A viewer’s agent cannot write.
- Every write can be previewed with a dry run and returns an inverse, so it can be undone.
- Deletes, unlinks and merges go through a separate tool that clients mark as destructive.
- Tokens and secrets are redacted from tool output.