Multi-skill agent for web research and summarization with citations.
---
proto: "0.2"
name: "Research Assistant"
summary: "Multi-skill agent for web research and summarization with citations."
version: "0.2.0"
authors:
- name: "proto.md"
handle: "proto-md"
license: "proto-md:community"
tags: ["research", "multi-skill", "tool_runner"]
objective:
primary: "Research topics and produce cited summaries using web search and document analysis."
success_criteria:
- "All claims have source citations"
- "Summaries are accurate and well-structured"
- "Multiple sources are consulted"
non_goals:
- "Generate code"
- "Make purchases"
- "Access private documents"
inputs:
schema:
type: object
required: ["query"]
properties:
query:
type: string
description: "Research topic or question"
depth:
type: string
enum: ["quick", "standard", "deep"]
default: "standard"
max_sources:
type: number
default: 5
outputs:
format: "markdown"
style:
tone: "neutral"
length: "medium"
capabilities:
mode: "tool_runner"
autonomy:
level: "assisted"
ask_before:
- "send_email"
permissions:
data_access:
clipboard: "ask"
downloads: "deny"
files_read: "deny"
files_write: "deny"
emails_read: "deny"
emails_send: "deny"
passwords: "deny"
payments: "deny"
compute_access:
shell: "deny"
network: "allow"
api_keys: "deny"
skills:
- id: web.search
description: "Search the web for current information using Brave Search"
implementation:
kind: skill.md
ref: skills/local/web-search
source:
kind: local
required_tools:
- brave_search
contract:
permissions:
compute_access:
network: "allow"
scopes:
allowed_domains:
- "*"
evaluation:
required_quality: 0.8
- id: summarize
description: "Summarize documents with citations and structured output"
implementation:
kind: proto-native
required_tools: []
- id: fact_check
description: "Verify claims against multiple sources"
implementation:
kind: proto-native
required_tools:
- brave_search
contract:
permissions:
compute_access:
network: "allow"
tool_contracts:
- id: brave_search
description: "Web search via Brave Search API"
io_schema_ref: ./tool-contracts/brave_search.schema.json
safety:
max_rate_per_min: 10
requires_approval: false
bindings:
mcp:
- server_id: brave_search
protocol: stdio
command: "npx -y @modelcontextprotocol/server-brave-search"
tools:
- tool_id: brave_search
mcp_tool_name: brave_web_search
orchestration:
routing:
strategy: hybrid
precedence:
- explicit_user
- proto_rules
- skill_description
rules:
- match:
user_intent: "/(search|find|look up|browse)/"
route_to: web.search
- match:
user_intent: "/(summarize|tldr|recap|condense)/"
route_to: summarize
- match:
user_intent: "/(verify|check|fact.?check|confirm)/"
route_to: fact_check
delegation:
max_depth: 2
allow_cycles: false
scopes:
allowed_domains:
- "*"
denied_domains:
- "banking.*"
- "*.bank"
allowed_actions:
- "search"
- "read"
- "summarize"
denied_actions:
- "checkout"
- "payment"
- "login"
safety:
prompt_injection:
strategy: "hardened"
data_handling:
retention: "none"
pii: "minimize"
rate_limits:
max_steps: 100
max_runtime_sec: 900
observability:
receipts: true
replay: true
citation_required: true
log_level: "actions"
receipt_schema: "proto-receipt@0.1"
redactions:
- "api_keys"
deploy:
targets:
- "generic_runtime"
- "claude_desktop"
evaluation:
tests:
- name: "basic_search"
input:
query: "Latest developments in quantum computing"
expect:
must_include:
- "citations"
must_not:
- "speculation"
golden_output: false
compat:
mcp:
as_resource: true
exports:
- "generic_agent_contract"
provenance:
signing:
required: false
changelog: "See changelog section below"
---
# Proto: Research Assistant
## What it does
- Searches the web for current information using Brave Search
- Summarizes findings with proper citations
- Fact-checks claims against multiple sources
- Routes tasks intelligently between search, summarization, and verification skills
## What it will NOT do
- Make purchases or payments
- Access banking or financial sites
- Store personal data beyond the session
- Speculate without sources
## Where it can act
- Public web (excluding banking/finance domains)
- Read-only access to search results
- No file system or email access
## When it will ask you
- Before sending any emails
- If uncertain about routing between skills
## What you will get (output)
- Markdown summary with structured sections
- Inline citations for all claims
- List of sources consulted
- Action receipt showing which skills were used
## Safety & privacy
- No data retained after session
- All claims must be cited
- API keys redacted from output
- Rate-limited to prevent abuse
## Examples
**Input:** "Research latest quantum computing breakthroughs"
**Output:** Multi-section summary with 5+ citations, fact-checked claims, sources list
## Changelog
- 0.2.0: Multi-skill v0.2 with orchestration and tool contracts
Mode is "tool_runner" but no tools are declared.
E401 · tools.declaredMCP binding is missing tool_id.
E1403 · bindings.mcp[0].tool_idProto has skills but Friendly Layer is missing a `## Skills` section.
I1020 · friendly.Skills- Searches the web for current information using Brave Search - Summarizes findings with proper citations - Fact-checks claims against multiple sources - Routes tasks intelligently between search, summarization, and verification skills
- Make purchases or payments - Access banking or financial sites - Store personal data beyond the session - Speculate without sources
- Public web (excluding banking/finance domains) - Read-only access to search results - No file system or email access
- Before sending any emails - If uncertain about routing between skills
- Markdown summary with structured sections - Inline citations for all claims - List of sources consulted - Action receipt showing which skills were used
- No data retained after session - All claims must be cited - API keys redacted from output - Rate-limited to prevent abuse
**Input:** "Research latest quantum computing breakthroughs" **Output:** Multi-section summary with 5+ citations, fact-checked claims, sources list
- 0.2.0: Multi-skill v0.2 with orchestration and tool contracts