The Web voice ships three tools: web_search (Brave/Serper/DuckDuckGo, auto-selected by available API keys), fetch_url, and fetch_sitemap. Every result includes citation metadata so the agent can attribute claims back to a source URL. Results are LRU-cached to keep cost bounded.
Score file
import { defineScore, AnthropicProvider } from '@tuttiai/core'
import { WebVoice } from '@tuttiai/web'
export default defineScore({
provider: new AnthropicProvider(),
agents: {
researcher: {
name: 'researcher',
model: 'claude-sonnet-4-6',
system_prompt:
'You answer research questions with citations. Use web_search to find sources, fetch_url to read them, and quote the source URL alongside every claim.',
voices: [new WebVoice()],
permissions: ['network'],
},
},
}) How to run it
- 01 Scaffold a project:
npx tutti-ai init my-web-research - 02 Install voices:
npm i @tuttiai/web - 03 Drop the score above into
tutti.score.ts, set the env vars in.env, and runtutti-ai run.
Why this is safe
-
cite every claim -
rate-limit web_search via voice config