Deterministic execution
The same input produces the same output. No randomness. No hidden state.
Public deterministic execution toolkit
Run calculations, transform data, process text, analyze images, and execute workflows using stateless tools designed for reliable chaining.
CodableAI is offered by Stacksona as a way to make AI agent outputs more deterministic and transparent in processing.
The same input produces the same output. No randomness. No hidden state.
Every tool publishes typed inputs and outputs so agents can validate compatibility before execution.
Chain tools together, branch with switch routing, inspect structured execution traces, or build workflows visually in Chain Studio.
Filters arrays using deterministic comparison operators and optional value normalization.
Inputs: items:array, field:text, operator:text, value:integer
Transforms selected object fields using deterministic operations such as trim, lowercase, uppercase, number, and date normalization.
Inputs: items:array, mappings:array
Sorts arrays of primitives or objects by one or more keys deterministically.
Inputs: items:array, key:text, direction:text
Deduplicates arrays of primitives or objects by a selected key or full canonical value.
Inputs: items:array, key:text
Canonicalizes company names by stripping legal suffixes and punctuation.
Inputs: name:text
Parses symbols and codes into normalized currency amounts.
Inputs: value:text
Normalizes common date formats into ISO 8601 dates.
Inputs: value:text
Evaluates arithmetic expressions and returns full intermediate work.
Inputs: expression:text
Safely evaluates expressions with math functions and shows the work.
Inputs: expression:text
Evaluates common financial formulas with full substitution steps.
Inputs: mode:text, principal:integer, rate:number, periods:integer
Performs exact decimal arithmetic using rational math and shows the work.
Inputs: expression:text
Performs matrix operations and shows row by row work.
Inputs: mode:text, a:array, b:array
Computes percentage change, margin, and simplified ratios with work.
Inputs: mode:text, a:integer, b:integer
Computes descriptive statistics and shows formulas and substitutions.
Inputs: values:array
Converts units and shows formulas and factor substitutions.
Inputs: value:integer, from:text, to:text
Normalizes CSV text passed inline in JSON into typed rows with canonical headers.
Inputs: csv:text
Deduplicates records by canonical key or selected fields.
Inputs: records:array, keys:array
Splits text into deterministic overlapping chunks.
Inputs: text:text, chunk_size:integer, overlap:integer
Turns HTML into headings, paragraphs, tables, and links using deterministic parsing rules.
Inputs: html:text
Extracts visible text from text based PDF content passed inline as text or base64 in a stateless JSON request.
Inputs: pdf_base64:base64_or_text
Extracts tabular rows from HTML tables, CSV, TSV, or pipe tables passed inline in JSON.
Inputs: csv:text
Converts common HTML structures into deterministic markdown while preserving links and headings.
Inputs: html:text
Converts safe markdown features into deterministic HTML without external libraries.
Inputs: markdown:text
Creates a deterministic evidence package from a tool invocation.
Inputs: tool_id:text, input:object, output:object, timestamp:text
Reads a base64 image string, reports MIME type, payload size, and byte estimate without decoding pixels.
Inputs: base64:base64
Adds up to 10 labeled and colored bounding boxes to a base64 portable anymap image using exact coordinates and returns the annotated image.
Inputs: base64:base64_image, boxes:list, stroke_width:integer
Crops a base64 portable anymap image using exact x, y, width, and height values and returns a new base64 image.
Inputs: base64:base64, x:integer, y:integer, width:integer
Parses a base64 portable anymap image in P2 or P3 form and returns exact dimensions, channels, and max value.
Inputs: base64:base64
Inverts every channel in a base64 portable anymap image against the declared max value.
Inputs: base64:base64
Applies deterministic binary thresholding to a base64 portable anymap image and returns a base64 P2 output.
Inputs: base64:base64, threshold:integer
Converts a base64 portable anymap image from exact P3 RGB values into deterministic P2 grayscale output.
Inputs: base64:base64
Flattens nested objects and arrays into deterministic dotted path keys.
Inputs: data:object
Merges two JSON objects using deterministic shallow or deep merge rules.
Inputs: left:object, right:object, mode:text
Reads values using deterministic dotted and bracketed path expressions.
Inputs: data:object, path:text
Selects only named fields or paths from an object or array of objects.
Inputs: data:object, fields:array
Repairs common malformed JSON such as trailing commas and smart quotes.
Inputs: text:text
Rebuilds nested JSON objects from dotted and bracketed path keys.
Inputs: flat:object
Computes quartiles, percentiles, z-scores, and variance metrics deterministically.
Inputs: values:array, value:integer
Computes future value, contribution growth, and CAGR using deterministic formulas with visible work.
Inputs: principal:integer, rate:number, periods:integer, contribution:integer
Computes days, weeks, months, years, and business days between two ISO dates.
Inputs: start_date:text, end_date:text
Computes periodic payment, total payment, total interest, and amortization preview with formula steps.
Inputs: principal:integer, annual_rate:number, periods:integer
Computes percentage of, percent change, margin, and markup with visible work steps.
Inputs: mode:text, base:integer, value:integer
Computes sum, average, min, max, median, range, and cumulative totals for numeric arrays.
Inputs: values:array
Runs deterministic regular expression extraction with optional capture groups.
Inputs: text:text, pattern:text
Extracts fields from text using ordered deterministic rules.
Inputs: text:text, rules:array
Fetches a URL and returns HTML, stripped text, headers, and status without storing request state.
Inputs: url:url, max_chars:integer
Fetches a page and extracts title, description, og tags, and canonical URL in a stateless request.
Inputs: url:url
Deterministically ranks a provided corpus or fetched page set for a query. For production, plug in your search adapter.
Inputs: query:text, documents:array
Computes deterministic line and word diffs with additions, removals, and similarity.
Inputs: left:text, right:text
Normalizes whitespace, line endings, tabs, and invisible spacing characters.
Inputs: text:text, collapse_blank_lines:boolean
Computes deterministic Jaccard, overlap, and cosine-like frequency similarity for two texts.
Inputs: left:text, right:text
Counts characters, words, lines, bytes, and estimated tokens for common model families.
Inputs: text:text
Deterministically truncates text by characters, words, lines, or sentences.
Inputs: text:text, mode:text, limit:integer
Returns normalized word frequencies with deterministic stopword removal and sorting.
Inputs: text:text, top_n:integer
Generates md5, sha256, or sha1 hashes for text content.
Inputs: text:text, algorithm:text
Detects file type from filename, mime hints, or magic bytes.
Inputs: filename:text
Detects language with rule based stopword scoring.
Inputs: text:text
Checks whether required items are satisfied by provided items.
Inputs: required:array, provided:array
Validates data against a practical subset of JSON Schema.
Inputs: schema:object, data:object
Parses a URL into protocol, hostname, subdomain, root domain, path, query, and fragment.
Inputs: url:url
Extracts links, anchor text, rel values, and internal or external classification from HTML.
Inputs: html:text, base_url:url
Reads, adds, removes, sorts, and normalizes URL query parameters deterministically.
Inputs: url:url, mode:text
Parses robots.txt into structured user-agent allow, disallow, sitemap, and crawl-delay rules.
Inputs: text:text
Parses sitemap XML into URL entries with lastmod, priority, and changefreq fields.
Inputs: xml:text
Compares one value to another and selects the next chain link based on deterministic branch rules.
Inputs: left:any, operator:text, right:any, value:any