Bio Render MCP

Live

API KEY

RESEARCH

AI

Scientific illustration templates, biological pathway diagrams, and publication-ready figures live in BioRender. Bio Render MCP gives your research agent per-user API access, credentials vaulted, scoped, never in the prompt.

  • Acts as the user: Each researcher's BioRender key is scoped to their licensed templates and assets.
  • Credentials stay vaulted: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: User permissions enforced. 90-day audit trail on every figure export.
Bio Render MCP
agent · Acme Q3
Run
Find a T-cell activation pathway template and export it with our lab colors for the Nature submission.
S
biorender_templates_search
98ms
Research agent
Found 3 T-cell activation templates. Applied lab color palette. Exported TCR Signaling Cascade v2 as high-res PNG at 300 DPI for journal submission.
Sources: BioRender template library, lab palette
biorendermcp
3
18:29
Message Claude...

Tools your research agent reaches for on BioRender, scoped per lab member.

CALL ANY TOOL
API key scoped per researcher. Figure creation and export attributed to the authorizing lab member.
biorender_templates_search
Search templates
Search BioRender's library of scientific illustration templates by keyword, pathway type, or biological process.
Parameters
Name
Type
Required
Description
query
string
Required
Search query (e.g. T-cell activation, CRISPR)
category
string
Optional
Template category: pathways, cell_biology, microbiology, anatomy
limit
integer
Optional
Max results to return
biorender_figure_create
Create figure
biorender_figure_export
Export figure
biorender_icons_search
Search icons
biorender_figures_list
List figures
Build your Agent
Drop the toolkit in, point it at the authorized researcher, and your agent can create and export BioRender figures from the first run.
import { ScalekitClient } from "@scalekit-sdk/node";
import { DynamicStructuredTool } from "@langchain/core/tools";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
import { z } from "zod";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["biorendermcp"], toolNames: ["biorender_templates_search", "biorender_figure_create", "biorender_figure_export"] },
pageSize: 100,
});

const lcTools = tools.map((t) => new DynamicStructuredTool({
name: t.tool.definition.name,
description: t.tool.definition.description,
schema: z.object({}).passthrough(),
func: async (args) => {
const { data } = await sk.tools.executeTool({
toolName: t.tool.definition.name,
identifier: "user_123",
params: args,
});
return JSON.stringify(data);
},
}));

const agent = createReactAgent({ llm, tools: lcTools });
import { ScalekitClient } from "@scalekit-sdk/node";
import OpenAI from "openai";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["biorendermcp"], toolNames: ["biorender_templates_search", "biorender_figure_create", "biorender_figure_export"] },
pageSize: 100,
});

const llmTools = tools.map((t) => ({
type: "function",
function: {
name: t.tool.definition.name,
description: t.tool.definition.description,
parameters: t.tool.definition.input_schema,
},
}));

const resp = await openai.responses.create({
model: "gpt-4o", input: prompt, tools: llmTools,
});
import { ScalekitClient } from "@scalekit-sdk/node";
import Anthropic from "@anthropic-ai/sdk";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["biorendermcp"], toolNames: ["biorender_templates_search", "biorender_figure_create", "biorender_figure_export"] },
pageSize: 100,
});

const llmTools = tools.map((t) => ({
name: t.tool.definition.name,
description: t.tool.definition.description,
input_schema: t.tool.definition.input_schema,
}));

const msg = await anthropic.messages.create({
model: "claude-sonnet-4-6", max_tokens: 1024,
tools: llmTools,
messages: [{ role: "user", content: prompt }],
});
import { Agent } from "@google/adk/agents";
import {
MCPToolset, StreamableHTTPConnectionParams,
} from "@google/adk/tools/mcp";

const toolset = new MCPToolset({
connectionParams: new StreamableHTTPConnectionParams({
url: "https://mcp.scalekit.com/biorendermcp",
headers: { Authorization: `Bearer ${userScopedToken}` },
}),
});

const agent = new Agent({
name: "agent", model: "gemini-2.0-flash",
tools: await toolset.getTools(),
});
Try these prompts
Paste any prompt into your scientific illustration agent to start creating figures in BioRender.
Search & recall
Copy the prompt
Copied
List all figure templates available in my BioRender account.
Copy the prompt
Copied
Get my recently created figures and their export status.
Copy the prompt
Copied
Search for BioRender icons matching [keyword] for use in my pathway diagram.
Create & export
Copy the prompt
Copied
Create a pathway diagram showing [biological process] using BioRender icons.
Copy the prompt
Copied
Export my [figure name] as a high-resolution PNG for publication.
Copy the prompt
Copied
Duplicate my [template name] figure and update labels for [experiment condition].
SEE HOW AUTH WORKS
Researchers authorize BioRender once. Their OAuth token stays vaulted, every figure creation is scoped to their license, and every action is logged.
1
Authorize
Your user connects
Bio Render MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Bio Render MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Bio Render MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Bio Render MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
Same per-user auth pattern across other scientific and life sciences tool connectors.
No items found.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
One vault for every research tool. BioRender today, Figma and Notion tomorrow.
01.
Shared tokens break per-user analytics
A shared token looks fine in a demo. In production every call looks like a service account. Scalekit resolves the real user credential so attribution, audit, and scope stay accurate.
// shared token
 audit → bot_service_account
 user_filter → broken

 // scalekit
 audit → user_abc
 scope → enforced ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Bio Render MCP today. Others tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent use a shared BioRender license or per-user licenses?
Per-user licenses. Each researcher's BioRender API key is vaulted under their identity. Figure creation and exports are attributed to that researcher's institutional license, not a shared account.
Where is the BioRender API key stored?
In Scalekit's AES-256 vault, namespaced per tenant. Keys resolve at request time and never appear in prompts, logs, or LLM completions.
Can I control what figure operations the agent performs?
Yes. Use listScopedTools to allow template search and figure creation but block deletion or bulk export operations that could exhaust a user's license quota.
What happens when a researcher's BioRender key is revoked?
The next tool call fails closed for that user. Other lab members remain unaffected. The revocation event is logged with timestamp for audit.
Does the agent respect BioRender institutional license limits?
Yes. Each call runs under the authorizing user's BioRender license tier. Export limits and premium template access are enforced by BioRender's own permission layer. Scalekit does not expand user entitlements.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""biorendermcp"": {
""url"": ""https://mcp.scalekit.com/biorendermcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.biorendermcp]
url = ""https://mcp.scalekit.com/biorendermcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""biorendermcp"": {
""url"": ""https://mcp.scalekit.com/biorendermcp"",
""type"": ""http""
}
}
}