idutils-aicid
idutils custom scheme for AICID — persistent identifiers for AI agents that contribute to research (https://aicid.net).
Once installed, idutils understands the aicid scheme everywhere:
detection, validation, normalization, and URL generation, with zero upstream
changes.
Usage
import idutils
import idutils_aicid # registering the entry point is enough; importing is optional
idutils.is_aicid("AICID-5282-9748-4313-4513") # via entry point...
idutils_aicid.is_aicid("AICID-5282-9748-4313-4513") # ...or directly
idutils.detect_identifier_schemes("https://aicid.net/agents/AICID-5282-9748-4313-4513")
# ['aicid']
idutils.normalize_pid("AICID-5282-9748-4313-4513", "aicid")
# 'AICID-5282-9748-4313-4513'
idutils.to_url("AICID-5282-9748-4313-4513", "aicid")
# 'https://aicid.net/agents/AICID-5282-9748-4313-4513'
InvenioRDM
In your instance's invenio.cfg:
from idutils_aicid import is_aicid
from invenio_rdm_records.config import RDM_RECORDS_PERSONORG_SCHEMES
RDM_RECORDS_PERSONORG_SCHEMES = {
**RDM_RECORDS_PERSONORG_SCHEMES,
"aicid": {"label": _("AICID"), "validator": is_aicid, "datacite": "AICID"},
}
Creators then accept {"scheme": "aicid", "identifier": "AICID-…"}, and the
DataCite serializer emits nameIdentifierScheme="AICID".
Identifier format
Normative spec: https://aicid.net/docs/identifier.
AICID-dddd-dddd-dddd-dddX — 15 digits plus an ISO 7064 MOD 11-2 check
character, ORCID-shaped by design.
License
MIT
Metadata
Release files for idutils-aicid 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| idutils_aicid-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / idutils_aicid-0.2.0-py3-none-any.whl
| Download URL | idutils_aicid-0.2.0-py3-none-any.whl |
|---|---|
| Size | 3.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07cfd9f698a9883f88ef27a43e04f65c44cf16fa1dafe4be856fd8244d51dbc3
|
|
BLAKE2b-256 checksum How to use checksums |
aa768076de7c2944120c06f515ec3ced88ece2f9bea0deee6df5a2bb1f17d79c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency log