Add 22 tools to any AI agent. Works with every framework.
curl -X POST https://tryautropic.com/mcp/weather/tools/call \
-H "Content-Type: application/json" \
-d '{"name":"get_weather","arguments":{"location":"San Francisco"}}'
import requests
from langchain.tools import Tool
def call_autropic(server, tool, args):
r = requests.post(f"https://tryautropic.com/mcp/{server}/tools/call",
json={"name": tool, "arguments": args})
return r.json().get("content", r.json())
# Create tools
weather_tool = Tool(
name="weather",
description="Get current weather for any location",
func=lambda loc: call_autropic("weather", "get_weather", {"location": loc})
)
crypto_tool = Tool(
name="crypto_price",
description="Get cryptocurrency prices",
func=lambda sym: call_autropic("crypto-prices", "get_price", {"symbol": sym})
)
# Use with any LangChain agent
from langchain.agents import create_react_agent
agent = create_react_agent(llm, [weather_tool, crypto_tool], prompt)
Full Integration →
from crewai.tools import BaseTool
import requests
class WeatherTool(BaseTool):
name = "Weather Lookup"
description = "Get current weather for any location"
def _run(self, location: str) -> str:
r = requests.post("https://tryautropic.com/mcp/weather/tools/call",
json={"name": "get_weather", "arguments": {"location": location}})
return str(r.json().get("content"))
class CryptoTool(BaseTool):
name = "Crypto Price"
description = "Get cryptocurrency prices (BTC, ETH, etc)"
def _run(self, symbol: str) -> str:
r = requests.post("https://tryautropic.com/mcp/crypto-prices/tools/call",
json={"name": "get_price", "arguments": {"symbol": symbol}})
return str(r.json().get("content"))
# Use with CrewAI
from crewai import Agent
researcher = Agent(
role='Research Assistant',
tools=[WeatherTool(), CryptoTool()],
...
)
Full Integration →
# Add to autogpt_platform/backend/backend/blocks/autropic.py
from backend.data.block import Block, BlockCategory, BlockOutput, BlockSchema
from backend.data.model import SchemaField
import requests
class AuotropicWeatherBlock(Block):
class Input(BlockSchema):
location: str = SchemaField(description="City or location")
class Output(BlockSchema):
weather: str = SchemaField(description="Weather data")
error: str = SchemaField(description="Error if failed")
def __init__(self):
super().__init__(
id="autropic-weather",
description="Get current weather (via Autropic)",
categories={BlockCategory.TOOLS},
input_schema=self.Input,
output_schema=self.Output,
)
def run(self, input_data, **kwargs):
try:
r = requests.post("https://tryautropic.com/mcp/weather/tools/call",
json={"name": "get_weather",
"arguments": {"location": input_data.location}})
yield "weather", str(r.json().get("content"))
except Exception as e:
yield "error", str(e)
Full Integration →
import openai
import requests
# Define functions
functions = [{
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"]
}
}]
# Handle function calls
def handle_function(name, args):
endpoints = {
"get_weather": ("weather", "get_weather"),
"get_crypto": ("crypto-prices", "get_price"),
"calculate": ("calculator", "evaluate"),
}
server, tool = endpoints[name]
r = requests.post(f"https://tryautropic.com/mcp/{server}/tools/call",
json={"name": tool, "arguments": args})
return r.json()
# Use with OpenAI
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
functions=functions
)
if response.choices[0].message.function_call:
fc = response.choices[0].message.function_call
result = handle_function(fc.name, json.loads(fc.arguments))
print(result)
// Works in Node.js, Deno, Bun, browsers
async function callTool(server, tool, args) {
const res = await fetch(`https://tryautropic.com/mcp/${server}/tools/call`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: tool, arguments: args })
});
return res.json();
}
// Usage
const weather = await callTool('weather', 'get_weather', { location: 'NYC' });
const btcPrice = await callTool('crypto-prices', 'get_price', { symbol: 'BTC' });
const calc = await callTool('calculator', 'evaluate', { expression: '2^10' });
console.log(weather.content); // { temperature: 45, conditions: 'Cloudy', ... }
console.log(btcPrice.content); // { symbol: 'BTC', price: 97500, ... }
console.log(calc.content); // 1024
# Or install the npm package
npm install autropic-tools
const { weather, crypto, search } = require('autropic-tools');
const wx = await weather('London');
const btc = await crypto('BTC');
POST https://tryautropic.com/mcp/{server}/tools/call
Content-Type: application/json
{
"name": "{tool_name}",
"arguments": { ... }
}
# Weather
POST /mcp/weather/tools/call
{"name": "get_weather", "arguments": {"location": "Paris"}}
# Time
POST /mcp/time/tools/call
{"name": "get_current_time", "arguments": {"timezone": "Europe/London"}}
# Crypto
POST /mcp/crypto-prices/tools/call
{"name": "get_price", "arguments": {"symbol": "ETH"}}
# Calculator
POST /mcp/calculator/tools/call
{"name": "evaluate", "arguments": {"expression": "sqrt(144) * 3"}}
# Discover tools by need
GET /discover?q=convert+currency