新たな垂直分野向けデザインパートナーを募集 — 新しい業界を開拓し、プラットフォームを半額でご利用いただけます

Tools API

Nexevo は REST の Tools API を提供しており、任意のエージェントフレームワークの SDK——LangChain、Anthropic、LlamaIndex、Gemini、カスタムクライアント——が、そのフレームワークが既に話す通信フォーマットでワークスペースのツールの安全なサブセットを利用できます。

概要

Tools API は MCP サーバー の REST 版の補完です。MCP ネイティブのクライアント(Claude Desktop、Cursor)には MCP を使い、フレームワーク固有のツール呼び出しフォーマットでプレーンな REST JSON が欲しい場合は Tools API を使います。

エンドポイント

3 つの REST エンドポイントがあり、いずれもワークスペースの API キーで認証します:

  • GET /v1/tools?format=openai——要求した通信フォーマットで、利用可能なすべてのツールスキーマを一覧表示します。

  • GET /v1/tools/{name}?format=anthropic——1 つのツールのスキーマ。

  • POST /v1/tools/{name}/invoke——引数を渡してツールを実行します。

認証

REST API と同じワークスペース API キーAuthorization ヘッダーに設定して使用します。このキーは呼び出しを 1 つのワークスペースに紐づけます——クライアントが見られるのはそのワークスペースのツールとデータだけです。

http
Authorization: Bearer sk-ws-...

公開されるもの

エージェントのツールセットのうち、安全で、読み取り/計算専用のサブセットのみが利用可能です(MCP サーバーと同じ範囲):

  • Web リサーチ——検索、ページの読み取り、スクレイプ、PDF/ドキュメントの読み取り、画像の OCR。

  • オープンデータ——arXiv、SEC EDGAR、World Bank、OECD、市場データ、RSS。

  • あなたのワークスペースのナレッジ——長期記憶とアップロードされたナレッジに対する rag_search

  • 計算——電卓、単位変換、その他の純粋なヘルパー。

生成、メール、ブラウザ、コネクタ、SQL、破壊的な操作は公開されません——外部クライアントは読み取って推論することはできますが、消費や変更はできません。

通信フォーマット

format クエリパラメータでツールスキーマのシリアライズ方法を選びます。ご自身のフレームワークの SDK が期待するものを選んでください:

format

スキーマフィールド

用途

openai(デフォルト)

parameters

OpenAI Chat Completions、LangChain

openai_responses

parameters(フラット)

OpenAI Responses API

anthropic

input_schema

Anthropic Messages API

mcp

inputSchema

MCP 互換クライアント

gemini

parameters

Google Gemini FunctionDeclarations

ツールの一覧

bash
curl https://nexevo.ai/v1/tools?format=anthropic \
  -H "Authorization: Bearer sk-ws-..."
json
{
  "tools": [
    {
      "name": "web_search",
      "description": "Search the public web ...",
      "input_schema": {
        "type": "object",
        "properties": { "query": { "type": "string" } },
        "required": ["query"]
      }
    }
  ],
  "format": "anthropic"
}

ツールの呼び出し

bash
curl -X POST https://nexevo.ai/v1/tools/web_search/invoke \
  -H "Authorization: Bearer sk-ws-..." \
  -H "Content-Type: application/json" \
  -d '{"arguments": {"query": "latest LLM benchmarks"}}'
json
{
  "content": "{\"count\": 5, \"results\": [...]}",
  "ok": true,
  "error_kind": "",
  "artifacts": []
}

ツールのエラーは ok: falseerror_kindtimeoutexception)、人間が読める content を返します——HTTP エラーにはならないため、呼び出し側のエージェントが自ら反応できます。

フレームワーク連携

典型的な連携パターン:ツール一覧を一度取得し、フレームワークのツール呼び出し API に渡し、モデルが発行する各ツール呼び出しを POST /v1/tools/{name}/invoke にルーティングします。

Anthropic SDK

python
import anthropic, httpx

client = anthropic.Anthropic()
BASE = "https://nexevo.ai/v1"
HEADERS = {"Authorization": "Bearer sk-ws-..."}

# 1. fetch tools in Anthropic format
tools = httpx.get(f"{BASE}/tools", params={"format": "anthropic"}, headers=HEADERS).json()["tools"]

# 2. let Claude pick a tool, then execute it via Nexevo
msg = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "What's in my knowledge base about Q3?"}],
)
for block in msg.content:
    if block.type == "tool_use":
        r = httpx.post(f"{BASE}/tools/{block.name}/invoke",
                       headers=HEADERS, json={"arguments": block.input})
        print(r.json()["content"])

OpenAI/LangChain

python
import httpx
from langchain_core.tools import StructuredTool

BASE = "https://nexevo.ai/v1"
HEADERS = {"Authorization": "Bearer sk-ws-..."}

# fetch in OpenAI format, wrap each as a LangChain tool
raw = httpx.get(f"{BASE}/tools", params={"format": "openai"}, headers=HEADERS).json()["tools"]

def make_executor(name):
    def _run(**kwargs):
        r = httpx.post(f"{BASE}/tools/{name}/invoke", headers=HEADERS, json={"arguments": kwargs})
        return r.json()["content"]
    return _run

tools = [
    StructuredTool.from_function(
        func=make_executor(t["function"]["name"]),
        name=t["function"]["name"],
        description=t["function"]["description"],
        # args_schema can be derived from t["function"]["parameters"]
    )
    for t in raw
]