What is Claude Tool Use?
Anthropic's Claude API with tool use for building AI assistants that can call external APIs and functions.
Searching X (Twitter) with Claude Tool Use
This integration lets your Claude Tool Use agent search X (Twitter) in real time via the Scavio API. The agent gets back structured JSON with post snippets, author handles, timestamps, engagement signals — ready for reasoning and decision-making.
Setup
pip install anthropic requestsCode Example
Here is a complete Claude Tool Use agent that searches X (Twitter) using Scavio:
import anthropic
import requests
import json
client = anthropic.Anthropic()
def scavio_search(query: str) -> str:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": "your_scavio_api_key", "Content-Type": "application/json"},
json={"query": query},
)
return json.dumps(response.json())
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=4096,
tools=[{
"name": "scavio_search",
"description": "Search X (Twitter) for real-time results",
"input_schema": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"],
},
}],
messages=[{"role": "user", "content": "site:x.com AI agents 2026"}],
)
for block in response.content:
if block.type == "tool_use":
result = scavio_search(block.input["query"])
print(result[:500])
elif block.type == "text":
print(block.text)Full Working Example
A production-ready example with error handling:
import anthropic
import requests
import json
client = anthropic.Anthropic()
def scavio_search(query: str) -> str:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": "your_scavio_api_key", "Content-Type": "application/json"},
json={"query": query},
)
return json.dumps(response.json())
tools = [{
"name": "scavio_search",
"description": "Search X (Twitter) for real-time results",
"input_schema": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"],
},
}]
messages = [{"role": "user", "content": "site:x.com AI agents 2026"}]
response = client.messages.create(model="claude-sonnet-4-20250514", max_tokens=4096, tools=tools, messages=messages)
# Handle tool use loop
if response.stop_reason == "tool_use":
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = scavio_search(block.input["query"])
tool_results.append({"type": "tool_result", "tool_use_id": block.id, "content": result})
messages.append({"role": "user", "content": tool_results})
final = client.messages.create(model="claude-sonnet-4-20250514", max_tokens=4096, tools=tools, messages=messages)
print(final.content[0].text)Pricing
Scavio offers a free tier with 500 credits/month (1 credit per search). No credit card required. This is enough to build and test your Claude Tool Use integration. Paid plans start at $30/month for higher volumes.