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.