---
name: privsource-seller-mandate-matches
description: Use when an agent reviews the buyer mandates PrivSource matched to the authorized seller account's live deals, records seller review decisions, or contacts a matched buyer through MCP.
---

# PrivSource Seller Mandate Matches

Seller mandate match tools are seller-side and deal-oriented: start from the seller's live deals, review the buyer mandates PrivSource matched to each deal, and contact matched buyers by sharing deals. Mandates are only reachable through a match on one of the seller's deals — there is no mandate browse.

## Workflow

1. Call `privsource_whoami` if unsure whether the account has `seller-mandate-matches` access.
2. Call `list_seller_deals` to see the seller's live deals with `match_count`, `strong_match_count`, `possible_match_count`, and `review_state_counts` — use them to pick which deal has matches worth reviewing.
3. Call `get_seller_deal_matches` with a deal `id`. Matches come back with the strong fit band leading, each with a `fit_band` (`strong` or `possible`), an `explanation`, a `review_state`, and a mandate summary. Filter with `review_state` (`to_review`, `in_pipeline`, `hidden`, `archived`); `meta.review_state_counts` shows the split.
4. If `meta.matches_first_time_finding` is true, PrivSource is still building the deal's first matches — say matching is in progress rather than reporting that nothing matched.
5. A match's mandate summary includes `also_matches_deal_ids` — the seller's other live deals matched to the same mandate. Call `get_seller_mandate_match` with the match `id` for the full mandate, `related_matches` (every matched deal of the seller's, including this one), and `prior_outreach` to that buyer.
6. Call `update_seller_mandate_match` to record the seller's verdict: `review_state: in_pipeline` saves the buyer to the deal's pipeline, `hidden` removes a poor fit from the feed, `archived` retires an in-pipeline buyer that fell out of the running, and `to_review` undoes any of them. Set `feedback_comment` to explain why a buyer is or is not a fit.
7. Review states act for the whole seller account, so confirm intent before changing them in bulk.

## Contacting a Buyer

`send_seller_mandate_outreach` sends a real message to the matched buyer and shares the chosen deals. The matches are marked contacted and moved to the pipeline. Free buyers can read shared deal profiles and respond. Materials stay locked until a seller message unlocks an Interested share. Use this tool only when the user asks to contact the buyer.

1. Check `prior_outreach` on `get_seller_mandate_match` first to avoid duplicate messages to the same buyer; outreach cannot be unsent.
2. Confirm with the user which matched deals to share. Take `deal_ids` from `related_matches`.
3. Tell the user that PrivSource sends the standard outreach message. The tool does not accept a custom message body.

## Error Handling

- "Only matches in the seller pipeline can be archived" means the match is not in the pipeline — move it to `in_pipeline` first, or use `hidden` for a poor fit.
- Deal ids come from `list_seller_deals` and `related_matches`; match ids come from `get_seller_deal_matches`. Use them verbatim; do not synthesize ids.

## Buyer responses and messages

Read `buyer_response` for Shared, Interested, or Passed status.
The response includes the buyer note and NDA receipt time.
Use `send_seller_mandate_message` to send an approved message about one matched deal.
This differs from `send_seller_mandate_outreach`, which shares deals.
A message about an Interested shared deal unlocks its materials and replies for that buyer.
A message before interest does not unlock materials.
The message follows the current dashboard access rules.
Read `message_available` before offering to send a message.
The gate permits Interested buyers, legacy shares, and shares with no answer for 14 days.
Passed buyers cannot receive a message through this action.
`get_seller_mandate_match` returns the dashboard `message_history` and `connected` state.
It returns `buyer_contact` only when the dashboard connection rule permits it.
`last_messaged_at` reports the last seller message time.

## Exports

Call `get_seller_deal_matches_export` with the seller deal `id`.
The response returns the file directly in `export.content`. No browser sign-in is needed.
If `encoding` is `base64`, decode `content` to bytes. If it is `utf-8`, use the text directly.
Save the result using `filename` and `content_type`, or analyze the CSV text in the agent.
Check `ready` first. Unavailable exports return `unavailable_reason` without file content.
The CSV includes all non-archived dashboard matches and fixed columns. Inactive sponsored accounts cannot download it.
`dashboard_url` is optional context. It is not required to get the file.
