Skip to Content
McpExample Flows

Example Flows

Four end-to-end user stories showing Direktor nodes driven from Claude Desktop. Each example includes the Claude Desktop prompt, the tool calls that fire under the hood, and what the agent produces.


1. “Upload this document to X for me”

You’ve finished a blog post, exported the LinkedIn-friendly summary as a PDF, and want to post it to X with a thread.

You (in Claude Desktop):

“@direktor-cmo take this PDF and post a thread on X summarizing the top three takeaways, with a link back to the full blog. The blog URL is https://openfactory.tech/blog/2026-04-20/attestation . Attach PDF: openfactory-attestation-blog.pdf.”

Under the hood:

  1. Claude Desktop calls list_skills() on the CMO node.
  2. Sees that ad-campaigns and market-company exist but nothing specifically for post a thread on X. The CMO will best-effort this with a skill_learned event at the end.
  3. Claude Desktop calls:
    do( message="Post a thread on X summarizing the top three takeaways from the attached PDF. Include the blog link https://openfactory.tech/blog/2026-04-20/attestation. Match our existing X voice (check recent posts for tone).", attachments=[{"name": "openfactory-attestation-blog.pdf", "content_base64": "<bytes>"}] )
  4. The CMO agent stages the PDF, opens Firefox inside its desktop VM, navigates to X, reads the PDF to extract takeaways, drafts the thread, matches tone against recent posts, publishes, captures the post URL.
  5. Agent streams progress: “reading PDF → drafting 3-post thread → signing into X → posting → captured URL”.
  6. Final return: {"status": "ok", "posts": [{"url": "https://x.com/...", "text": "..."}, ...]}.
  7. A skill_learned event fires — the system persists a new post-thread-to-x skill for future invocations.

You see in Claude Desktop:

  • The thread URLs (three posts in the thread).
  • A confirmation that the CMO node’s activity timeline has the full trace.
  • The next time you ask, the CMO uses the newly-learned skill and is faster.

2. “Download all my statements from Wells Fargo”

You need to pull quarterly statements for tax prep. No shipping skill for this exists.

You (in Claude Desktop):

“@direktor-personal-assistant download my last 4 quarters of statements from my Wells Fargo account. Save them to a Google Drive folder called ‘Tax 2026 Q1’. Credentials are in the workspace secrets as wf_user and wf_password.”

Under the hood:

  1. list_skills() — no matching skill.
  2. do("...") — the Personal Assistant best-efforts it:
    • Reads the workspace secrets (scoped to this node).
    • Opens Firefox → Wells Fargo → signs in.
    • Navigates to Statements & Documents → Quarterly Statements.
    • Downloads 4 PDFs.
    • Opens Google Drive → creates Tax 2026 Q1 folder.
    • Uploads the 4 PDFs.
    • 2FA: if Wells Fargo prompts for a code, the agent pauses and asks you (via request_approval).
  3. Final return: a list of the 4 drive URLs.
  4. skill_learned fires — next time you say this, the agent has a workbook.

You see in Claude Desktop:

  • A pause if 2FA was required, with a prompt to enter the code.
  • Four Google Drive URLs.
  • A note that a new download-wf-statements skill was persisted — visible at /skills in your workspace.

3. “What did my CMO do today?”

Check-in: you woke up, had coffee, want a status report before the day starts.

You (in Claude Desktop):

“@direktor-cmo what did you do yesterday and what’s on deck for today?”

Under the hood:

  1. Claude Desktop calls get_activity(limit=50) to pull yesterday’s events.
  2. Claude Desktop calls do("summarize what you did yesterday in 5 bullets and tell me what's on deck for today").
  3. The CMO agent uses the timeline events it was handed + its own daily-plan sheet to produce a crisp summary.

You see in Claude Desktop:

Yesterday:

  • Launched Q2 LinkedIn campaign (Q2-SMB-retail) — $3k budget, live.
  • Drafted 3 blog posts for the engineering blog — awaiting CTO review.
  • Shipped 12 cold outbound emails to SMB retail VP Ops personas — 2 replies so far.
  • Flagged CTR decay on last week’s Google campaign → paused.
  • Pulled weekly metrics, filed synthesis report.

Today:

  • Follow up on the 2 outbound replies (book calls if interested).
  • Pull Day-1 metrics on the new LinkedIn campaign; adjust if off-pace.
  • Propose Q3 content calendar to CEO for approval by 4pm.
  • Handoff Q2 positioning deck to Sales.

4. “Ask my CTO to review this plan”

You’re in the middle of drafting something with your CMO and you need a sanity check from another node.

You (in Claude Desktop):

“@direktor-cmo here’s a draft launch plan (attached). Ask the CTO to review it for technical feasibility and get back to me with their comments.”

Under the hood:

  1. Claude Desktop calls list_peers() on the CMO to confirm the CTO exists and get its role_id (executive-office-cto).
  2. Claude Desktop calls:
    do( message="Send the attached launch plan to the CTO for technical feasibility review. Ask for specific comments on: (1) integration timeline, (2) infrastructure cost, (3) any blockers that would push launch past June 15. Report back with their feedback within 4 hours.", attachments=[{"name": "launch-plan-draft.md", "content_base64": "..."}] )
  3. The CMO agent:
    • Reads the plan.
    • Calls send_message_to_peer('cto', <plan + questions>).
    • The CTO agent picks up the message on its next turn, reviews, replies.
    • The CMO agent waits for the response (checking inbox on its schedule).
    • Summarizes the CTO’s feedback back to you.

You see in Claude Desktop:

  • A progress stream: “sent to CTO → CTO acknowledged → CTO reviewing → CTO replied with feedback”.
  • Final return: CTO’s feedback distilled into the three requested areas.
  • Both nodes’ activity timelines now show the exchange (audit trail intact).

Pattern summary

Prompt typeTypical tool sequence
Simple actiondo(message)
Action with skill lookuplist_skills()do(message)
Status checkget_activity(limit=N)
Cross-node delegationlist_peers()do(...) with peer role name in the message
File uploaddo(message, attachments=[...])

Claude Desktop’s assistant figures this out automatically. You don’t need to name the tools — just describe the task.

Last updated on