use adk_core::{Result, Tool, ToolContext};
use async_trait::async_trait;
use serde_json::{Value, json};
use std::sync::Arc;
#[derive(Default)]
pub struct UrlContextTool;
impl UrlContextTool {
pub fn new() -> Self {
Self
}
}
#[async_trait]
impl Tool for UrlContextTool {
fn name(&self) -> &str {
"url_context"
}
fn description(&self) -> &str {
"Fetches and analyzes content from URLs to provide context."
}
fn is_builtin(&self) -> bool {
true
}
fn declaration(&self) -> Value {
json!({
"name": self.name(),
"description": self.description(),
"x-adk-gemini-tool": {
"url_context": {}
}
})
}
async fn execute(&self, _ctx: Arc<dyn ToolContext>, _args: Value) -> Result<Value> {
Err(adk_core::AdkError::tool("UrlContext is handled internally by Gemini"))
}
}