/waveassist

The waveassist SDK.

The Python library your agent imports. Your coding agent writes against it; this is what it's writing.

Install

Agents built over MCP already run against the SDK, so you rarely install it by hand. When you do, work locally, or read the source:

Call init() once at the top of every node. It resolves your credentials from arguments, environment variables, or a local .env.

Anatomy of an agent

An agent is a Python module WaveAssist runs on a schedule. Your coding agent writes it; these are the parts it uses.

run()The entry point the scheduler calls on every fire.
fetch_dataPull inputs and the last run's output.
call_llmWrapped, schema-locked intelligence. Typed JSON out.
outputPost, email, or publish the result.
store_dataPersist what the next run needs.
is_test_runTrue on the verify run, before the schedule arms.

State

store_data and fetch_data carry values between runs, so each fire resumes from the last instead of starting cold. Values can be strings, JSON-serializable objects, or pandas DataFrames. Pass run_based=True to scope a value to a single run.

Full signatures on the API reference.

Intelligence

call_llm is the one place the model runs at runtime. It takes a response_model, a Pydantic class, and returns a typed instance of it. The model fills the content; the schema locks the shape. That is what makes the output deterministic in structure, run after run.

Guard side effects during the verify pass with is_test_run(), which is True on the dry run before the schedule arms.

Output

Ship results with the output helpers: send_email for HTML mail, and publish_dashboard to store an HTML dashboard and get back a public shareable URL.