Core Verbs (get/list/create/update)

The polymorphic CRUD verbs that operate over every artifact type.

Source: docs/reference/verbs/core.md

core verbs

Core polymorphic verbs that operate across every artifact type. These are the canonical CRUD-and-traversal surface defined in SPEC-001 §3: every artifact answers get, list, search, create, update, link, comment, plus substrate-wide telemetry verbs such as health and activity.

Verbs in this namespace: 58


scidex.activity

# read verb
async def scidex_activity(
    args: ActivityIn,
    ctx: Context,
) -> ActivityOut: ...

Paginated read of the events table with optional filters.

Input fields

Field Type Required
event_type_prefix `string null`
actor_id `string null`
ref `string null`
since_id `integer null`
limit integer no
exclude_test boolean no

Output: ActivityOut


scidex.actor

# read verb
async def scidex_actor(
    args: ActorIn,
    ctx: Context,
) -> ActorOut: ...

Return aggregated activity + recent items for an actor.

Input fields

Field Type Required
actor_id string yes
recent_limit integer no

Output: ActorOut


scidex.appeal

# write verb
async def scidex_appeal(
    args: AppealIn,
    ctx: Context,
) -> AppealOut: ...

File an appeal against a moderation_decision (SPEC-068 §2.2).

Input fields

Field Type Required
decision_id string yes
justification string yes
evidence_refs `list[string] null`

Output: AppealOut


scidex.audit

# read verb
async def scidex_audit(
    args: AuditIn,
    ctx: Context,
) -> AuditOut: ...

Return recent admin/governance actions across the substrate. Public-read transparency surface.

Input fields

Field Type Required
window string no
limit integer no

Output: AuditOut


scidex.autocomplete

# read verb
async def scidex_autocomplete(
    args: AutocompleteIn,
    ctx: Context,
) -> AutocompleteOut: ...

Universal search autocomplete returning ranked completions across all artifact types (SPEC-108). Backed by a trigram + prefix index on artifact_suggest_index.

Input fields

Field Type Required
q string no
limit integer no
type_filters `list[string] null`
actor_recents boolean no

Output: AutocompleteOut


scidex.balance

# read verb
async def scidex_balance(
    args: BalanceIn,
    ctx: Context,
) -> BalanceOut: ...

Return the actor’s current scidex_token balance + breakdown.

Input fields

Field Type Required
actor_id `string null`

Output: BalanceOut


scidex.batch

# write verb
async def scidex_batch(
    args: BatchIn,
    ctx: Context,
) -> BatchOut: ...

Execute a list of write ops as one logical action (SPEC-062).

Input fields

Field Type Required
operations list[BatchOp] yes
mode string no
idempotency_key `string null`

Output: BatchOut


scidex.capital_score

# read verb
async def scidex_capital_score(
    args: CapitalScoreIn,
    ctx: Context,
) -> CapitalScoreOut: ...

Return capital-weighted scores for one or more actors. Queries capital_scores_view (migration 0199) which aggregates portfolio_view per actor using Σ sqrt(inventory_value).

Input fields

Field Type Required
actor_ids list[string] yes

Output: CapitalScoreOut


scidex.cite

# write verb
async def scidex_cite(
    args: CiteIn,
    ctx: Context,
) -> CiteOut: ...

Attach a PubMed citation (PMID) to an artifact via a cites link.

Input fields

Field Type Required
ref `Ref string`
paper_pmid string yes
span `string null`
claim `string null`

Output: CiteOut


scidex.comment

# write verb
async def scidex_comment(
    args: CommentIn,
    ctx: Context,
) -> CommentOut: ...

Post a comment on an artifact (or reply to another comment).

Input fields

Field Type Required
ref `Ref string`
body string yes
thread_parent `string null`
kind string no

Output: CommentOut


scidex.comments

# read verb
async def scidex_comments(
    args: CommentsIn,
    ctx: Context,
) -> CommentsOut: ...

List comments on an artifact (paginated, threaded by parent_comment_id).

Input fields

Field Type Required
ref `Ref string`
limit integer no
direction string no
cursor `string null`

Output: CommentsOut


scidex.consensus

# read verb
async def scidex_consensus(
    args: ConsensusIn,
    ctx: Context,
) -> ConsensusOut: ...

Per-artifact consensus + cross-artifact actor alignment.

