Carta Fund Admin(資金管理チーム)に仕事を依頼して、その進捗を追跡します。チームが読んで対応し、返信してくれるリクエスト画面が開きます。他のCartaスキルやコマンドでは対応できない依頼を送るための窓口です。 **使用するトリガーフレーズ:** 「Cartaに〜をさせて」「ファンド管理チームに送って」「ファンド管理チームに聞いて」「Cartaでこれできる?」「リクエストの状況を確認」「Cartaから返信きた?」「今開いてるリクエストを表示」「Cartaに返信」「リクエストをフォローアップ」、または他のスキルで対応できない作成・変更・送信・再整理・照合・分割・修正などのあらゆる操作依頼 **使用しない場合:** - このプラグイン自体の不具合やバージョンアップ希望を報告する場合(`fa:create:feedback`コマンドを直接実行してください) - Cartaのデータから答えが出る質問をする場合(carta-explore-data を使用) - 出資者(LP)への資金拠出通知リマインダーを送る場合(これはCartaコマンドで、ファンド管理チームへのリクエストではありません)
Send work to your Carta Fund Admin team and track it. Opens a request the team reads, acts on, and replies to — the off-ramp for anything no other Carta skill or command can do. TRIGGER: "ask Carta to", "have Carta do", "send this to my fund admin", "ask my fund admin team", "can Carta do this for me", "check on my request", "did Carta reply", "what requests do I have open", "reply to Carta", "follow up on my request", plus ANY action request (create/change/send/restate/reconcile/split/fix) that no other skill or Carta command covers. NOT FOR: reporting a bug or feature request about this plugin (call fa:create:feedback directly); questions answerable from Carta data (use carta-explore-data); capital call reminders to LPs (that is a Carta command, not a Fund Admin request).
リクエストを送ると、Cartaのファンド管理チームが非同期(つまり、別のタイミングで)対応する案件が開きます。ユーザーが何かを実行してもらいたいけれど、他のスキルやCartaコマンドでは対応できない場合に使う方法です。行き止まりではなく、単なるデータベース問い合わせの代わりにもなりません。
コマンド名は正確に指定します。<SERVER>は、このセッションで接続しているCartaMCPサーバーです。
| 目的 | 実行内容 |
|---|---|
| 新しいリクエストを送信 | call_tool({"name": "fa__create__fund-admin-message", "arguments": {"message": "<message>"}}) |
| リクエストとCartaの返信を表示 | call_tool({"name": "fa__list__workflow-message", "arguments": {"workflow_id": <workflow_id>}}) |
| 既存のリクエストに返信 | call_tool({"name": "fa__create__workflow-message", "arguments": {"workflow_id": <workflow_id>, "message": "<message>"}}) |
| 企業のリクエスト一覧を表示(スタッフのみ) | call_tool({"name": "fa__list__workflow", "arguments": {"firm_uuid": "<firm_uuid>", "template_type": "request-generic", "page_size": 50}}) |
fa__create__fund-admin-messageはfirm_uuidを必要としません。リクエストは常にセッション中のアクティブな企業に関するものです。戻り値は{"workflow_id": <id>}で、これが案件番号になります。
welcomeを呼び出してからget_current_userを呼び出します。
ファンド管理へのアクセス権がない(fund_admin_accessが偽)場合→以下を表示して停止します:
Cartaのファンド管理チームへ業務を依頼するには、Carta Fund Administration(ファンド管理機能)の契約が必要です。お客様のアカウントに該当する契約が見つかりません。ご社がCarta Fund Administrationを利用している場合は、設定 → コネクタでCartaを再接続してください。そうでない場合は、Cartaのアカウント担当者にお問い合わせください。
コマンドが見つからない、または利用できないというエラーが出た場合→以下を表示して停止します:
このアカウントではまだCartaファンド管理チームへのメッセージ機能が有効になっていません。
再試行してはいけません。メールやほかの連絡方法を提案してもいけません。別のルートでチケットを作成してもいけません。
何かをドラフトする前に必ず実行します。何かが間違っていると述べることは、それを直すように指示することと同じではありません。どちらの方向でも推測は間違っています。ユーザーが送ってほしくなかったメッセージを送ることにも、データの答えを返すべき場面で業務委託だと思い込むことにもなります。
このチェックをスキップしてください。意図が明確な場合です。つまり、メッセージが業務委託の名前を挙げているとき(「Cartaに聞いてほしい」「ファンド管理チームに」「これを送ってほしい」「Cartaにこれできる?」)、あるいは直接の指示文で動詞と対象がある場合(「8月の引当金を再計算してほしい」「Q3コール分割してほしい」「LPA再度作成してほしい」)。
このチェックを実行してください。メッセージが問題を報告しているか必要性を述べているだけで、誰が行動するかを示す動詞がない場合です。信号:「間違って見える」「正しくない」「ずれている」「合わない」「Xが必要」「Xについて対応してほしい」「Xで何か起きている」。
AskUserQuestionを呼び出します。選択肢をマークダウンテキストとして書いてはいけません。マークダウンは実行をブロックしないため、自分で質問に答えてしまいます:
質問: 「これについて詳しく調べてほしいですか、それともCartaチームに直してもらうようお願いしてほしいですか?」
選択肢:
| ユーザーの選択 | 次のアクション |
|---|---|
| 詳しく調べる | 対応するドメインスキルに引き継ぎます。何も送りません |
| Cartaに直してもらう | フロー1に進みます |
| 両方 | まずデータから答えて、その後フロー1に戻り、送信前に確認を取ります |
確認なしにメッセージを送ってはいけません。 これはCartaがユーザーの代わりに送るもので、毎回ユーザーは正確なテキストを見てからになります。
ドラフトを作成する ユーザーが言ったことからメッセージを自分で作成します。ファンド(または実体)の名前、期間、金額、望む結果を含めます。詳細があれば、チームが戻ってきて質問することなく対応できます。
確認を取る AskUserQuestionツールを呼び出し、作成したメッセージを全文引用します。選択肢をマークダウンリストにしてはいけません。書かれたリストはゲートではなく、送信は実際のユーザーのターンに依存する必要があります:
承認後に送信して、報告します:
Cartaチームに送りました。案件番号は**<workflow_id>**です。彼らが対応して、ここで返信します。何か尋ねるたびに、返信がないか確認します。
想定ターンアラウンド時間を述べてはいけません。「24時間以内」などと言ってはいけません。キューの状態が分かりません。
1回の呼び出しで1つの案件が開きます。関連のない2つの依頼は1つのマージメッセージではなく、2つの呼び出しにします。
スタッフはスタッフ用のfa__list__workflowで一覧を表示します。スタッフ以外はまだリスト表示コマンドがないため、代わりに案件番号を尋ねます:
案件番号があれば、特定のリクエストを引き出せます。すべてのオープンリクエスト一覧の表示は、お客様のアカウントではまだ利用できません。
リストされた行を3つのグループに分けます。statusを最初に読みます。これは整数で、2と3が終了状態なので、誰に保留されているかより優先します:
| グループ | データの出所 | 意味 |
|---|---|---|
| 完了済み | statusが2(完了)または3(キャンセル) |
閉じた |
| 完了すべきタスク | last_task.templateがpending-customer |
Cartaが返信;ユーザー対応待ち |
| 進行中 | last_task.templateがpending-cartaまたはnew |
Cartaが対応中 |
認識できないlast_task.templateは進行中の下に置きます。隠さず表示します。経過時間はlast_activity_atから、フォールバックはcreated_atです。
ステータスは送信済み(new)/ 対応中(pending-carta)/ あなたの対応待ち(pending-customer)/ 完了(status 2)/ キャンセル(status 3)と表示します。これらはCarta Workhubアーティファクトが使う同じ言葉です。各状態はペイロードが証明できるイベントです。意図的に「受信」はありません。何も読み取りを示すものがないからです。
このペイロードには**stateフィールドと_linksブロックがありません**。どちらも読まず、URLを自分で作ってもいけません。行はworkflow_cta_urlがあるときだけリンク先があります。workflow_detail_urlは顧客が開けない/staff/ルートなので、リンクとしては使われません。
各グループを独立した表として描画します。ユーザーが番号で開けるように#を最初に:
| # | リクエスト | ステータス | 経過時間 |
|---|---|---|---|
| 1 | Q3コール分割 | あなたの対応待ち | 2日 |
request-genericはDMワークフローなので、件名がありません。request_typeがリクエストラベルを指す実在の仕事である場合はそこから取得します。空白またはジェネリック(other、general、request-generic)の場合は、thread_metadata.message_snippetにフォールバックして、より良いラベルが必要な場合はスレッドの最初のメッセージを読みます。1行に削ります。ラベル自体をリンクします。別の「開く」や「表示」列を作ってはいけません。完了すべきタスクを最初に、その後進行中;完了済みは求められない限り件数に圧縮します。
以下で閉じます:
番号を入力してその案件を開く、または:[N] 新規リクエスト [R] 更新
fa__list__workflow-messageは1回の呼び出しでスレッド全体を両方向で返します。author.is_staffがCartaが書いたものを示します。
会話として描画します。最も古いものから。「あなた」と「Carta」。content_textを使用します。空白な場合はcontent_htmlにフォールバックして、タグを削除します。
Cartaの内部エージェント出力を絶対に表示してはいけません。 実行ログなし。エージェントやシステム名なし。内部メタデータなし。スタッフ向けメモなし。スタッフメッセージは、顧客向けテキストとCartaで確認するリンク、そしてそれ以外は何も表示しません。メッセージが完全に内部的な場合は、言い換えるのではなく省略します。
どちらにボールがあるか(Cartaかユーザーか)を明言してから、以下をします:
1 - Cartaに返信 ← おすすめ
2 - Cartaで開く
3 - キュー一覧に戻る
フロー1と同じ確認です。AskUserQuestionツールを含めます。ドラフト、正確なテキストを表示、明示的なはい、そしたら同じworkflow_idでfa__create__workflow-message。返信がもともと何を聞かれていたかに答えるよう、まずスレッドを読みます。確認します:
案件**<workflow_id>**に返信を送りました。
その後キュー一覧に戻るを提案します。
| 状況 | 対応 |
|---|---|
| メッセージが問題をおよび述べるだけで、行動する人を名前で挙げない | チェック1 - ドラフト前に尋ねます。業務委託と推測してはいけません |
確認選択肢をマークダウンで書いた(AskUserQuestionツールを呼ばなかった) |
停止してツールを呼び出します。書かれたリストは送信をブロックしません |
| ファンド管理契約がない | チェック0メッセージ;停止 |
| アカウントに対してメッセージが有効でない | チェック0メッセージ;停止 - 再試行なし、別チャネルなし |
| セッションにアクティブな企業がない | list_contextsを呼び出してからset_context;1回だけ再試行 |
fa__create__fund-admin-messageがworkflow_idを返さない |
リクエストが作成されていない可能性があり、再送信前にCartaチームに確認するよう伝えます。自動再送信してはいけません。2番目の案件が開きます |
| ユーザーがリクエスト一覧を求めているがスタッフではない | フロー2非スタッフメッセージ;案 |
<!-- carta:plugin-version --> <carta-plugin>carta-investors:6.38.0</carta-plugin>
<!-- Part of the official Carta AI Agent Plugin -->
A request opens a case your Carta Fund Admin team works async. It is the answer whenever the user wants something done and no other skill or Carta command can do it — not a dead end, and never a warehouse query instead.
Names are verbatim. <SERVER> is whichever Carta MCP server this session has.
| Intent | Call |
|---|---|
| Send a new request | call_tool({"name": "fa__create__fund-admin-message", "arguments": {"message": "<message>"}}) |
| Read a request + Carta's replies | call_tool({"name": "fa__list__workflow-message", "arguments": {"workflow_id": <workflow_id>}}) |
| Reply on an existing request | call_tool({"name": "fa__create__workflow-message", "arguments": {"workflow_id": <workflow_id>, "message": "<message>"}}) |
| List a firm's requests (staff only) | call_tool({"name": "fa__list__workflow", "arguments": {"firm_uuid": "<firm_uuid>", "template_type": "request-generic", "page_size": 50}}) |
fa__create__fund-admin-message takes no firm_uuid — the request is always
about the session's active firm. It returns {"workflow_id": <id>}, the case number.
Call welcome, then get_current_user.
No Fund Admin access (fund_admin_access false) → surface verbatim and stop:
Sending work to a Carta Fund Admin team needs a Carta Fund Administration subscription. I can't find one on your account. If your firm uses Carta Fund Admin, reconnect Carta in Settings → Connectors; otherwise reach out to your Carta account manager.
Command missing or erroring as unavailable → surface verbatim and stop:
Messaging your Carta Fund Admin team isn't enabled for this account yet.
Do not retry. Do not suggest email or another channel. Do not open a ticket by some other route.
Run this before drafting anything. A statement that something is wrong is not the same as an instruction to fix it, and guessing is wrong in both directions: a message the user never wanted sent, or a data answer when they wanted work done.
Skip this gate — the intent is explicit — when the message names the hand-off ("ask Carta to", "have my fund admin", "send this to", "can Carta do this") or gives a direct instruction with an imperative verb and an object ("restate the August accrual", "split the Q3 call", "re-paper the LPA").
Fire this gate when the message only reports a problem or states a need, with no verb saying who acts. Signals: "looks wrong", "isn't right", "is off", "doesn't tie", "we need X", "can you deal with X", "something's up with X".
Call AskUserQuestion — do not write the options as markdown text, because
markdown does not block execution and you will answer your own question:
Question: "Do you want me to look into this, or ask your Carta team to fix it?"
Options:
| User picks | Action |
|---|---|
| Look into it | Hand off to the matching domain skill. Send nothing. |
| Ask Carta to fix it | Proceed to Flow 1. |
| Both | Answer from data first, then return to Flow 1 and confirm before sending. |
Never send an unconfirmed message. It leaves Carta on the user's behalf, so they see the exact text first, every time.
Draft it. Write the message yourself from what the user said. Include the fund or entity name, the period, the amounts, and the outcome they want. Detail is what lets the team act without coming back to ask.
Confirm. Call the AskUserQuestion tool with the drafted message
quoted in full. Do not render the choices as a markdown list — a written list
is not a gate, and the send must block on a real user turn:
Send on approval, then report:
Sent to your Carta team — case <workflow_id>. They'll pick it up and reply here. I'll check for a response whenever you ask.
Never estimate a turnaround. Never say "within 24 hours" or similar — you do not know the queue.
One call opens one case. Two unrelated asks are two calls, not one merged message.
Staff callers list with fa__list__workflow. Non-staff callers have no list
command yet, so ask for the case number instead:
I can pull up a specific request if you have its case number. Listing every open request isn't available to your account yet.
Group listed rows into three. Read status first — it is an integer, and 2
and 3 are terminal, so they outrank whoever the row is pending on:
| Group | Comes from | Means |
|---|---|---|
| Completed | status is 2 (complete) or 3 (canceled) |
Closed |
| Tasks to complete | last_task.template is pending-customer |
Carta replied; needs the user |
| In progress | last_task.template is pending-carta or new |
Carta has it |
An unrecognised last_task.template goes under In progress — show it rather
than hide it. Age comes from last_activity_at, falling back to created_at.
Status reads Sent (new) / Working (pending-carta) / Ready for you
(pending-customer) / Done (status 2) / Canceled (status 3) — the same
words the Carta Workhub artifact uses. Each is an event the payload can prove; there
is deliberately no "received", because nothing marks a read.
There is no state field and no _links block on this payload. Do not read
either, and do not build a URL yourself. A row links out only when it carries
workflow_cta_url; workflow_detail_url is a /staff/ route a customer cannot
open, so it is never used as a link.
Render each group as its own table, # first so the user can open one by number:
| # | Request | Status | Age |
|---|---|---|---|
| 1 | Split the Q3 capital call | Ready for you | 2d |
request-generic is a DM workflow, so it has no subject. Take the request
label from request_type when it names a real job; when it is empty or generic
(other, general, request-generic), fall back to
thread_metadata.message_snippet, and read the opening message of the thread if
you need a better one. Trim to one line. Link the label itself — never a separate
"Open" or "View" column. Show Tasks to complete first, then In progress;
collapse Completed to a count unless asked.
Close with:
Enter a number to open that case, or: [N] New request [R] Refresh
fa__list__workflow-message returns the whole thread in one call, both
directions. author.is_staff marks what Carta wrote.
Render it as a conversation, oldest first — "You" and "Carta". Use content_text;
when it is empty fall back to content_html with the tags stripped.
Never surface Carta's internal agent output. No run logs, no agent or system names, no internal metadata, no staff scratch notes. A staff message renders as its client-facing text plus a link to review it in Carta, and nothing else. If a message is entirely internal, omit it rather than paraphrasing it.
State plainly whether the ball is with Carta or the user, then:
1 - Reply to Carta ← recommended
2 - Open in Carta
3 - Back to queue
Same confirmation as Flow 1, including the AskUserQuestion tool: draft, show the
exact text, get an explicit yes, then fa__create__workflow-message on the same
workflow_id. Read the thread first so the reply answers what was actually asked.
Confirm with:
Reply sent on case <workflow_id>.
Then offer Back to queue.
| Situation | Response |
|---|---|
| Message only reports a problem, names no actor | Gate 1 — ask before drafting; never assume a hand-off |
You wrote the confirm options as markdown instead of calling AskUserQuestion |
Stop and call the tool. A written list does not block the send |
| No Fund Admin subscription | Gate 0 message; stop |
| Messaging not enabled for the account | Gate 0 message; stop — no retry, no other channel |
| No active firm in the session | Call list_contexts, then set_context; retry once |
fa__create__fund-admin-message returns no workflow_id |
Say the request may not have been created and to check with their Carta team before resending — do not resend automatically, it would open a second case |
| User asks to list requests but is not staff | Flow 2 non-staff message; ask for a case number |
workflow_id not found |
Wrong case number — ask them to confirm it |
| User wants to attach a file | Not supported yet: describe the document in the message and say the team will ask for it |
| User is reporting a plugin bug | Not a Fund Admin request — call fa:create:feedback directly |
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。