Weave

Weave Capability Catalog

The catalog is how agents become discoverable and connectable. Every Weave agent publishes a manifest (its ports + capability tags); the catalog defines the shared vocabulary so a Router can match one agent's output to another's input.

Agent manifest

Every agent emits a portable manifest via agent.manifest() (also written into the .weave.zip produced by weave package):

{
  "name": "summarizer",
  "input_schema":  { "type": "text", "shape": null, "format": "markdown", "description": "" },
  "output_schema": { "type": "structured_json", "shape": { "summary": "str" }, "format": null, "description": "" },
  "capability_tags": ["summarization", "english"]
}

Standard data types

TypeValue (Python)Common use
textstrprompts, summaries, reports
structured_jsondictdata extraction, structured output
imagestr \bytesvision, document parsing
codestrcode gen / review / execution
audiostr \bytesvoice input, transcription
documentstr \bytesdocument analysis, drafting
embeddinglist[float]semantic search, RAG
streamasync/sync iteratorlive, long-form output

Type compatibility graph

A source type can feed a target type directly (identical) or via an auto-injected transform (compatible). Anything not listed is incompatible and rejected at connect time.

Source → TargetTransformLLM needed
textstructured_jsonextraction prompt → JSONyes
textcoderetagno
codetextretagno
structured_jsontextjson.dumpsno
streamtextjoin tokensno
documenttextpassthroughno

Extend it with register_transform(SOURCE, TARGET, fn) and a row in the compatibility map in weave/types/primitives.py.

Capability-tag vocabulary

Tags are free-form semantic labels, but a shared vocabulary improves match quality. The Router ranks candidates by tag overlap (swap in embedding similarity via score_fn).

FamilyExample tags
Functionsummarization, extraction, classification, translation, generation, review, routing
Domainweb_search, code, legal, medical, finance, support
Modalityvision, audio, speech, document
Languageenglish, arabic, spanish, multilingual
I/O shaperag, structured_output, streaming

Conventions

  • Lowercase, snake_case, singular where natural (web_search, not WebSearches).
  • Prefer a function tag and a domain/modality tag (["summarization", "legal"]).
  • Don't encode the LLM or framework in a tag. That's private to the agent.

Reference agents

A minimal starter catalog you can build against (see examples/):

Agentinput → outputTags
cleanertexttext["text", "clean"]
countertextstructured_json["text", "stats"]
summarizertexttext["summarization"]