46 lines
1.6 KiB
Python
Executable File
46 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
PreToolUse hook: intercept mcp__tavily__tavily-extract
|
|
- Block GitHub URLs and suggest using GitHub MCP tools instead
|
|
- Otherwise, upgrade extract_depth to "advanced"
|
|
"""
|
|
import json
|
|
import sys
|
|
|
|
try:
|
|
data = json.load(sys.stdin)
|
|
tool_input = data["tool_input"]
|
|
urls = tool_input.get("urls", [])
|
|
|
|
# Check for GitHub URLs
|
|
github_domains = ("github.com", "raw.githubusercontent.com", "gist.github.com")
|
|
github_urls = [url for url in urls if any(domain in url for domain in github_domains)]
|
|
|
|
if github_urls:
|
|
# Block and suggest GitHub MCP tools
|
|
print(json.dumps({
|
|
"systemMessage": "GitHub URL detected in Tavily extract tool. AI is directed to use GitHub MCP tools instead.",
|
|
"hookSpecificOutput": {
|
|
"hookEventName": "PreToolUse",
|
|
"permissionDecision": "deny",
|
|
"permissionDecisionReason": "GitHub URL detected. Please use GitHub MCP tools (mcp__github__*) for more robust data retrieval."
|
|
},
|
|
}, separators=(',', ':')))
|
|
sys.exit(2)
|
|
|
|
# Always ensure extract_depth="advanced" for non-GitHub URLs
|
|
tool_input["extract_depth"] = "advanced"
|
|
|
|
# Allow the call to proceed
|
|
print(json.dumps({
|
|
"hookSpecificOutput": {
|
|
"hookEventName": "PreToolUse",
|
|
"permissionDecision": "allow",
|
|
"permissionDecisionReason": "Automatically upgrading Tavily extract to advanced mode for better content extraction"
|
|
}
|
|
}, separators=(',', ':')))
|
|
sys.exit(0)
|
|
|
|
except (KeyError, json.JSONDecodeError) as err:
|
|
print(f"hook-error: {err}", file=sys.stderr)
|
|
sys.exit(1) |