Skip to content

Tools

Expose local capabilities and apply contracts (5–8 minutes).


Example

from alloy import command, tool @tool def word_count(text: str) -> int: return len(text.split()) @command(tools=[word_count]) def analyze(text: str) -> str: return f"Use word_count(text), then suggest one clarity improvement.\\nText: {text}" print(analyze("Alloy makes typed AI functions feel like normal Python.")) 

Expected: a short analysis referencing the word count.

Safety: prefer small, idempotent tools with clear messages in @require/@ensure.

See also: Guide → Contracts (guide/contracts.md) and Design by Contract.