> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neus.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Create proof (`neus_verify`)

> Create a saved proof from inside an MCP session.

Use **`neus_verify`** to create a proof when the signed-in account can complete the check in-session. Ownership checks finish here. Share a hosted link only when this tool returns one.

For an outside login, payment, or a different account, use **[`neus_verify_or_guide`](./verify-or-guide)**.

Always run **`neus_proofs_check`** first and reuse an existing proof before creating a new one.

When signed in, **omit `walletAddress`**. The tool uses your profile account from `neus_context`. For `ownership-basic`, omit `owner`. The signed-in account is filled in.

## Input

| Field | Required | Notes |
| - | - | - |
| `verifierIds` | Yes | One or more check IDs |
| `walletAddress` | No | Omit when signed in; required only when acting for another account |
| `data` | No | Check inputs (see each [check](../verification/verifiers)) |
| `chain` | No | CAIP-2 chain when needed |
| `signature` | No | Provided in the finalize step |
| `signedTimestamp` | No | Provided in the finalize step |
| `options.returnUrl` | No | Where to send the user if a hosted step is needed |
| `options.publishToHub` | No | Record the proof on the hub chain. Offchain by default. Does not change who can see the proof. |

```json theme={"dark"}
{ "verifierIds": ["ownership-basic"], "data": { "content": "Hello NEUS" } }
```

Signed-in sessions do not send `signature` or `signedTimestamp`. Those fields exist only when the session cannot authorize the account.

## Output

A plain-language **Passed**, **Action needed**, or **Blocked** result. On success, the tool also returns the proof ID in `qHash` for your server. A hosted link appears only when the check needs an outside step.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.