MCP Protocol
Connect AI agents to ScienceToStartup using the Model Context Protocol. The remote MCP server exposes paper search, Signal Canvas, proof retrieval, and workspace actions as agent-native tools.
Overview
The Model Context Protocol (MCP) is a JSON-RPC 2.0 transport that lets AI agents discover and invoke tools at runtime. Instead of hard-coding REST endpoints, agents send structured JSON-RPC requests and receive typed responses.
Use MCP when you want agents to dynamically discover capabilities, when building with Claude, ChatGPT, Cursor, or other MCP-compatible clients, or when you prefer tool-oriented access over explicit HTTP contracts.
When to use MCP vs REST
Endpoint
All MCP communication goes through a single HTTP endpoint using Streamable HTTP transport. Send JSON-RPC requests as POST bodies.
POST https://sciencetostartup.com/api/mcp| Header | Value |
|---|---|
Content-Type | application/json |
Accept | application/json, text/event-stream |
Authorization | Bearer s2s_YOUR_KEY |
Initialize
Every MCP session starts with an initialize request. This establishes the protocol version and declares client capabilities.
curl -X POST "https://sciencetostartup.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"clientInfo": {
"name": "my-agent",
"version": "1.0.0"
},
"capabilities": {}
}
}'Protocol version
2025-03-26. The response includes the server's capabilities and version information.List Tools
After initialization, call tools/list to discover all available tools and their input schemas. Agents can use these schemas to validate arguments before calling.
curl -X POST "https://sciencetostartup.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer s2s_YOUR_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}'Call a Tool
Invoke any tool by sending a tools/call request with the tool name and arguments. Here is an example calling search_papers.
curl -X POST "https://sciencetostartup.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer s2s_YOUR_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search_papers",
"arguments": {
"query": "voice agents",
"limit": 5
}
}
}'JSON-RPC IDs
id field. Use an incrementing integer or UUID to correlate requests with responses.Available Tools
The MCP server exposes the following tools. Use tools/list for the full schema with argument types.
| Tool | Category | Description |
|---|---|---|
search_papers | Discovery | Search indexed papers by query |
get_paper | Discovery | Retrieve full metadata for a paper |
get_signal_canvas | Signal Canvas | Get commercial signal analysis for a paper |
get_proof_receipt | Proof | Retrieve a proof or buildability receipt |
get_repro_requirements | Buildability | Get reproduction requirements for a receipt |
submit_build_attempt | Buildability | Submit a build attempt with telemetry |
workspace_list | Workspace | List workspaces for the authenticated user |
workspace_add_paper | Workspace | Add a paper to a workspace collection |
Buildability Tools
Buildability tools let agents retrieve reproduction requirements and submit build attempts. These tools are part of the Buildability Wave 1 launch subset.
get_repro_requirements
Returns the reproduction requirements for a given receipt, including dependencies, hardware needs, and verification steps.
curl -X POST "https://sciencetostartup.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer s2s_YOUR_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_repro_requirements",
"arguments": {
"receipt_id": "fixture_wave1_no_fake_calibration"
}
}
}'submit_build_attempt
Submit a build attempt with status, description, and optional links to your repository and CI run.
curl -X POST "https://sciencetostartup.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer s2s_YOUR_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "submit_build_attempt",
"arguments": {
"paper_ref": "2604.18478v1",
"status": "succeeded",
"description": "Built from source and ran smoke test.",
"repository_url": "https://github.com/acme/worlddb",
"external_run_url": "https://ci.acme.dev/runs/123",
"idempotency_key": "build-attempt-2026-04-25-worlddb"
}
}
}'Authenticated and rate-limited
submit_build_attempt requires authentication, caps descriptions at 2KB, and redacts logs. Gate status remains pending until persisted thresholds are met.Error Handling
MCP errors follow the JSON-RPC 2.0 error format. The response includes an error code, message, and optional data field with additional context.
{
"jsonrpc": "2.0",
"id": 3,
"error": {
"code": -32602,
"message": "Invalid params: 'query' is required",
"data": {
"tool": "search_papers",
"missing": ["query"]
}
}
}| Code | Meaning | Description |
|---|---|---|
-32700 | Parse error | Invalid JSON in request body |
-32600 | Invalid request | Missing required JSON-RPC fields |
-32601 | Method not found | Unknown method name |
-32602 | Invalid params | Missing or invalid arguments |
-32603 | Internal error | Unexpected server error |
Retry strategy
-32603 (internal error). Client-side errors like invalid params or parse errors will not resolve on retry.