# Matchmaking

Use live MCP discovery to check which tools your connection can call.

Matchmaking compares a Project's Criteria with funding partners' requirements. Use it when you want recommendations; a recommendation does not submit an application.

## Find and use recommendations

1. Read the Project's matchmaking state and Criteria contract, then complete the relevant answers.
2. Start matching with the current answers revision and check the run's status until it settles.
3. List result summaries. Read an individual result when you need its assessment, missing information, or package evidence.
4. Review recipient availability and uncertainty. Save selections if you want to keep a shortlist; use result IDs and package versions for selections.
5. Call `deals.create` with `provider_slug`, a new UUID `idempotency_key`, the Business ID, the chosen result's `recipient.id` as `recipient_id`, and the Project ID. Creation uses the current published application and does not submit it.

Create one Deal per chosen recipient. Save the returned Deal and application IDs. Reuse the same idempotency key and inputs when retrying; use a new key only when you intend to create another Deal.

## Complete the Criteria

1. Read the application and its current question contract. Use the returned question keys, repeated-entry IDs, and supported tools.
2. Read the current answers. Use their revision for answer changes; the application's own revision protects a different change.
3. Update ordinary answers with the answer-update tool. Use dedicated tools for repeated entries and documents.
4. Review missing or invalid Criteria before calculating matches. Use the matching result to identify information that needs clarification.

### Attach documents

Call `projects.prepare_matchmaking_answer_file_upload` with the question key, latest answers revision, filename, byte count, and SHA-256 digest. Include the returned item ID for a repeated entry. POST the file to the returned URL as multipart field `file`, using `transfer_token` as a Bearer credential within five minutes. No separate API key is needed. Check the receipt, then list the files to confirm the upload. Files can be up to 25 MiB; application storage limits also apply.

### Work with an uploaded document

List the application's files and use the returned file ID. Call `projects.update_matchmaking_answer_file` with a filename, the latest `expected_answers_revision`, and a UUID `idempotency_key` to rename it while preserving its contents and identity. Renaming does not convert its format.

Call `projects.get_matchmaking_answer_file_download` to retrieve the original. GET `download.url` with `download.transfer_token` as a Bearer credential within five minutes; no API key is needed. Downloads recheck current access and file availability. Unrelated answer edits do not invalidate the download. Keep credentials and bytes out of logs and messages. Uploading a processed copy adds another file; delete the original only if the user explicitly requests removal.

### Use Autofill

Autofill proposes answers from evidence; it does not save them automatically. Read preparation to choose available evidence and add notes. Upload any new supporting documents before starting a run:

1. Call `projects.prepare_matchmaking_application_autofill_file_upload` with the latest `expected_preparation_revision`, a new UUID `idempotency_key`, filename, byte count, and SHA-256 digest of the file.
2. POST the document as multipart field `file` to the returned URL within five minutes. Set `Authorization: Bearer <transfer_token>`; your MCP connection authorizes the upload, so no API key is needed. The limit is 25 MiB per file.
3. Check the upload receipt and read preparation again. Use its latest revision when adding another document or starting Autofill.

An identical retry with the same transfer credential returns the original receipt without adding another file. Keep the upload receipt and use preparation’s `files` list to confirm the document names and follow processing. If the credential expires before you confirm the upload, read preparation and check that list before uploading again. A document’s `status` is `pending` while queued, `running` while being read, `success` when ready for Autofill, or `failed` when it needs attention. Processing updates do not change the preparation revision; read preparation again to check progress. Supporting documents provide evidence for Autofill; they do not fill an application question by themselves.

Start a run using the latest preparation revision, check its status until it settles, and review its suggestions. Accept only approved suggestions using the latest `expected_answers_revision`. Keep the revision and idempotency key for an identical retry, then read the answers to confirm what was saved.

If a revision is stale, read again and reconcile the change before retrying. Keep file-transfer credentials and document bytes out of tool arguments, logs, and messages.


## Available tools

- [Read a Project matchmaking application contract](https://docs.levr.ai/mcp/tools/projects.get_matchmaking_application_contract.md): `projects.get_matchmaking_application_contract`

- [Get funding request matches](https://docs.levr.ai/mcp/tools/projects.get_matchmaking.md): `projects.get_matchmaking`

- [Update matching request details](https://docs.levr.ai/mcp/tools/projects.update_matchmaking_request.md): `projects.update_matchmaking_request`

- [Read matchmaking application answers](https://docs.levr.ai/mcp/tools/projects.get_matchmaking_application_answers.md): `projects.get_matchmaking_application_answers`

- [Update matchmaking application answers](https://docs.levr.ai/mcp/tools/projects.update_matchmaking_application_answers.md): `projects.update_matchmaking_application_answers`

- [List a Project matchmaking application repeatable items](https://docs.levr.ai/mcp/tools/projects.list_matchmaking_repeatable_items.md): `projects.list_matchmaking_repeatable_items`

- [Add a Project matchmaking application repeatable item](https://docs.levr.ai/mcp/tools/projects.add_matchmaking_repeatable_item.md): `projects.add_matchmaking_repeatable_item`

- [Update a Project matchmaking application repeatable item](https://docs.levr.ai/mcp/tools/projects.update_matchmaking_repeatable_item.md): `projects.update_matchmaking_repeatable_item`

- [Delete a Project matchmaking application repeatable item](https://docs.levr.ai/mcp/tools/projects.delete_matchmaking_repeatable_item.md): `projects.delete_matchmaking_repeatable_item`

- [Get a Project matchmaking application original file](https://docs.levr.ai/mcp/tools/projects.get_matchmaking_answer_file_download.md): `projects.get_matchmaking_answer_file_download`

- [List a Project matchmaking application answer files](https://docs.levr.ai/mcp/tools/projects.list_matchmaking_answer_files.md): `projects.list_matchmaking_answer_files`

- [Prepare a Project matchmaking application answer file upload](https://docs.levr.ai/mcp/tools/projects.prepare_matchmaking_answer_file_upload.md): `projects.prepare_matchmaking_answer_file_upload`

- [Update a Project matchmaking application file metadata](https://docs.levr.ai/mcp/tools/projects.update_matchmaking_answer_file.md): `projects.update_matchmaking_answer_file`

- [Delete a Project matchmaking application answer file](https://docs.levr.ai/mcp/tools/projects.delete_matchmaking_answer_file.md): `projects.delete_matchmaking_answer_file`

- [Read matchmaking application autofill preparation](https://docs.levr.ai/mcp/tools/projects.get_matchmaking_application_autofill_preparation.md): `projects.get_matchmaking_application_autofill_preparation`

- [Prepare Criteria Autofill supporting-file upload](https://docs.levr.ai/mcp/tools/projects.prepare_matchmaking_application_autofill_file_upload.md): `projects.prepare_matchmaking_application_autofill_file_upload`

- [Prepare matchmaking application autofill](https://docs.levr.ai/mcp/tools/projects.prepare_matchmaking_application_autofill.md): `projects.prepare_matchmaking_application_autofill`

- [Start matchmaking application autofill](https://docs.levr.ai/mcp/tools/projects.start_matchmaking_application_autofill.md): `projects.start_matchmaking_application_autofill`

- [Get matchmaking application autofill](https://docs.levr.ai/mcp/tools/projects.get_matchmaking_application_autofill.md): `projects.get_matchmaking_application_autofill`

- [List matchmaking application autofill suggestions](https://docs.levr.ai/mcp/tools/projects.list_matchmaking_application_autofill_suggestions.md): `projects.list_matchmaking_application_autofill_suggestions`

- [Accept a Project matchmaking application autofill suggestion](https://docs.levr.ai/mcp/tools/projects.accept_matchmaking_application_autofill_suggestion.md): `projects.accept_matchmaking_application_autofill_suggestion`

- [Retry matchmaking application autofill](https://docs.levr.ai/mcp/tools/projects.retry_matchmaking_application_autofill.md): `projects.retry_matchmaking_application_autofill`

- [Calculate funding matches](https://docs.levr.ai/mcp/tools/projects.calculate_matches.md): `projects.calculate_matches`

- [Get funding match details](https://docs.levr.ai/mcp/tools/projects.get_matchmaking_result.md): `projects.get_matchmaking_result`

- [List funding matches](https://docs.levr.ai/mcp/tools/projects.list_matchmaking_result_summaries.md): `projects.list_matchmaking_result_summaries`

- [Update recipient choices](https://docs.levr.ai/mcp/tools/projects.update_matchmaking_selections.md): `projects.update_matchmaking_selections`

- [Retry unfinished funding matches](https://docs.levr.ai/mcp/tools/projects.retry_matchmaking.md): `projects.retry_matchmaking`

- [Cancel funding match calculation](https://docs.levr.ai/mcp/tools/projects.cancel_matchmaking.md): `projects.cancel_matchmaking`
