Vesper REST API Skills
A ready-to-use skill set that calls Vesper via REST API and returns structured JSON.
Environment
Self-hosted (recommended today): run the MCP server in HTTP mode (vespermcp --http, default port 8787), then point clients at http://127.0.0.1:8787 and use POST /v1/tools/call with the same tool names as MCP (see @vespermcp/mcp-server docs / docs/configuration.md).
Set these environment variables before using the skill script helpers (which still assume path-style endpoints unless you override them):
export VESPER_API_URL="https://your-vesper-host"
export VESPER_API_KEY="vesper_sk_..."
Auth header used for every request:
Authorization: Bearer VESPER_API_KEY
Skill Set
search_datasets- Find datasets by query.download_dataset- Download dataset by ID.clean_dataset- Run cleaning pipeline.analyze_quality- Return quality report.export_dataset- Export dataset to target format.
Endpoints
Default endpoint mapping:
search_datasets->/api/search_datasetsdownload_dataset->/api/download_datasetclean_dataset->/api/clean_datasetanalyze_quality->/api/analyze_qualityexport_dataset->/api/export_dataset
You can override each endpoint via env vars:
VESPER_ENDPOINT_SEARCH_DATASETSVESPER_ENDPOINT_DOWNLOAD_DATASETVESPER_ENDPOINT_CLEAN_DATASETVESPER_ENDPOINT_ANALYZE_QUALITYVESPER_ENDPOINT_EXPORT_DATASET
File
Implementation is in vesper-rest-skills.js.
Usage
import {
createVesperSkills,
createOpenAIFunctions,
createClaudeTools,
createLangChainTools,
createLangChainDynamicStructuredTools,
} from "./.agents/skills/vesper-rest-api/vesper-rest-skills.js";
const skills = createVesperSkills();
const search = skills.find((s) => s.name === "search_datasets");
const result = await search.invoke({ query: "medical imaging", limit: 5 });
console.log(result);
OpenAI Function Calling
const openAIFunctions = createOpenAIFunctions();
Returns:
type: "function"- function
name - function
description - JSON-schema
parameters
Claude Tool Use
const claudeTools = createClaudeTools();
Returns:
- tool
name - tool
description input_schema
LangChain Tools
const langchainTools = createLangChainTools();
Each tool object includes:
namedescription- Zod
schema invoke(input)-> structured JSON
If you want native LangChain DynamicStructuredTool objects:
const dynamicTools = await createLangChainDynamicStructuredTools();
Structured JSON Output
All skill calls return a consistent JSON envelope:
{
"skill": "search_datasets",
"status": "success",
"...": "endpoint-specific payload"
}
Source: sutaniese/Vesper — distributed by TomeVault.