import os
import json
import uuid
import requests
from langchain_core.tools import tool
KOVREX_API_KEY = os.getenv("KOVREX_API_KEY")
KOVREX_BASE_URL = os.getenv("KOVREX_BASE_URL", "https://gateway.kovrex.ai")
KOVREX_AGENT_SLUG = os.getenv("KOVREX_AGENT_SLUG", "news-salience")
RPC_URL = f"{KOVREX_BASE_URL}/a2a/{KOVREX_AGENT_SLUG}/rpc"
@tool
def kovrex_a2a_tool(payload: dict) -> str:
"""Send structured data to a Kovrex agent via A2A JSON-RPC."""
if not KOVREX_API_KEY:
return json.dumps({"error": "KOVREX_API_KEY not configured"})
task_id = f"task-{uuid.uuid4().hex[:8]}"
request_payload = {
"jsonrpc": "2.0",
"id": f"langgraph-{task_id}",
"method": "tasks/send",
"params": {
"id": task_id,
"message": {
"role": "user",
"parts": [
{"type": "data", "data": payload}
],
},
},
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {KOVREX_API_KEY}",
}
resp = requests.post(RPC_URL, json=request_payload, headers=headers, timeout=120)
resp.raise_for_status()
result = resp.json()
if "result" in result:
return json.dumps(result["result"], indent=2)
return json.dumps(result, indent=2)