Input fields

Field Type Required
refs `list[Ref string]`
min_voted integer no
top_n integer no

Output: ConsensusOut


scidex.count

# read verb
async def scidex_count(
    args: CountIn,
    ctx: Context,
) -> CountOut: ...

Return COUNT(*) for (type, filter). Same filter machinery as scidex.list.

Input fields

Field Type Required
type string yes
filter `dict null`
exclude_test boolean no

Output: CountOut


scidex.create

# write verb
async def scidex_create(
    args: CreateIn,
    ctx: Context,
) -> CreateOut: ...

Create a new artifact of the given type.

Input fields

Field Type Required
type string yes
title string yes
content Content no
id `string null`
idempotency_key `string null`
produced_by `ProducedByIn null`
authorship `AuthorshipEnvelope null`
override_gate_ids `list[string] null`
override_rationale `string null`

Output: CreateOut


scidex.diff

# read verb
async def scidex_diff(
    args: DiffIn,
    ctx: Context,
) -> DiffOut: ...

Return a structured diff between two versions of (the same) artifact.

Input fields

Field Type Required
ref_a `Ref string`
ref_b `Ref string`
text_diff boolean no

Output: DiffOut


scidex.digest

# read verb
async def scidex_digest(
    args: DigestIn,
    ctx: Context,
) -> DigestOut: ...

Return a curated digest across content, contributors, markets, funding, and dividends. Cached 30 minutes in-process per (window, limit_per_section).

Input fields

Field Type Required
window string no
limit_per_section integer no

Output: DigestOut


scidex.domain

# read verb
async def scidex_domain(
    args: DomainIn,
    ctx: Context,
) -> DomainOut: ...

Return the full per-domain dossier.

Input fields

Field Type Required
name string yes
top_n integer no

Output: DomainOut


scidex.domains

# read verb
async def scidex_domains(
    args: DomainsIn,
    ctx: Context,
) -> DomainsOut: ...

Return active domains with per-domain activity counts.

Input fields

Field Type Required
limit integer no
direction string no
min_n integer no
exclude_test boolean no

Output: DomainsOut


scidex.evidence_graph

# read verb
async def scidex_evidence_graph(
    args: EvidenceGraphIn,
    ctx: Context,
) -> EvidenceGraphOut: ...

Categorize an artifact’s evidence neighborhood by polarity.

Input fields

Field Type Required
ref `Ref string`
max_depth integer no
max_per_bucket integer no

Output: EvidenceGraphOut


scidex.faucet

# write verb
async def scidex_faucet(
    args: FaucetIn,
    ctx: Context,
) -> FaucetOut: ...

Grant initial scidex_tokens to an actor (idempotent).

Input fields

Field Type Required
actor_id `string null`

Output: FaucetOut


scidex.flag

# write verb
async def scidex_flag(
    args: FlagIn,
    ctx: Context,
) -> FlagOut: ...

Flag an artifact for moderator review (SPEC-068 §2.2).

Input fields

Field Type Required
target_ref `Ref string`
reason_code string yes
evidence `string null`
evidence_refs `list[string] null`

Output: FlagOut


scidex.fund_coalition

# read verb
async def scidex_fund_coalition(
    args: FundCoalitionIn,
    ctx: Context,
) -> FundCoalitionOut: ...

Analyze fund concentration + coalition across a set of artifacts.

Input fields

Field Type Required
refs `list[Ref string]`
min_funded integer no
top_n integer no

Output: FundCoalitionOut


scidex.get

# read verb
async def scidex_get(
    args: GetIn,
    ctx: Context,
) -> GetOut: ...

Return the full envelope for the artifact at the given ref.

Input fields

Field Type Required
ref `Ref string`
include_content boolean no
include_links boolean no
include_signals boolean no
include_provenance boolean no

Output: GetOut


scidex.health

# read verb
async def scidex_health(
    args: HealthIn,
    ctx: Context,
) -> HealthOut: ...

Substrate liveness + dividend queue snapshot.

Input fields: none

Output: HealthOut


scidex.history

# read verb
async def scidex_history(
    args: HistoryIn,
    ctx: Context,
) -> HistoryOut: ...

Return past versions (newest-first) of the artifact at ref.

Input fields

Field Type Required
ref `Ref string`
limit integer no

Output: HistoryOut


scidex.leaderboard

