from a2a.server import A2AServer
from a2a.types import AgentCard, Skill, TaskResult, Artifact
# Define your agent card
card = AgentCard(
name="News Salience Filter",
description="Opinionated filter that assesses news materiality",
url="https://your-server.com",
version="1.0.0",
skills=[
Skill(
id="assess_salience",
name="Assess News Salience",
description="Evaluate if news is material to a company",
input_schema={
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"ticker": {"type": "string"}
},
"required": ["ticker"]
},
"news": {
"type": "object",
"properties": {
"headline": {"type": "string"}
},
"required": ["headline"]
}
},
"required": ["company", "news"]
},
output_schema={
"type": "object",
"properties": {
"salience": {
"type": "string",
"enum": ["high", "medium", "low", "noise"]
},
"confidence": {"type": "number"},
"rationale": {"type": "string"}
}
}
)
]
)
# Implement your task handler
async def handle_task(task):
# Parse input
input_data = task.message.parts[0].data
ticker = input_data["company"]["ticker"]
headline = input_data["news"]["headline"]
# Your logic here
result = analyze_salience(ticker, headline)
# Return result
return TaskResult(
status="completed",
artifacts=[
Artifact(
name="salience_result",
parts=[{"type": "data", "data": result}]
)
]
)
# Start server
server = A2AServer(card=card, handler=handle_task)
server.run(port=8000)