Skip to content
14 changes: 10 additions & 4 deletions docs/mcp/mcp-server-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<!-- verification:
source_repo: ant-sdk
source_ref: main
source_commit: d7652ec3da82dfbe2107778e5223dc413d95815b
verified_date: 2026-05-02
source_commit: 529280c32c024c92b68436abb6ace956c8da66ba
verified_date: 2026-05-11
verification_mode: current-merged-truth
-->

Expand Down Expand Up @@ -59,7 +59,7 @@ At startup, the server resolves the daemon base URL in this order:

The discovery helper still checks a `daemon.port` file before falling back to the default URL.

`antd` writes `ant/sdk/daemon.port`, while `antd-mcp` reads `ant/daemon.port`. Treat `ANTD_BASE_URL` as the reliable configuration path unless you have already confirmed port-file discovery works in your environment.
`antd` writes the port file to `ant/sdk/daemon.port` and `antd-mcp` reads from the same path, so port-file discovery works without `ANTD_BASE_URL` when both are installed from the same `ant-sdk` checkout. Set `ANTD_BASE_URL` explicitly when you want a fixed URL regardless of port-file state, or when you are running `antd-mcp` against a daemon on a different host.

## Claude Desktop configuration

Expand Down Expand Up @@ -202,7 +202,13 @@ Examples:
```json
{
"healthy": true,
"network": "local"
"network": "local",
"version": "0.6.1",
"evm_network": "local",
"uptime_seconds": 42,
"build_commit": "529280c3",
"payment_token_address": "",
"payment_vault_address": ""
}
```

Expand Down
7 changes: 4 additions & 3 deletions docs/rust/library-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<!-- verification:
source_repo: ant-client
source_ref: main
source_commit: 71ad53b047f7fc6b55e73ce6008d0a834feebbd6
verified_date: 2026-05-02
source_commit: 6cada1d6b318a93e52ea6c34aa4b68fc2782c946
verified_date: 2026-05-11
verification_mode: current-merged-truth
-->

