MCP agent tools (21)
Endpoint: mcp.normaldance.ru (SSE + HTTP streamable, Bearer auth). Generated from the server source — mcp-server/src/tools/definitions.js. Read-only sandbox keys for AI-company pilots.
verify_artist
Verify an artist: search by name in the Stage 0 registry (tracks, rights) or by wallet address on instances with a blockchain layer
| Parameter | Description |
|---|---|
artist_name | Artist's stage name (primary method — Stage 0 registry, case-insensitive) |
wallet_address | Ethereum wallet address (0x...) — only for instances with a blockchain layer |
get_artist_passport
Fetch the full artist passport record
| Parameter | Description |
|---|---|
wallet_address | Artist's wallet address |
token_id | SBT token ID |
check_track_ownership
Check track ownership by ISRC
| Parameter | Description |
|---|---|
isrc required | Track ISRC (e.g. US-NDP-26-00001) |
get_royalty_balance
Check the royalty balance for a track
| Parameter | Description |
|---|---|
isrc required | Track ISRC |
get_label_info
Fetch label information
| Parameter | Description |
|---|---|
label_wallet required | Label wallet address |
get_system_stats
Fetch overall NDP system statistics
No parameters.
check_artist_tracks
Fetch the number of tracks by an artist
| Parameter | Description |
|---|---|
wallet_address required | Artist's wallet address |
start_ucp_checkout
Start a track purchase via NDP Checkout (UCP-compatible)
| Parameter | Description |
|---|---|
isrc required | Track ISRC to purchase |
currency | Payment currency (MATIC, USDC) |
trigger_n8n_workflow
Trigger an n8n workflow (e.g. passport minting or verification)
| Parameter | Description |
|---|---|
action required | Action (e.g. 'mint_pass', 'verify_track', 'test') |
payload | Additional workflow data |
identify_track
Identify a track by its ADNA fingerprint (anti-plagiarism; verdict same/derivative/different) or fetch track data by ISRC from the Stage 0 registry. v2 (adna_v2) adds localization: offset_sec, coverage, attribution map for multi-sample tracks
| Parameter | Description |
|---|---|
adna | ADNA v1 fingerprint (base64, 256 bytes ≈ 344 chars) — run through the oracle |
adna_v2 | ADNA v2 fingerprint (base64, starts with QTI; windowed signatures, ~KB scale) — aligned identification: finds fragments, cut-offs, pitch ±8% |
isrc | Track ISRC — registry data lookup |
register_track
Register a track in the Stage 0 registry (registry-api + oracle, dual write): ISRC, ADNA, splits, optional derivative link (parent_isrc)
| Parameter | Description |
|---|---|
isrc required | ISRC (e.g. RU-NDP-26-00001) |
title required | Track title |
artist_name | Artist name (for the oracle record) |
adna required | ADNA v1 fingerprint (base64, 256 bytes) |
adna_v2 | ADNA v2 fingerprint (base64, starts with QTI) — optional, mirrored to the oracle for aligned identification |
sha256 | SHA-256 of the reference audio file (optional) |
parent_isrc | ISRC of the source track if this is a derivative (remix/sample) |
ndt | Full NDT manifest (optional) |
splits required | Royalty shares, Σ=100; cascade: {role:'parent', wallet:'isrc:<ISRC>', share:N} |
get_track_manifest
Fetch a track's NDT manifest (rights, splits, sonic-dna) from the Stage 0 registry
| Parameter | Description |
|---|---|
isrc required | Track ISRC |
audience_superfans
SPEC §7.7 fan agent: an artist's superfans derived from protocol receipts (who listens / rewinds / pays). Requires an agent token issued by the artist via POST /subjects/{ndp_id}/scopes/issue (mandate with the read_audience scope)
| Parameter | Description |
|---|---|
agent_token required | Agent JWT from scopes/issue (with the read_audience scope) |
limit | How many listeners to return (1–100, default 20) |
audience_summary
SPEC §7.7 fan agent: artist audience summary from receipts — listeners, events, rewinds, total paid, active in the last 30 days. Requires an agent token with the read_audience scope
| Parameter | Description |
|---|---|
agent_token required | Agent JWT from scopes/issue |
subject_mint
SPEC §1: mint an NDP passport (Proof of Humanity). Three verification paths: label / indie_kyc / community. Returns ndp_id, status, quarantine flag
| Parameter | Description |
|---|---|
verification_path required | Verification path |
identity_commitment required | SHA-256 hash of a unique ID (64 hex chars) |
initial_device_key required | Device public key (hex, 33/65 bytes) |
authorization required | Artist Bearer token |
subject_status
SPEC §1: public check of an NDP passport by ndp_id — status, verification path, validity
| Parameter | Description |
|---|---|
ndp_id required | NDP passport UUID |
subject_keys
SPEC §1: manage a subject's device keys — list keys
| Parameter | Description |
|---|---|
authorization required | Artist Bearer token |
ndp_id required | NDP passport UUID |
receipt_batch
SPEC §7.1: batch submission of signed play receipts. Body — an array of objects {receipt_id, seq, ndp_id, device_key, isrc, action, occurred_at, signature}
| Parameter | Description |
|---|---|
receipts required | Array of receipts |
stats_journal
Daily event journal (play/rewind/purchase, totals, chart) from the unified receipt journal
| Parameter | Description |
|---|---|
days | Period in days (1–365, default 30) |
opt_in
SPEC §7.7: toggle a listener's opt-in for audience segmentation (privacy-first: hidden by default)
| Parameter | Description |
|---|---|
enabled required | true — visible, false — hidden |
authorization required | Listener Bearer token (passport owner) |
snapshot_epoch
SPEC §1: current epoch snapshot of subject statuses (signed with SNAPSHOT_SIGNING_KEY)
No parameters.
Identification oracle (REST)
POST /oracle/identify
Identify a work by fingerprint (v1 adna or v2 adna_v2). Returns the best match with a numeric verdict: same (≥0.90), derivative (0.75–0.90), different (<0.75), plus registry decision; v2 adds offset, coverage and per-source attribution.
curl -s https://normaldance.ru/oracle/identify \
-H 'Content-Type: application/json' \
-d '{"adna_v2": "QTI…"}'
POST /oracle/identify_file
Raw audio body (any ffmpeg format, up to 32 MB) → fingerprints v1+v2 → verdict. The file is deleted after processing.
curl -s https://normaldance.ru/oracle/identify_file \ --data-binary @track.mp3
POST /oracle/compare
Compare two fingerprints {a, b} (same version) → verdict + similarity.
curl -s https://normaldance.ru/oracle/compare \
-H 'Content-Type: application/json' \
-d '{"a": "…", "b": "…"}'
GET /oracle/stats
Registry size and frozen thresholds.
curl -s https://normaldance.ru/oracle/stats
Public registry endpoints (read-only)
GET /registry/tracks/{isrc}
Rights card for a work: title, artist, splits, parent ISRC (derivative chain), NDT manifest, fingerprint.
curl -s https://normaldance.ru/registry/tracks/RU-NDP-26-91752
GET /registry/cards/{card_no}
Public verification of an artist ID card (§7.5 of the spec): validity, series, status, issue date.
curl -s https://normaldance.ru/registry/cards/NDP-XXXX-XXXX-XXXX
GET /registry/stats
Aggregate registry statistics.
curl -s https://normaldance.ru/registry/stats
Rate limits apply. Interactive version of the oracle: /verify.html. Sandbox keys and pilot agreements — @NORMALDANCE.