Skip to content

Stdlib Stage Catalogue

Noether ships with 80+ deterministically-identified, Ed25519-signed stdlib stages.

Scalar (5)

Name Input Output Description
text_upper Record { text: Text } Record { text: Text } Uppercase a string
text_lower Record { text: Text } Record { text: Text } Lowercase a string
text_length Record { text: Text } Record { count: Number } Character count
number_round Record { value: Number, places: Number } Record { result: Number } Round to N decimal places
bool_not Record { value: Bool } Record { result: Bool } Boolean NOT

Collections (8)

Name Input Output Description
list_map Record { items: List(Any), fn: Text } Record { items: List(Any) } Apply a transform to each element
list_filter Record { items: List(Any), predicate: Text } Record { items: List(Any) } Filter by predicate
list_sort Record { items: List(Any), key: Text } Record { items: List(Any) } Sort by key
list_take Record { items: List(Any), n: Number } Record { items: List(Any) } Take first N
list_flatten Record { items: List(List(Any)) } Record { items: List(Any) } Flatten one level
list_unique Record { items: List(Any) } Record { items: List(Any) } Deduplicate
map_get Record { map: Map(Any), key: Text } Record { value: Any } Get map value by key
map_keys Record { map: Map(Any) } Record { keys: List(Text) } Extract map keys

Control (6)

Name Input Output Description
identity Any Any Pass-through
const Any Any Return a literal constant
branch Record { condition: Bool, then: Any, else: Any } Any Conditional
retry Record { stage_id: Text, input: Any, max: Number } Any Retry on failure
error Record { message: Text } Null Raise a named error
log Record { message: Text, level: Text } Null Emit a log entry

I/O (8)

Name Input Output Description
http_get Record { url: Text } Record { status: Number, body: Text } HTTP GET
http_post Record { url: Text, body: Text } Record { status: Number, body: Text } HTTP POST
json_parse Record { text: Text } Any Parse JSON string
json_stringify Any Record { text: Text } Serialise to JSON string
file_read Record { path: Text } Record { content: Text } Read file
file_write Record { path: Text, content: Text } Null Write file
env_get Record { key: Text } Record { value: Text } Read environment variable
sleep Record { ms: Number } Null Sleep N milliseconds

LLM Primitives (4)

Name Input Output Description
llm_complete Record { prompt: Text } Record { text: Text } Single-turn LLM completion
llm_embed Record { text: Text } Record { embedding: List(Number) } Text embedding
llm_classify Record { text: Text, labels: List(Text) } Record { label: Text, score: Number } Zero-shot classification
llm_extract Record { text: Text, schema: Text } Any Structured extraction

Data (7)

Name Input Output Description
csv_parse Record { text: Text } Record { rows: List(Map(Text)) } Parse CSV
csv_stringify Record { rows: List(Map(Text)) } Record { text: Text } Serialise to CSV
stats_mean Record { values: List(Number) } Record { mean: Number } Arithmetic mean
stats_stddev Record { values: List(Number) } Record { stddev: Number } Standard deviation
stats_histogram Record { values: List(Number), bins: Number } Record { bins: List(Any) } Histogram
schema_validate Record { value: Any, schema: Text } Record { valid: Bool, errors: List(Text) } JSON Schema validation
diff Record { before: Any, after: Any } Record { changes: List(Any) } Structural diff

Noether Internal (6)

Name Input Output Description
stage_search Record { query: Text, limit: Number } Record { stages: List(Any) } Semantic stage search
stage_get Record { id: Text } Any Get stage by ID
stage_put Any Record { id: Text } Register a stage
composition_run Record { graph: Any } Any Execute a graph
trace_get Record { id: Text } Any Get composition trace
store_stats Null Record { counts: Any } Store statistics

Text Processing (6)

Name Input Output Description
text_split Record { text: Text, sep: Text } Record { parts: List(Text) } Split by separator
text_join Record { parts: List(Text), sep: Text } Record { text: Text } Join with separator
text_trim Record { text: Text } Record { text: Text } Strip whitespace
text_replace Record { text: Text, from: Text, to: Text } Record { text: Text } Find and replace
regex_match Record { text: Text, pattern: Text } Record { matches: List(Text) } Regex match
regex_replace Record { text: Text, pattern: Text, replacement: Text } Record { text: Text } Regex replace

Searching by type

Use noether stage search with a description of what you want. The semantic index understands intent, not just names.

noether stage search "split text into words"