Expand Down Expand Up @@ -121,7 +121,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {

The native Rust library exposes both wave-batch and Merkle-batch external payment helpers.

For wave-batch uploads, `data_prepare_upload`, `file_prepare_upload`, and `finalize_upload` prepare the upload, collect quotes, and later store the chunks after an external signer returns transaction hashes.
For wave-batch uploads, `data_prepare_upload`, `data_prepare_upload_with_visibility`, `file_prepare_upload`, and `finalize_upload` prepare the upload, collect quotes, and later store the chunks after an external signer returns transaction hashes. Use `data_prepare_upload_with_visibility(content, Visibility::Public)` to bundle the DataMap chunk into the same payment batch and receive its network address in the `FileUploadResult` after finalize.

For Merkle batches, `prepare_merkle_batch_external` and `finalize_merkle_batch` expose the low-level batch helpers, while `finalize_upload_merkle` completes a prepared upload from the winning pool hash. Progress-aware variants such as `file_prepare_upload_with_progress`, `finalize_upload_with_progress`, and `finalize_upload_merkle_with_progress` are also available when you need UI feedback during long-running uploads.

Expand All @@ -138,6 +138,7 @@ For Merkle batches, `prepare_merkle_batch_external` and `finalize_merkle_batch`
| `ant_core::data::PreparedUpload` | Two-phase upload state used by external-signer flows |
| `ant_core::data::ExternalPaymentInfo` | External payment details for prepared uploads |
| `ant_core::data::PreparedMerkleBatch` | Prepared Merkle batch data for external signing |
| `ant_core::data::Visibility` | Upload visibility: `Private` (DataMap returned to caller) or `Public` (DataMap bundled into payment batch and stored on-network) |

## External signer example

Expand Down
17 changes: 10 additions & 7 deletions docs/sdk/how-to-guides/use-external-signers-for-upload-payments.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
<!-- verification:
source_repo: ant-sdk
source_ref: main
source_commit: d7652ec3da82dfbe2107778e5223dc413d95815b
verified_date: 2026-05-02
source_commit: 529280c32c024c92b68436abb6ace956c8da66ba
verified_date: 2026-05-11
verification_mode: current-merged-truth
-->
<!-- verification:
source_repo: ant-client
source_ref: main
source_commit: 71ad53b047f7fc6b55e73ce6008d0a834feebbd6
verified_date: 2026-05-02
source_commit: 6cada1d6b318a93e52ea6c34aa4b68fc2782c946
verified_date: 2026-05-11
verification_mode: current-merged-truth
-->
<!-- verification:
Expand Down Expand Up @@ -67,6 +67,8 @@ curl -X POST http://localhost:8082/v1/data/prepare \
-d "{\"data\":\"$DATA_B64\"}"
```

The in-memory data prepare endpoint supports only private uploads: `visibility` is accepted but `"public"` returns `501`. To prepare a public upload with an external signer, use `POST /v1/upload/prepare` with a file path and `"visibility":"public"` instead.

The prepare endpoints return a `payment_type` discriminator. Use that value to decide which on-chain call to make and which finalize payload to send back.

The daemon returns `wave_batch` for uploads under 64 chunks and `merkle` for uploads with 64 or more chunks.
Expand Down Expand Up @@ -119,7 +121,7 @@ Merkle prepare response:

Each `pool_commitments` entry contains exactly 16 candidate payments. The sample above shows one candidate for brevity.

For file uploads, the equivalent is `POST /v1/upload/prepare` with a local `path` field instead of `data`.
For file uploads, the equivalent is `POST /v1/upload/prepare` with a local `path` field instead of `data`. To make the upload publicly retrievable by address, add `"visibility":"public"` to the prepare request — the daemon bundles the serialized DataMap chunk into the same payment batch, and the finalize response includes a `data_map_address` field with its network address.

### 3. Submit the payment externally

Expand Down Expand Up @@ -158,19 +160,20 @@ Expected response shape:
{
"data_map": "<hex_encoded_datamap>",
"address": "<64_hex_address>",
"data_map_address": "<64_hex_address>",
"chunks_stored": <chunk_count>
}
```

The `address` field is only present when `store_data_map` is `true`.
`address` is only present when `store_data_map` is `true`; that path uses the daemon's own wallet to store the DataMap. `data_map_address` is only present when the upload was prepared with `visibility:"public"` — it is the network address of the DataMap chunk whose payment was included in the same external-signer batch.

### 5. Use SDK helpers when available

The daemon SDKs follow the same prepare/finalize split. Merkle-capable bindings expose `payment_type` on prepare results and a `finalize_merkle_upload` helper for the Merkle path.

Use the REST API when you need the full finalize response surface, such as the raw `data_map` value or explicit `store_data_map` control on wave-batch finalize requests.

If you are building in Rust with ant-core instead of the daemon, the library exposes native external-payment helpers such as `data_prepare_upload`, `file_prepare_upload`, `prepare_merkle_batch_external`, and `finalize_merkle_batch`. Progress-aware variants such as `file_prepare_upload_with_progress`, `finalize_upload_with_progress`, and `finalize_upload_merkle_with_progress` are also available when you need UI feedback during long-running uploads.
If you are building in Rust with ant-core instead of the daemon, the library exposes native external-payment helpers such as `data_prepare_upload`, `data_prepare_upload_with_visibility`, `file_prepare_upload`, `prepare_merkle_batch_external`, and `finalize_merkle_batch`. Use `data_prepare_upload_with_visibility(content, Visibility::Public)` to bundle the DataMap chunk into the payment batch for a public in-memory upload. Progress-aware variants such as `file_prepare_upload_with_progress`, `finalize_upload_with_progress`, and `finalize_upload_merkle_with_progress` are also available when you need UI feedback during long-running uploads.

## Verify it worked

Expand Down
14 changes: 10 additions & 4 deletions docs/sdk/reference/grpc-services.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<!-- verification:
source_repo: ant-sdk
source_ref: main
source_commit: d7652ec3da82dfbe2107778e5223dc413d95815b
verified_date: 2026-05-02
source_commit: 529280c32c024c92b68436abb6ace956c8da66ba
verified_date: 2026-05-11
verification_mode: current-merged-truth
-->

Expand All @@ -25,7 +25,13 @@ Checks daemon health and network selection.
| Name | Type | Description |
|------|------|-------------|
| `status` | string | Expected `ok` on success |
| `network` | string | Current network name |
| `network` | string | Network name: `default`, `local`, or `alpha` |
| `version` | string | antd crate version (e.g. `0.4.0`) |
| `evm_network` | string | EVM preset: `arbitrum-one`, `arbitrum-sepolia`, `local`, or `custom` |
| `uptime_seconds` | uint64 | Seconds since the daemon process started |
| `build_commit` | string | Short git SHA captured at build time, or empty if built outside a git checkout |
| `payment_token_address` | string | Payment token contract address, or empty if unconfigured |
| `payment_vault_address` | string | Payment vault contract address, or empty if unconfigured |

## Data Service

Expand Down Expand Up @@ -139,7 +145,7 @@ The proto files define these shared shapes:
| Message | Fields |
|------|--------|
| `Cost` | `atto_tokens` |
| `HealthCheckResponse` | `status`, `network` |
| `HealthCheckResponse` | `status`, `network`, `version`, `evm_network`, `uptime_seconds`, `build_commit`, `payment_token_address`, `payment_vault_address` |
| `PutPublicDataResponse` | `cost`, `address` |
| `PutPrivateDataResponse` | `cost`, `data_map` |
| `UploadPublicResponse` | `address`, `storage_cost_atto`, `gas_cost_wei`, `chunks_stored`, `payment_mode_used` |
Expand Down
20 changes: 16 additions & 4 deletions docs/sdk/reference/rest-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<!-- verification:
source_repo: ant-sdk
source_ref: main
source_commit: d7652ec3da82dfbe2107778e5223dc413d95815b
verified_date: 2026-05-02
source_commit: 529280c32c024c92b68436abb6ace956c8da66ba
verified_date: 2026-05-11
verification_mode: current-merged-truth
-->

Expand All @@ -25,10 +25,18 @@ Returns daemon health and the selected network.
```json
{
"status": "ok",
"network": "default"
"network": "default",
"version": "0.6.1",
"evm_network": "arbitrum-one",
"uptime_seconds": 12345,
"build_commit": "529280c3",
"payment_token_address": "0xde817De9d8AC8C3aA10C3Ed0EE5FCB6C53cE7B0a",
"payment_vault_address": "0x607483B50C5F06c25cDC316b6d1E071084EeC9f5"
}
```

All six fields (`version`, `evm_network`, `uptime_seconds`, `build_commit`, `payment_token_address`, `payment_vault_address`) are always present. On a local devnet, `payment_token_address` and `payment_vault_address` may be empty strings, and `build_commit` is empty when the binary was built outside a git checkout.

**Example:**

```bash
Expand Down Expand Up @@ -495,6 +503,7 @@ Prepares an in-memory data upload for external signing.
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `data` | string | Yes | Base64-encoded payload |
| `visibility` | string | No | `"private"` (default) or `"public"`. `"public"` returns `501` on this endpoint. Use `/v1/upload/prepare` with a file path for public external-signer uploads. |

**Response:**

Expand Down Expand Up @@ -569,6 +578,7 @@ Prepares a file upload for external signing.
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `path` | string | Yes | Local file path |
| `visibility` | string | No | `"private"` (default) or `"public"`. `"public"` bundles the serialized DataMap chunk into the same payment batch and stores it on-network; its address is returned on finalize via `data_map_address`. |

**Response:** Same `payment_type`-based shape as `POST /v1/data/prepare`

Expand Down Expand Up @@ -603,11 +613,12 @@ Provide `tx_hashes` when the prepare response returned `payment_type: "wave_batc
{
"data_map": "<hex_encoded_datamap>",
"address": "<64_hex_address>",
"data_map_address": "<64_hex_address>",
"chunks_stored": <chunk_count>
}
```

The `address` field is only present when `store_data_map` is `true`.
`address` is only present when `store_data_map` is `true`; that path uses the daemon's own wallet to store the DataMap. `data_map_address` is only present when the upload was prepared with `visibility:"public"`; it is the network address of the bundled DataMap chunk whose payment was included in the same external-signer batch as the data chunks.

**Examples:**

Expand All @@ -632,6 +643,7 @@ curl -X POST http://localhost:8082/v1/upload/finalize \
| `404` | Not found | Check the address or `upload_id` |
| `413` | Payload too large | Split the upload or switch to file/directory endpoints |
| `500` | Internal server error | Check daemon logs and retry |
| `501` | Not implemented | `visibility:"public"` is not supported on `/v1/data/prepare`; use `/v1/upload/prepare` with a file path instead |
| `502` | Network unreachable | Confirm the daemon can reach the Autonomi network |
| `503` | Service unavailable | Configure a wallet before calling wallet or write endpoints |

Expand Down
14 changes: 14 additions & 0 deletions skills/start/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@ All notable changes to this skill are recorded here.

## [Unreleased]

## [0.1.4-draft] - 2026-05-11

### Changed
- Updated health check expected shape to include the six new required fields added in antd v0.6.1: `version`, `evm_network`, `uptime_seconds`, `build_commit`, `payment_token_address`, `payment_vault_address`.
- Corrected the MCP daemon-discovery note: both `antd` and `antd-mcp` now use `ant/sdk/daemon.port`, so port-file discovery works without `ANTD_BASE_URL`.

### Verified Against
- ant-sdk: 529280c32c024c92b68436abb6ace956c8da66ba
- ant-client: 6cada1d6b318a93e52ea6c34aa4b68fc2782c946
- ant-node: 0c2f2c97aa0b7a2f1000aaa4a3a2a2d629da4e5d
- ant-protocol: 8955144bd2473d1bb5f3b6753061eb104b552070
- self_encryption: 5f9d1646231da7ca2ce60e84d010acfb6d9c29d0
- evmlib: 225acbb1af613193bcc8264b6ede4d7e4a7ac607

## [0.1.3-draft] - 2026-05-02

### Changed
Expand Down
24 changes: 15 additions & 9 deletions skills/start/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: |
in Rust with `ant-core`, or expose Autonomi through an MCP-compatible client.
Do not use for Autonomi 1.0, the MaidSafe-era network, `ant-quic`, or
general EVM work that is not part of building on Autonomi.
version: 0.1.3-draft
version: 0.1.4-draft
license: MIT
repository: https://github.com/WithAutonomi/autonomi-developer-docs
homepage: https://docs.autonomi.com/developers
Expand All @@ -29,13 +29,13 @@ keywords:
- read-only

# Verification block. Re-verify before changing stable claims or examples.
verified_date: 2026-05-02
verified_date: "2026-05-11"
verification_mode: current-merged-truth
verified_commits:
ant-sdk: d7652ec3da82dfbe2107778e5223dc413d95815b
ant-client: 71ad53b047f7fc6b55e73ce6008d0a834feebbd6
ant-node: 23aee15cae33a17257ba833b2b98ed8a7a12e684
ant-protocol: 65651f3a3243af8299a3e8d63385cba846ef88a4
ant-sdk: 529280c32c024c92b68436abb6ace956c8da66ba
ant-client: 6cada1d6b318a93e52ea6c34aa4b68fc2782c946
ant-node: 0c2f2c97aa0b7a2f1000aaa4a3a2a2d629da4e5d
ant-protocol: 8955144bd2473d1bb5f3b6753061eb104b552070
self_encryption: 5f9d1646231da7ca2ce60e84d010acfb6d9c29d0
evmlib: 225acbb1af613193bcc8264b6ede4d7e4a7ac607

Expand Down Expand Up @@ -118,11 +118,17 @@ Expected shape:
```json
{
"status": "ok",
"network": "default"
"network": "default",
"version": "0.6.1",
"evm_network": "arbitrum-one",
"uptime_seconds": 12345,
"build_commit": "529280c3",
"payment_token_address": "0x...",
"payment_vault_address": "0x..."
}
```

Treat `network` as environment-dependent. On a local devnet, it is typically `local` instead of `default`.
Treat `network` as environment-dependent. On a local devnet, it is typically `local` instead of `default`, and the payment address fields may be empty strings.

If the user is on a non-default host or port, ask for the base URL instead of assuming `localhost:8082`.

Expand Down Expand Up @@ -264,7 +270,7 @@ Run the editable install from an `ant-sdk` checkout root.
- `daemon.port`
- `http://127.0.0.1:8082`

`ANTD_BASE_URL` is the reliable MCP setup path because `antd` writes `ant/sdk/daemon.port` while `antd-mcp` reads `ant/daemon.port`.
`antd` writes the port file to `ant/sdk/daemon.port` and `antd-mcp` reads from the same path, so port-file discovery works without `ANTD_BASE_URL` when both are installed from the same `ant-sdk` checkout. Set `ANTD_BASE_URL` when you need a fixed URL or when running against a daemon on a different host.

Do not memorize MCP tool names or schemas in this skill. Fetch the MCP server reference when the task is MCP-specific.

Expand Down
12 changes: 6 additions & 6 deletions skills/start/version.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
{
"skill": "start",
"version": "0.1.3-draft",
"published_date": "2026-05-02",
"version": "0.1.4-draft",
"published_date": "2026-05-11",
"status": "draft",
"canonical_skill_url": "https://raw.githubusercontent.com/WithAutonomi/autonomi-developer-docs/main/skills/start/SKILL.md",
"canonical_docs_url": "https://docs.autonomi.com/developers",
"repository": "https://github.com/WithAutonomi/autonomi-developer-docs",
"verification_mode": "current-merged-truth",
"verified_commits": {
"ant-sdk": "d7652ec3da82dfbe2107778e5223dc413d95815b",
"ant-client": "71ad53b047f7fc6b55e73ce6008d0a834feebbd6",
"ant-node": "23aee15cae33a17257ba833b2b98ed8a7a12e684",
"ant-protocol": "65651f3a3243af8299a3e8d63385cba846ef88a4",
"ant-sdk": "529280c32c024c92b68436abb6ace956c8da66ba",
"ant-client": "6cada1d6b318a93e52ea6c34aa4b68fc2782c946",
"ant-node": "0c2f2c97aa0b7a2f1000aaa4a3a2a2d629da4e5d",
"ant-protocol": "8955144bd2473d1bb5f3b6753061eb104b552070",
"self_encryption": "5f9d1646231da7ca2ce60e84d010acfb6d9c29d0",
"evmlib": "225acbb1af613193bcc8264b6ede4d7e4a7ac607"
},
Expand Down
Loading