| CreateArtifact | CreateArtifactRequest | CreateArtifactResponse | Creates an artifact plus its version-1 row, or appends a version when artifact_id is set. When conversation_id is set on create, the new artifact is also linked to that conversation. |
| GetArtifact | GetArtifactRequest | GetArtifactResponse | Resolves to the latest version unless artifact_version_id pins one. |
| ListArtifacts | ListArtifactsRequest | ListArtifactsResponse | One entry per artifact, resolved to its latest version, oldest first. With conversation_id set, only artifacts linked to that conversation; otherwise every artifact in the caller’s organization. |
| ListArtifactVersions | ListArtifactVersionsRequest | ListArtifactVersionsResponse | Full version history of one artifact, newest first. |
| LinkArtifactToConversation | LinkArtifactToConversationRequest | LinkArtifactToConversationResponse | Links an existing artifact to a conversation. Idempotent: linking an already-linked pair succeeds without effect. |
| UnlinkArtifactFromConversation | UnlinkArtifactFromConversationRequest | UnlinkArtifactFromConversationResponse | Removes one conversation’s link to an artifact. The artifact itself is untouched. Idempotent: unlinking a missing link succeeds. |
| ArchiveArtifact | ArchiveArtifactRequest | ArchiveArtifactResponse | Sets archived_date. Versions, stored bytes, and conversation links are left in place. Idempotent: archiving an already-archived artifact succeeds without changing archived_date. |
| UnarchiveArtifact | UnarchiveArtifactRequest | UnarchiveArtifactResponse | Clears archived_date. Idempotent: unarchiving an active artifact succeeds without effect. |