QuantPlace Developer Hub
Let AI agents search and preview trading datasets inside your IDE — and automate dataset updates from cron jobs or Python scripts.
AI Agent Integration
Available tools
search_datasetsSearch by title, category, tags, and max price. Returns structured results with IDs, ratings, and sales stats.
Params: query, category, tags, max_price, limit
get_dataset_metadataFull metadata: column names extracted from the preview CSV, description, price, validation report summary, and vendor ID.
Params: dataset_id
get_preview_sampleFetches the auto-generated 50-row preview and returns it as a markdown table — readable directly in the agent's context window.
Params: dataset_id
get_vendor_profileSeller rating (verified buyers only), bio, member since date, and active listings — trust signals alongside dataset recommendations.
Params: vendor_id
get_my_purchasesList all datasets purchased by the authenticated user. Requires an API key. Returns title, status, amount, and escrow release date.
Requires API keyParams: api_key
get_download_urlGet a 15-minute presigned download URL for a purchased dataset. Returns a ready URL or a 'preparing' status with retry guidance.
Requires API keyParams: api_key, dataset_id
Installation
$ git clone https://github.com/KuroskeNB/quantplace-mcp $ cd quantplace-mcp $ pip install -r requirements.txt
$ python server.py # Server starts and waits for MCP messages on stdio
Connect to your IDE
Replace /absolute/path/to/quantplace-mcp/server.py with the actual path on your machine.
{
"mcpServers": {
"quantplace": {
"command": "python",
"args": [
"/absolute/path/to/quantplace-mcp/server.py"
],
"env": {
"QUANTPLACE_API_URL": "https://api.quantplace.io/api/v1"
}
}
}
}Example agent workflow
search_datasets(query="BTC", category="orderbook_l2", max_price=50)
Returns matching datasets with IDs and stats
get_dataset_metadata(dataset_id from step 1)
Columns: timestamp, bid_price, bid_size, ask_price, ask_size
get_preview_sample(dataset_id from step 1)
Agent sees 50 real rows → generates parsing code before you buy
get_vendor_profile(vendor_id from metadata)
Rating 4.8/5 (23 reviews) — trust signals alongside recommendation
Programmatic Dataset Updates
Keep dynamic datasets fresh without touching the UI. One API call — upload your zip, the backend handles R2 and validation automatically. Column mapping is inherited from your active version. Requires a vendor API key or JWT.
How it works
POST /datasets/{id}/auto-updateUpload your .zip as multipart. Backend streams to R2, inherits column mapping from the active version, enqueues Celery validation. Returns {version_id}.
GET /datasets/{id}/versions/{version_id}Poll every 3s — status moves from validating → active (new version live) or rejected (validation_report.error has the reason). Old version stays live until the new one passes.
Python example
import requests
import time
API_KEY = "your_api_key_here"
DATASET_ID = "your-dataset-uuid"
ZIP_PATH = "/path/to/new_data.zip"
headers = {"X-API-Key": API_KEY}
base = "https://api.quantplace.io/api/v1"
# Single call — upload the zip, backend handles R2 and triggers validation
with open(ZIP_PATH, "rb") as f:
resp = requests.post(
f"{base}/datasets/{DATASET_ID}/auto-update",
files={"file": ("data.zip", f, "application/zip")},
headers=headers,
)
resp.raise_for_status()
version_id = resp.json()["version_id"]
print(f"Uploaded. Polling validation for version {version_id}...")
# Poll until validation completes (optional — can also fire-and-forget)
for _ in range(40):
time.sleep(3)
result = requests.get(
f"{base}/datasets/{DATASET_ID}/versions/{version_id}",
headers=headers,
).json()
if result["status"] == "active":
print("Validation passed — new version is live")
break
elif result["status"] == "rejected":
print("Validation failed:", result["validation_report"].get("error"))
break
else:
print("Timed out — check dashboard for result")Personal Access Token
Log in to generate an API key for programmatic access.
Log inRead-only & safe (MCP). The MCP server only wraps public QuantPlace endpoints — no auth token required, no purchases triggered automatically. If the MCP server stops, the QuantPlace platform is completely unaffected.