# OpenStela > A registry and market for AI characters and works. A character gets a registry ID (AVL-…) and a fingerprint of its specification; a work gets an authorship record (attribution, claimed creation date, fingerprint, and the human contribution for AI-assisted work). Fingerprints are batched into a Merkle tree nightly and the root is written to Arbitrum One. Binding a work to a character is a separate, dated record. Records prove that specific data existed at a date under a name — not authorship, ownership or non-infringement. - App: https://app.openstela.io (Google or GitHub sign-in; registration is free; only a 5% deal fee when a character sells) - API base: https://app.openstela.io, auth `Authorization: Bearer alk_…` (Account → API keys); public endpoints under /api/verify, /api/market, /api/public need no key - Remote MCP: https://app.openstela.io/mcp (Streamable HTTP). Auth: OAuth 2.1 with PKCE + dynamic client registration (discovery: https://app.openstela.io/.well-known/oauth-authorization-server) for claude.ai / ChatGPT connectors, or the same Bearer API key for Claude Code / Cursor. Tools: list_characters, list_works, get_work, register_work, bind_work, set_work_public, get_character, get_public_character, get_public_work, verify, search_market, scan_account (read-only: list a YouTube channel's or Civitai user's public works to register one by one). No delete / deal / payment / issuance tools by design. ## Docs - [Developer guide](https://openstela.io/developers): auth, curl examples, MCP setup, limits - [OpenAPI (public subset)](https://app.openstela.io/api/openapi.json): machine-readable reference - [Interactive reference](https://app.openstela.io/api/docs): Swagger UI - [How a registered work is verified](https://openstela.io/blog/how-a-registered-work-is-verified): fingerprint → card → tree → chain, and the four steps anyone can recompute - [What a character ID proves](https://openstela.io/blog/what-an-id-proves): registered vs anchored vs verified on chain - [Proving a song belongs to a character](https://openstela.io/blog/proving-a-song-belongs-to-a-character): the evidence checks on a binding - [What moves when you sell a character](https://openstela.io/blog/what-moves-when-you-sell-a-character): assignment vs exclusive licence, file by file - [Character specification format](https://openstela.io/spec) - [Terms of Service](https://openstela.io/terms) · [Privacy Policy](https://openstela.io/privacy) ## Verify a fingerprint GET https://app.openstela.io/api/verify/ — returns found/type/registered_at/anchored and a `chain` block whose `ok` is true only when the transaction was read back from Arbitrum One and the Merkle proof recomputed.