# read verb
async def scidex_leaderboard(
    args: LeaderboardIn,
    ctx: Context,
) -> LeaderboardOut: ...

Rank artifacts of type by aggregated kind signal.

Input fields

Field Type Required
type string yes
kind string no
dimension `string null`
limit integer no
direction string no
min_n integer no
exclude_test boolean no

Output: LeaderboardOut


scidex.lineage

# read verb
async def scidex_lineage(
    args: LineageIn,
    ctx: Context,
) -> LineageOut: ...

Walk the supersession chain forward + backward from an artifact.

Input fields

Field Type Required
ref `Ref string`
max_depth integer no

Output: LineageOut


scidex.link

# write verb
async def scidex_link(
    args: LinkIn,
    ctx: Context,
) -> LinkOut: ...

Create a typed edge between two artifacts (predicate-based graph link).

Input fields

Field Type Required
from `Ref string`
predicate string yes
to `Ref string`
evidence `dict null`
strength number no

Output: LinkOut


scidex.links

# read verb
async def scidex_links(
    args: LinksIn,
    ctx: Context,
) -> LinksResp: ...

Return outgoing and/or incoming edges for an artifact. Reads from THREE surfaces: • artifact_links — v1 application-layer (CHECK constrains predicates) • edges (kind=‘knowledge’) — v1 KG edges via the SPEC-072 unified table (PR #483 Phase A backfill) • substrate_artifact_links — v2-side predicates v1 rejects (replicates / addresses_gap / synthesizes / refutes / ...)

Input fields

Field Type Required
ref `Ref string`
direction string no
predicates `list[string] null`
limit integer no

Output: LinksResp


scidex.list

# read verb
async def scidex_list(
    args: ListIn,
    ctx: Context,
) -> ListOut: ...

Return a paginated list of artifacts of the requested type.

Input fields

Field Type Required
type string yes
filter `dict null`
sort `list[list[Any]] null`
limit integer no
cursor `string null`
exclude_test boolean no
include_all_lifecycle boolean no
include_withdrawn boolean no

Output: ListOut


scidex.mr_ingest

# write verb
async def scidex_mr_ingest(
    args: MRIngInput,
    ctx: Context,
) -> MRIngResult: ...

Ingest Mendelian randomization summaries from OpenGWAS/IEU-MR and emit causal_link artifact rows with extraction_method=‘mr_summary’. For each GWAS study, writes a causal_link with cause_ref=study:, effect_ref=phenotype:<slugified_trait>, and study metadata in source_papers.

Input fields

Field Type Required
phenotype_query string yes
limit integer no
dry_run boolean no

Output: MRIngResult


scidex.notifications

# read verb
async def scidex_notifications(
    args: NotificationsIn,
    ctx: Context,
) -> NotificationsOut: ...

List events relevant to an actor (paginated; cursor-based).

Input fields

Field Type Required
actor_id string yes
since `integer null`
limit integer no
types `list[string] null`
unread_only boolean no
include_unread_count boolean no

Output: NotificationsOut


scidex.poll

# read verb
async def scidex_poll(
    args: PollIn,
    ctx: Context,
) -> PollOut: ...

Return up to limit events newer than the cursor. Long-poll mode (when topics is set): block up to timeout_seconds for the next matching event rather than returning immediately from the DB snapshot.

Input fields

Field Type Required
consumer_id `string null`
types `list[string] null`
topics `list[string] null`
since_event_id `string null`
timeout_seconds integer no
filter `dict null`
artifact_type `list[string] null`
actor `list[string] null`
verb `list[string] null`
since `integer null`
limit integer no
auto_advance boolean no

Output: PollOut


scidex.portfolio

# read verb
async def scidex_portfolio(
    args: PortfolioIn,
    ctx: Context,
) -> PortfolioOut: ...

Return a single actor’s portfolio view aggregation.

Input fields

Field Type Required
actor_id `string null`
market_type `string null`
include_history boolean no
limit integer no

Output: PortfolioOut


scidex.predicates

# read verb
async def scidex_predicates(
    args: PredicatesIn,
    ctx: Context,
) -> PredicatesOut: ...

Return the curated list of known link predicates.

Input fields

Field Type Required
spec `string null`

Output: PredicatesOut


scidex.preregister

# write verb
async def scidex_preregister(
    args: PreregisterIn,
    ctx: Context,
) -> PreregisterOut: ...

Create a new preregistration artifact. The artifact is created in the substrate and a corresponding preregistrations table row is written with the extended fields.

Input fields

Field Type Required
title string yes
predicted_findings Predicted Findings yes
target_hypothesis_ref string yes
target_analysis_ref `string null`
prediction_probability `number null`
methods_locked boolean no
id `string null`

Output: PreregisterOut


scidex.propose

# write verb
async def scidex_propose(
    args: ProposeIn,
    ctx: Context,
) -> ProposeOut: ...

Create a proposal artifact of the given kind. Dispatches to scidex.create for the actual write.

Input fields

Field Type Required
kind string yes
payload Payload yes
source_refs list[string] no
title string yes
idem_key `string null`

Output: ProposeOut


scidex.react

# write verb
async def scidex_react(
    args: ReactIn,
    ctx: Context,
) -> ReactOut: ...

Toggle an emoji reaction on any artifact (SPEC-109 §3.4).

Input fields

Field Type Required
ref `Ref string`
emoji string yes

Output: ReactOut


scidex.replicate

# write verb
async def scidex_replicate(
    args: ReplicateIn,
    ctx: Context,
) -> ReplicateOut: ...

Emit a replication_event for a claim. Creates a ‘confirms’ or ‘contradicts’ replication event and updates the claim’s replication_status via the replication_status_transition_validator.

Input fields

Field Type Required
claim_ref string yes
confirms_or_contradicts string yes
source_ref string yes
extraction_method `string null`

Output: ReplicateOut


scidex.schema

# read verb
async def scidex_schema(
    args: SchemaIn,
    ctx: Context,
) -> SchemaOut: ...

Return registered schema(s) for artifact type(s). Reads from the schema_registry table; falls back to bundled JSON files if the table is missing (dev / first-boot).

Input fields

Field Type Required
type `string null`
version `integer null`
only_current boolean no

Output: SchemaOut


scidex.score

# read verb
async def scidex_score(
    args: ScoreIn,
    ctx: Context,
) -> ScoreOut: ...

Return a normalized composite score for one artifact. Read-through cache (substrate_score_cache, migration 0006): • Cache hits when (ref_type, ref_id, strategy_key) matches AND the cached signal_count equals the current count • A trigger on artifact_signals invalidates by DELETE; this verb recomputes + UPSERTs on miss.

Input fields

Field Type Required
ref `Ref string`
strategy string no
weights `dict null`
fund_pivot number no
usage_pivot number no

Output: ScoreOut


scidex.search

# read verb
async def scidex_search(
    args: SearchIn,
    ctx: Context,
) -> SearchOut: ...

Full-text + structured + semantic + hybrid search across artifacts.

Input fields

Field Type Required
query `string null`
types `list[string] null`
filter `dict null`
mode string no
limit integer no
cursor `string null`
rerank boolean no
highlight boolean no
include_all_lifecycle boolean no
include_withdrawn boolean no

Output: SearchOut


scidex.signal

# write verb
async def scidex_signal(
    args: SignalIn,
    ctx: Context,
) -> SignalOut: ...

Append a signal row. Aggregation is per-kind (replace/sum/append) — see SPEC-001 §10.1.

Input fields

Field Type Required
ref `Ref string`
kind string no
dimension `string null`
value number yes
weight number no
unit `string null`
reason `string null`
metadata `dict null`

Output: SignalOut


scidex.signals

# read verb
async def scidex_signals(
    args: SignalsIn,
    ctx: Context,
) -> SignalsOut: ...

Return aggregated signals for the artifact.

Input fields

Field Type Required
ref `Ref string`
kinds `list[string] null`
since `string null`

Output: SignalsOut


scidex.stats

# read verb
async def scidex_stats(
    args: StatsIn,
    ctx: Context,
) -> StatsOut: ...

Substrate-wide aggregate counts (artifacts, signals, comments, actors).

Input fields

Field Type Required
active_actor_window_days integer no

Output: StatsOut


scidex.subscribe

# write verb
async def scidex_subscribe(
    args: SubscribeIn,
    ctx: Context,
) -> SubscribeOut: ...

Subscribe an actor to a target with a notification mode (SPEC-109 §3.4). Idempotent on (actor_id, target_kind, target_value): re-subscribing with a different mode updates the stored mode rather than inserting a duplicate.

Input fields

Field Type Required
target_kind string yes
target_value string yes
actor_id `string null`
mode string no

Output: SubscribeOut


scidex.subscribers

# read verb
async def scidex_subscribers(
    args: SubscribersIn,
    ctx: Context,
) -> SubscribersOut: ...

List actors who’ve subscribed to the given target. Reverse-lookup of scidex.subscriptions: given a target_kind + target_value, returns the actors following it.

Input fields

Field Type Required
target_kind string yes
target_value string yes
limit integer no

Output: SubscribersOut


scidex.subscriptions

# read verb
async def scidex_subscriptions(
    args: SubscriptionsIn,
    ctx: Context,
) -> SubscriptionsOut: ...

List an actor’s current subscriptions, newest first.

Input fields

Field Type Required
actor_id `string null`
target_kind `string null`
limit integer no

Output: SubscriptionsOut


scidex.suggest

# read verb
async def scidex_suggest(
    args: SuggestIn,
    ctx: Context,
) -> SuggestOut: ...

Return personalized opportunities ranked for the actor.

Input fields

Field Type Required
actor_id `string null`
limit integer no
kinds `list[string] null`
min_calibration number no

Output: SuggestOut


scidex.supersede

# write verb
async def scidex_supersede(
    args: SupersedeIn,
    ctx: Context,
) -> SupersedeOut: ...

Mark an artifact as superseded (optionally by a replacement artifact).

Input fields

Field Type Required
ref `Ref string`
replacement `Ref string
reason string yes
reason_code `string null`

Output: SupersedeOut


scidex.trending

# read verb
async def scidex_trending(
    args: TrendingIn,
    ctx: Context,
) -> TrendingOut: ...

Rank type artifacts by score change over the last window.

Input fields

Field Type Required
type string yes
kind string no
dimension `string null`
window_hours number no
limit integer no
direction string no
min_signals_in_window integer no
actor_id `string null`
exclude_test boolean no
include_orphan_refs boolean no

Output: TrendingOut


scidex.types

# read verb
async def scidex_types(
    args: TypesIn,
    ctx: Context,
) -> TypesOut: ...

Return a catalog of registered artifact types + their schemas.

Input fields

Field Type Required
types `list[string] null`
include_schema boolean no

Output: TypesOut


scidex.unlink

# write verb
async def scidex_unlink(
    args: UnlinkIn,
    ctx: Context,
) -> UnlinkOut: ...

Remove a typed edge between two artifacts. Idempotent: if the edge does not exist, returns deleted=False.

Input fields

Field Type Required
from `Ref string`
predicate string yes
to `Ref string`

Output: UnlinkOut


scidex.unsubscribe

# write verb
async def scidex_unsubscribe(
    args: UnsubscribeIn,
    ctx: Context,
) -> UnsubscribeOut: ...

Remove a subscription. No-op if not subscribed.

Input fields

Field Type Required
target_kind string yes
target_value string yes
actor_id `string null`

Output: UnsubscribeOut


scidex.update

# write verb
async def scidex_update(
    args: UpdateIn,
    ctx: Context,
) -> UpdateOut: ...

Update mutable fields on an existing artifact (handler-validated).

Input fields

Field Type Required
type string yes
id string yes
patch Patch yes
base_content_hash `string null`
idempotency_key `string null`

Output: UpdateOut


scidex.usage

# read verb
async def scidex_usage(
    args: UsageIn,
    ctx: Context,
) -> UsageOut: ...

Read: current rate-limit, quota, and budget state for an actor.

Input fields

Field Type Required
actor_id `string null`
scopes `list[string] null`

Output: UsageOut


scidex.verbs

# read verb
async def scidex_verbs(
    args: VerbsIn,
    ctx: Context,
) -> VerbsOut: ...

Return the substrate’s verb catalog with input/output schemas.

Input fields

Field Type Required
name_prefix `string null`
include_schemas boolean no

Output: VerbsOut


scidex.vote

# write verb
async def scidex_vote(
    args: VoteIn,
    ctx: Context,
) -> VoteOut: ...

Cast or retract a vote on an artifact. Auth required.

Input fields

Field Type Required
artifact_id string yes
direction string yes
weight number no
outcome_threshold `integer null`

Output: VoteOut