ai.jeda/jeda-ai
Visual AI for strategic thinking — SWOT, flowcharts, mindmaps, Gantt diagrams as polished SVG.
Executive verdict
Current trust snapshot
trustsnap_197c2d2852dbf4bcOwn this MCP?
Claim ownership, prove control with a GitHub, DNS, or HTTP token challenge, revalidate now, publish a badge, and configure monitoring.
POST /v1/servers/ai.jeda/jeda-ai/revalidateBadge embed
[](https://verify.sentinelsignal.io/servers/ai.jeda/jeda-ai)
MCP TrustOps
TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/routeAlert subscription types
Production readiness class
Evidence confidence
Recommended for
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warningstep_up_auth_probe• Missingconnector_replay_probe• Error — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warning
Evidence provenance
action_safety_probe• Error
Evidence provenance
tool_snapshot_probe• OKconnector_replay_probe• Error
Why compatibility is limited by client
Remediation checklist
- No explicit blockers recorded.
Remediation checklist
- No explicit blockers recorded.
Remediation checklist
- No explicit blockers recorded.
Verdict traces
tool_snapshot_changed• high • Tool snapshot changedconnector_refresh_breaking• high • Connector refresh would break
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Partially client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | connector_refresh_breakage |
claude_desktop |
Client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | connector_refresh_breakage |
unsafe_for_write_actions |
Publishing blocked | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Medium | tool_snapshot_probe, connector_replay_probe | history | connector_refresh_breakage |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Degraded
- frozen_tool_snapshot_refresh: Likely to fail
- request_association: Passes
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Degraded
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewPublic server reputation
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| May 13, 2026 11:43:51 AM UTC | Latest validation: healthy | Score 73.0 with status healthy. |
| May 13, 2026 11:43:51 AM UTC | Score changed | Score delta +0.4 versus the previous run. |
| May 13, 2026 11:43:51 AM UTC | Tool snapshot changed | Added 0, removed 0, and changed 3 tool contracts. |
| May 13, 2026 11:43:51 AM UTC | Connector refresh would break | The latest tool snapshot introduces breaking changes for frozen connector snapshots. |
| May 12, 2026 11:39:57 PM UTC | Score changed | Score delta +3.2 versus the previous run. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://jeda.ai
- Docs: none
- Support: none
- Icon: none
- Remote endpoint: https://mcp.jeda.ai/mcp
- Server card: none
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes |
|---|---|---|---|---|
generate_visual |
read write delete exec network filesystem admin export | Critical | destructive operation command execution bulk data access filesystem mutation admin mutation | Safeguards hinted in metadata. |
get_style_options |
read write delete exec network admin export | Critical | destructive operation command execution bulk data access admin mutation | Safeguards hinted in metadata. |
recommend_framework |
read write exec admin export | High | command execution bulk data access admin mutation | No explicit safeguard hints detected. |
generate_framework_analysis |
read write exec network filesystem admin | High | command execution filesystem mutation admin mutation | No explicit safeguard hints detected. |
generate_diagram |
read write delete exec network admin export | Critical | destructive operation command execution bulk data access admin mutation | Safeguards hinted in metadata. |
Write-action governance
Status detail: 5 high-risk tool(s), 3 destructive tool(s), 5 exec-capable tool(s) are exposed without a clear auth boundary; 3 safeguard(s) and 1 confirmation signal(s) detected.
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
generate_visual |
Critical | destructive operation command execution bulk data access filesystem mutation admin mutation | yes |
get_style_options |
Critical | destructive operation command execution bulk data access admin mutation | yes |
recommend_framework |
High | command execution bulk data access admin mutation | no |
generate_framework_analysis |
High | command execution filesystem mutation admin mutation | no |
generate_diagram |
Critical | destructive operation command execution bulk data access admin mutation | yes |
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
| No newly added actions. | ||
Changed actions
| Action | Change types | Risk |
|---|---|---|
generate_diagram | required_arguments | Critical |
generate_visual | required_arguments | Critical |
get_style_options | required_arguments | Critical |
Why this score?
Algorithmic score breakdown
Compatibility profiles
Connector URL: https://mcp.jeda.ai/mcp # No OAuth metadata detected. # Server: ai.jeda/jeda-ai
{
"mcpServers": {
"jeda-ai": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.jeda.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.jeda.ai/mcp"
curl -sS https://mcp.jeda.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Associate roots, sampling, and elicitation with active client requests | Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Expose /.well-known/oauth-protected-resource | Without a protected-resource document, OAuth clients cannot discover auth requirements reliably. | Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.Playbook
|
| High | Keep connector refreshes backward compatible | Managed connector clients freeze tool snapshots, so removed tools, new required args, and breaking output changes can break published integrations after refresh. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Publish OAuth authorization-server metadata | Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. | Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.Playbook
|
| High | Publish a complete server card | Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals. | Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.Playbook
|
| High | Respond to connector refresh would break | The latest tool changes would break a previously published frozen tool snapshot after refresh. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Respond to tool snapshot changed | Tools were added, removed, or materially changed between the latest two validations. | Publish a first-class changelog for tool additions, removals, and breaking schema changes.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Repair prompts/list or stop advertising prompts | Prompt metadata should either work live or be removed from the advertised capability set. | Only advertise prompts if prompts/list works and prompt arguments are documented.Playbook
|
| Medium | Repair resources/list or stop advertising resources | Resource metadata should either work live or be removed from the advertised capability set. | Only advertise resources if resources/list works and resources expose stable URIs/types.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Recovery Semantics | 0/4 | -4.0 |
| Execution Sandbox Safety | 1.5/4 | -2.5 |
| Connector Replay | 1.5/4 | -2.5 |
| Utility Coverage | 2/4 | -2.0 |
| Transport Compliance | 2/4 | -2.0 |
| Spec Recency | 2/4 | -2.0 |
| Safety Transparency | 2/4 | -2.0 |
| Resource Contract | 2/4 | -2.0 |
| Registry Consistency | 2/4 | -2.0 |
| Rate Limit Semantics | 2/4 | -2.0 |
| Prompt Contract | 2/4 | -2.0 |
| Least Privilege Scope | 2/4 | -2.0 |
Validation diff
Regressed checks: connector_replay_probe
Improved checks: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
connector_replay_score | 4.0 | 1.5 | -2.5 |
destructive_operation_safety_score | 1.5 | 3.0 | 1.5 |
execution_sandbox_safety_score | 1.5 | 1.5 | |
backward_compatibility_score | 4.0 | 3.0 | -1.0 |
data_exfiltration_resilience_score | 3.0 | 4.0 | 1.0 |
trust_confidence_score | 2.94 | 3.81 | 0.87 |
error_contract_score | 3.4 | 2.83 | -0.57 |
Tool snapshot diff & changelog
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
generate_diagram |
metadata | none |
generate_visual |
metadata | none |
get_style_options |
metadata | none |
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
generate_diagram | metadata | none |
generate_visual | metadata | none |
get_style_options | metadata | none |
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Transport compliance drilldown
Issues: missing_session_id, missing_protocol_header
Request association
Utility coverage
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Likely to fail |
|
| OAuth-required connect | Degraded |
|
| Safe write flow with confirmation | Likely to fail |
|
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | n/a |
| Version | n/a | n/a |
| Homepage | n/a | n/a |
Active alerts
- Tool snapshot changed (high)
Tools were added, removed, or materially changed between the latest two validations. - Connector refresh would break (high)
The latest tool changes would break a previously published frozen tool snapshot after refresh.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
ai.jeda/jeda-ai |
official_registry | yes | 73.03 |
Alias consolidation
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Install snippets
Connector URL: https://mcp.jeda.ai/mcp # No OAuth metadata detected. # Server: ai.jeda/jeda-ai
{
"mcpServers": {
"jeda-ai": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.jeda.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.jeda.ai/mcp"
curl -sS https://mcp.jeda.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.ai.jeda/jeda-ai.Claims & monitoring
No verified maintainer claim recorded.
Alert routing
| Watch | Team | Channels | Minimum severity |
|---|---|---|---|
| No active watch destinations. | |||
Maintainer analytics
Maintainer response quality
Maintainer annotations
No maintainer annotations have been recorded yet.
Maintainer rebuttals & expected behavior
No maintainer rebuttals or expected-behavior overrides are recorded yet.
Latest validation evidence
Failures
oauth_authorization_serverno authorization serveroauth_protected_resourceClient error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404openid_configurationno authorization serverserver_cardClient error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Error | n/a | 5 high-risk, 3 destructive, 5 exec-capable tool(s); no clear auth boundary; safeguards=3; confirmation=generate visual. |
advanced_capabilities_probe |
Missing | n/a | No advanced MCP capability signals detected. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: connector replay, action safety, server card. |
connector_replay_probe |
Error | n/a | Would break after refresh; removed tools=0, required-arg breaks=3, output breaks=0. |
determinism_probe |
OK | 78.4 ms | Check completed |
initialize |
OK | 271.2 ms | Protocol 2025-03-26 |
interactive_flow_probe |
OK | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
Error | 261.3 ms | Client error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
official_registry_probe |
OK | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 441.0 ms | Fetched https://mcp.jeda.ai/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
Missing | 397.6 ms | not supported |
protocol_version_probe |
Warning | n/a | Claims 2025-03-26; 2 release(s) behind 2025-11-25. |
provenance_divergence_probe |
OK | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
Missing | n/a | not advertised |
resources_list |
Missing | 509.8 ms | not supported |
server_card |
Error | 458.1 ms | Client error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
Missing | n/a | No OAuth or incremental-scope signals detected. |
tool_snapshot_probe |
OK | n/a | Check completed |
tools_list |
OK | 91.4 ms | 5 tool(s) exposed |
transport_compliance_probe |
Warning | 281.1 ms | Issues: missing session id, missing protocol header (bad protocol=400). |
utility_coverage_probe |
Missing | 326.7 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [
"generate_visual"
],
"safeguard_count": 3,
"summary": {
"bulk_access_tools": 4,
"capability_distribution": {
"admin": 5,
"delete": 3,
"exec": 5,
"export": 4,
"filesystem": 2,
"network": 4,
"read": 5,
"write": 5
},
"destructive_tools": 3,
"egress_tools": 0,
"exec_tools": 5,
"high_risk_tools": 5,
"risk_distribution": {
"critical": 3,
"high": 2,
"low": 0,
"medium": 0
},
"secret_tools": 0,
"tool_count": 5
}
},
"latency_ms": null,
"status": "error"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [],
"enabled_count": 0,
"initialize_capability_keys": [
"tools"
]
},
"latency_ms": null,
"status": "missing"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"connector_replay",
"action_safety",
"server_card"
],
"criteria": {
"action_safety": false,
"auth_flow": true,
"connector_replay": false,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": true
},
"high_risk_tools": 5,
"tool_count": 5,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": false,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [
{
"added_required": [
"metadata"
],
"removed_required": [],
"tool": "generate_diagram"
},
{
"added_required": [
"metadata"
],
"removed_required": [],
"tool": "generate_visual"
},
{
"added_required": [
"metadata"
],
"removed_required": [],
"tool": "get_style_options"
}
],
"would_break_after_refresh": true
},
"latency_ms": null,
"status": "error"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "c84c6ce303e01caf3187dde2ce408a767b0843ddb374ff7e4e5304c60309b36d",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 78.38,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "application/json",
"x-ratelimit-limit": "30",
"x-ratelimit-remaining": "29",
"x-ratelimit-reset": "1778672688"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"tools": {
"listChanged": true
}
},
"protocolVersion": "2025-03-26",
"serverInfo": {
"description": "AI-powered visual generator \u2014 flowcharts, mindmaps, matrices, timelines, Gantt, ER, sequence, swimlane, and block diagrams as self-contained SVG.",
"icons": [
{
"mimeType": "image/svg+xml",
"sizes": [
"any"
],
"src": "https://mcp.jeda.ai/icon.svg"
},
{
"mimeType": "image/png",
"sizes": [
"256x256"
],
"src": "https://mcp.jeda.ai/icon.png"
},
{
"mimeType": "image/png",
"sizes": [
"512x512"
],
"src": "https://solo.jeda.ai/mcp-logo.png"
}
],
"name": "jeda-ai",
"title": "Jeda.ai \u00b7 Visual AI",
"version": "0.1.0",
"websiteUrl": "https://jeda.ai"
}
}
},
"url": "https://mcp.jeda.ai/mcp"
},
"latency_ms": 271.18,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"risk_hits": [],
"safe_hits": [
"login"
]
},
"latency_ms": null,
"status": "ok"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.jeda.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 261.27,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "ai.jeda/jeda-ai",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://mcp.jeda.ai/robots.txt"
},
"latency_ms": 440.98,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "application/json",
"x-ratelimit-limit": "30",
"x-ratelimit-remaining": "27",
"x-ratelimit-reset": "1778672688"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://mcp.jeda.ai/mcp"
},
"latency_ms": 397.65,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": true,
"drift_fields": [],
"metadata_document_count": 2,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"headers": {
"content-type": "application/json",
"x-ratelimit-limit": "30",
"x-ratelimit-remaining": "26",
"x-ratelimit-reset": "1778672688"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 5,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://mcp.jeda.ai/mcp"
},
"latency_ms": 509.81,
"status": "missing"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.jeda.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 458.11,
"status": "error"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 5,
"previous_tool_count": 5,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "application/json",
"x-ratelimit-limit": "30",
"x-ratelimit-remaining": "28",
"x-ratelimit-reset": "1778672688"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": true,
"title": "Generate Visual"
},
"description": "Generates a visual (flowchart, mindmap, matrix, timeline, Gantt, ER, sequence, swimlane, block diagram) as a self-contained SVG. Powered by Jeda.ai \u00b7 Visual AI.\n\nREQUIRED post-processing on every success: the response's FIRST text block is a \"SAVE THIS NOW\" directive with a `curl -fsSL` one-liner (Step 1) and an inline-SVG fallback (Step 2). Always attempt Step 1 first; only fall back to Step 2 if curl exits non-zero. The user expects an \"Image \u00b7 SVG\" file chip \u2014 not a markdown link or prose summary. The signed URL is safe to fetch (auth is in the query string).\n\nTwo modes: (1) natural-language `prompt` \u2192 Data Agent + Design Agent build the visual; (2) structured `nodes` + `edges` for precise control.\n\nVisual types: matrix | mindmap | flowchart | block-diagram | timeline | gantt | er-diagram | sequence | process-flow. Default: auto-detected from prompt. Slash commands work too: `/matrix SWOT`, `/timeline roadmap`, `/process-flow procurement approval with finance and legal lanes`.\n\nFor style options (themes, fonts, arrow styles, animations, per-edge overrides, matrix/process-flow specifics) call `get_style_options` first. Default theme is `pastel` \u2014 only override when the user explicitly names another.\n\nExample: { \"prompt\": \"user signup with email verification\", \"theme\": { \"preset\": \"pastel\" } }",
"inputSchema": {
"additionalProperties": false,
"properties": {
"defaultArrowHead": {
"description": "Default arrowhead style applied to all edges that don't specify their own.",
"type": [
"string",
"null"
]
},
"defaultArrowStyle": {
"description": "Connector aesthetic mode applied to all edges that don't set their own `arrowStyle`. Options: \"calligraphy\" (default \u2014 hand-drawn ink-ribbon connectors) | \"clean\" (standard stroked-line connectors) | \"block\" (chunky outlined block-arrow connectors with integrated triangular head). Orthogonal to defaultLineStyle (which now controls dash pattern only) \u2014 all 15 combinations of arrowStyle \u00d7 lineStyle are valid.",
"enum": [
"calligraphy",
"clean",
"block"
],
"type": [
"string",
"null"
]
},
"defaultBlockArrowSize": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"maximum": 60,
"minimum": 1,
"type": "number"
}
],
"description": "Default Block Arrow size when `defaultArrowStyle` (or per-edge arrowStyle) is \"block\". Options: \"small\" (slim \u2014 body ~14 px) | \"medium\" (default \u2014 body ~24 px) | \"large\" (chunky \u2014 body ~36 px). Or a raw body half-width number in px (1\u201360); head dimensions scale proportionally. Per-edge `blockArrowSize` overrides this default."
},
"defaultConnector": {
"description": "Default connector type applied to all edges that don't specify their own.",
"enum": [
"straight",
"curved",
"elbow",
"orthogonal",
"bezier"
],
"type": [
"string",
"null"
]
},
"defaultConnectorAnimate": {
"description": "Animate every connector edge. Options: none (default) | flow (dashes march along the line) | pulse (gentle opacity breathing) | glow (subtle stroke-width pulse) | trace (bright dot traverses each edge) | wave (large stroke-width oscillation). SVG-only \u2014 exports to PNG / WebP / OG-image freeze on first frame.",
"enum": [
"none",
"flow",
"pulse",
"glow",
"trace",
"wave",
"lightning",
"beat",
"comet"
],
"type": [
"string",
"null"
]
},
"defaultConnectorAnimateSpeed": {
"description": "Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"defaultDividerStyle": {
"description": "Divider / grid-line / table-border style. Governs the structural rule-lines a diagram emits: matrix grid lines, gantt phase column dividers, sequence lifelines, swimlane (process-flow) lane boundaries. Options: \"subtle\" (barely-there hairline), \"normal\" (default \u2014 pre-v1.55.0 baseline of 1 px / 25 % opacity), \"bold\" (emphasised grid presence), \"dashed\" (6,4 dasharray editorial feel), \"dotted\" (1,3 dasharray lightweight rhythm), \"none\" (no divider emission \u2014 cells separated only by colour banding). Useful for comparison tables (try \"bold\") or minimalist matrices (try \"none\").",
"enum": [
"subtle",
"normal",
"bold",
"dashed",
"dotted",
"none"
],
"type": [
"string",
"null"
]
},
"defaultLineStyle": {
"description": "v1.45.2+ \u2014 Default DASH PATTERN applied to all edges that don't specify their own. Options: \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\". Combines orthogonally with `defaultArrowStyle` (calligraphy/clean/block) for 15 total visual combinations. Legacy values \"calligraphy\" and \"block-arrow\" are still accepted for backward compat (the renderer maps them to defaultArrowStyle=\"calligraphy\"/\"block\" with lineStyle=\"solid\"); new callers should use `defaultArrowStyle` for the aesthetic mode.",
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimation": {
"description": "Whole-visual reveal animation. Plays ONCE when the SVG is displayed, freezes at the final state. Options: none (default) | fade (entire visual fades in) | zoom (scales in from 70% to 100%) | zoom-pan (Ken Burns camera move) | flow (each node + edge appears sequentially in spec order). Orthogonal to defaultConnectorAnimate \u2014 both can run together. SVG-only \u2014 PNG / WebP exports show the fully-revealed final state (rasteriser ignores SMIL; static attrs hold the final value). Animated GIF / MP4 client-side encoder ticks the scene through.",
"enum": [
"none",
"fade",
"zoom",
"zoom-pan",
"flow",
"wave-sweep",
"build-up",
"flow-zoom-pan"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimationLoop": {
"description": "Animation loop count. v1.50.9+ \u2014 applies to BOTH connector animations (flow / pulse / glow / wave / trace / lightning / beat / comet) AND scene animations (fade / zoom / zoom-pan / flow / wave-sweep / build-up / flow-zoom-pan). Options (all quoted strings): \"once\" (default \u2014 plays once and freezes) | \"2\" | \"3\" | \"5\" (repeat that many times then freeze) | \"infinite\" (loop forever; best for live presentations and the historical default for connector animations pre-v1.50.9). Maps to SMIL repeatCount.",
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimationSpeed": {
"description": "Scene animation speed. Options: slow (1.5\u00d7 duration) | medium (default) | fast (0.6\u00d7 duration).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"defaultShadow": {
"description": "Default shadow level applied to all nodes.",
"enum": [
"none",
"sm",
"md",
"lg"
],
"type": [
"string",
"null"
]
},
"defaultShapeLineStyle": {
"description": "Default line style for shape outlines (node borders). v1.44.1 \u2014 also drives shape rendering mode: \"calligraphy\" gives hand-drawn rough shapes (ink-ribbon outlines); \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\" give crisp geometric shapes with that outline pattern. Independent of edge/connector line style.",
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"defaultTitleStyle": {
"description": "Title decoration treatment. Options: \"plain\" (default, just the title text), \"accent-bar\" (small accent-coloured vertical bar to the left of the title), \"underline\" (accent-coloured horizontal stroke below the title), \"boxed\" (title rendered in a subtle bordered + drop-shadowed pill \u2014 strongest framing). Affects only the diagram title, not subtitles or section headers.",
"enum": [
"plain",
"accent-bar",
"underline",
"boxed"
],
"type": [
"string",
"null"
]
},
"edges": {
"items": {
"additionalProperties": false,
"properties": {
"animate": {
"description": "Connector animation. Options: none (default) | flow (dashes march) | pulse (opacity breathing) | glow (stroke-width pulse) | trace (bright dot travels along) | wave (large stroke-width oscillation). SVG-only \u2014 exports to PNG/WebP capture one frozen frame.",
"enum": [
"none",
"flow",
"pulse",
"glow",
"trace",
"wave",
"lightning",
"beat",
"comet"
],
"type": [
"string",
"null"
]
},
"animateSpeed": {
"description": "Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"arrowStyle": {
"description": "Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: \"calligraphy\" | \"clean\" | \"block\". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.",
"enum": [
"calligraphy",
"clean",
"block"
],
"type": [
"string",
"null"
]
},
"blockArrowSize": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"maximum": 60,
"minimum": 1,
"type": "number"
}
],
"description": "Block Arrow size for this edge (only when arrowStyle is \"block\"). Preset names: \"small\" (slim) | \"medium\" (default) | \"large\" (chunky). OR a raw body half-width in px (1\u201360); head dimensions scale proportionally."
},
"connectorType": {
"enum": [
"straight",
"curved",
"elbow",
"orthogonal",
"bezier"
],
"type": [
"string",
"null"
]
},
"hidden": {
"type": [
"boolean",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"lineStyle": {
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"loop": {
"description": "Per-edge animation loop count override. Wins over the diagram-level `defaultSceneAnimationLoop`. Values are quoted strings: \"once\" | \"2\" | \"3\" | \"5\" | \"infinite\". Maps to SMIL repeatCount.",
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
},
"sourceArrow": {
"description": "Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.",
"type": [
"string",
"null"
]
},
"style": {
"additionalProperties": false,
"properties": {
"fill": {
"type": [
"string",
"null"
]
},
"opacity": {
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"stroke": {
"type": [
"string",
"null"
]
},
"strokeWidth": {
"type": [
"number",
"null"
]
}
},
"required": [
"stroke",
"strokeWidth",
"opacity",
"fill"
],
"type": [
"object",
"null"
]
},
"target": {
"type": "string"
},
"targetArrow": {
"description": "Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.",
"type": [
"string",
"null"
]
}
},
"required": [
"source",
"target",
"label",
"lineStyle",
"connectorType",
"sourceArrow",
"targetArrow",
"style",
"hidden",
"animate",
"animateSpeed",
"blockArrowSize",
"arrowStyle",
"loop"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"fontFamily": {
"description": "Font family for diagram text. Options: inter, poppins (sans-serif); playfair (serif); kalam, handlee (handwritten); fredoka (display); mono (monospace). Omit for style-matched default (Handlee for calligraphy, Inter for clean).",
"type": [
"string",
"null"
]
},
"funnel": {
"additionalProperties": false,
"description": "Funnel-only payload. Required when type=\"funnel\". Fields: stageLabels (string[], 1..50, ordered top\u2192bottom), stageValues (optional string[]), dropOff (optional string[] of length stageLabels-1), bottomRatio (0.05..0.99, default 0.30). Sales pipeline, AARRR, ToFu/MoFu/BoFu.",
"properties": {
"bottomRatio": {
"maximum": 0.99,
"minimum": 0.05,
"type": [
"number",
"null"
]
},
"dropOff": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
},
"stageLabels": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"stageValues": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
}
},
"required": [
"stageLabels",
"stageValues",
"dropOff",
"bottomRatio"
],
"type": [
"object",
"null"
]
},
"ganttHolidays": {
"description": "Gantt-only: ISO 8601 holiday dates (e.g. [\"2026-12-25\", \"2026-01-01\"]). Rendered as gray vertical stripes alongside Sat/Sun (always weekend). Only applies in date-driven mode (every node has start/end). Other diagram types ignore this field.",
"items": {
"maxLength": 32,
"type": "string"
},
"maxItems": 200,
"type": [
"array",
"null"
]
},
"iconStyle": {
"description": "Icon rendering style. \"clean-mono\" = precise strokes + single color, \"clean-colorful\" = precise strokes + vibrant colors, \"calligraphy-mono\" = hand-drawn ink + single color, \"calligraphy-colorful\" = hand-drawn ink + vibrant colors, \"none\" = hide icons.",
"type": [
"string",
"null"
]
},
"layout": {
"additionalProperties": false,
"properties": {
"direction": {
"enum": [
"TB",
"LR",
"BT",
"RL",
"radial",
"assorted"
],
"type": [
"string",
"null"
]
},
"nodeSpacing": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"padding": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"rankSpacing": {
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"direction",
"nodeSpacing",
"rankSpacing",
"padding"
],
"type": [
"object",
"null"
]
},
"matrixColumns": {
"description": "Column header labels for 2D matrix grid (e.g., [\"High Vision\", \"Low Vision\"]).",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"matrixItemStyle": {
"description": "Item display style for matrix diagrams. \"card\" (default) = rectangular cards, \"dot\" = scatter points, \"text\" = plain text, \"badge\" = compact pills.",
"enum": [
"card",
"dot",
"text",
"badge"
],
"type": [
"string",
"null"
]
},
"matrixRows": {
"description": "Row header labels for 2D matrix grid (e.g., [\"High Execution\", \"Low Execution\"]).",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"metadata": {
"additionalProperties": false,
"description": "Visual-size + Best-fit metadata bag (v1.65.4 -> v1.67.12). All fields optional; legacy callers without `metadata` are byte-identical to today. The server echoes `metadata.size` back on the response so integrators can confirm the field was honoured.",
"properties": {
"bestFit": {
"description": "v1.65.1+ Phase 3 server-side gate. When `true` + `targetAspect` is set + the server flag `VISUAL_SIZES_PHASE3_ENABLED` is on, the Designer is re-invoked with the target aspect ratio to reflow the layout. Independent of `metadata.size.bestFit`; the frontend mirrors this field when the toggle is on.",
"type": [
"boolean",
"null"
]
},
"size": {
"additionalProperties": false,
"description": "Visual-size persistence bag (v1.65.4+). Describes the EXPORT TARGET dimensions, NOT a canvas constraint at generation time. Round-trips through the response unchanged.",
"properties": {
"aspect": {
"description": "Canonical \"W:H\" aspect emitted alongside preset / custom dims for fast consumer reads. Accepts integer or decimal ratios. Examples: \"16:9\", \"9:16\", \"1:1\", \"1.91:1\" (OG card).",
"pattern": "^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$",
"type": [
"string",
"null"
]
},
"bestFit": {
"description": "v1.65.1+ Phase 3 opt-in flag. When `true` (alongside `metadata.bestFit` AND `metadata.targetAspect`), signals the server orchestrator to re-invoke the Designer with the target aspect ratio so the layout reflows to fit the export shape. Feature-flagged behind `VISUAL_SIZES_PHASE3_ENABLED` server-side; when OFF the field round-trips through the response but the orchestrator follows the legacy Phase 1/2 path. Default: false.",
"type": [
"boolean",
"null"
]
},
"height": {
"description": "Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.",
"maximum": 4096,
"minimum": 320,
"type": [
"integer",
"null"
]
},
"preset": {
"description": "Visual size preset id from shared/visual-sizes.ts catalog (e.g. \"16x9-presentation\", \"ig-square\", \"youtube-thumb\"). Describes the EXPORT TARGET (PNG / PDF / PPTX render dimensions), NOT the canvas constraint at generation time. Mutually exclusive with width + height (preset wins when both are present).",
"maxLength": 64,
"type": [
"string",
"null"
]
},
"width": {
"description": "Custom export-target width in pixels. 320..4096. Used when no preset matches the desired output dimensions. Pair with `height` for full custom dims; pair with `aspect` for aspect-driven sizing.",
"maximum": 4096,
"minimum": 320,
"type": [
"integer",
"null"
]
}
},
"required": [
"preset",
"width",
"height",
"aspect",
"bestFit"
],
"type": [
"object",
"null"
]
},
"targetAspect": {
"description": "v1.65.1+ Phase 3 server-side aspect ratio. Accepts \"W:H\" forms (e.g. \"9:16\", \"16:9\", \"1:1\", \"1.91:1\"). Forwarded to the Designer when `bestFit` is on.",
"maxLength": 16,
"type": [
"string",
"null"
]
}
},
"required": [
"size",
"bestFit",
"targetAspect"
],
"type": [
"object",
"null"
]
},
"nodes": {
"description": "Structured node definitions. Required when not using prompt mode.",
"items": {
"additionalProperties": false,
"properties": {
"animationLoop": {
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"group": {
"type": [
"string",
"null"
]
},
"height": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"hidden": {
"type": [
"boolean",
"null"
]
},
"icon": {
"type": [
"string",
"null"
]
},
"iconKeywords": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"id": {
"type": "string"
},
"shape": {
"enum": [
"rectangle",
"rounded-rect",
"circle",
"ellipse",
"diamond",
"triangle",
"parallelogram",
"hexagon",
"star",
"pentagon",
"octagon",
"trapezoid",
"process",
"decision",
"terminal",
"data-io",
"document",
"predefined-process",
"manual-input",
"pill",
"cloud",
"callout-bubble",
"underline-only",
"cylinder",
"database",
"banner",
"tag",
"shield",
"cross",
"arrow-shape",
"queue"
],
"type": [
"string",
"null"
]
},
"style": {
"additionalProperties": false,
"properties": {
"cornerRadius": {
"type": [
"number",
"null"
]
},
"fill": {
"type": [
"string",
"null"
]
},
"fontColor": {
"type": [
"string",
"null"
]
},
"fontSize": {
"type": [
"number",
"null"
]
},
"iconColor": {
"type": [
"string",
"null"
]
},
"iconColors": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"lineStyle": {
"description": "Per-node outline line style. Excludes \"calligraphy\" \u2014 that mode is set per-spec via `defaultShapeLineStyle: \"calligraphy\"`, not per-node.",
"enum": [
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"opacity": {
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"shadow": {
"type": [
"boolean",
"null"
]
},
"shadowLevel": {
"enum": [
"sm",
"md",
"lg"
],
"type": [
"string",
"null"
]
},
"stroke": {
"type": [
"string",
"null"
]
},
"strokeWidth": {
"type": [
"number",
"null"
]
}
},
"required": [
"fill",
"stroke",
"strokeWidth",
"opacity",
"cornerRadius",
"shadow",
"shadowLevel",
"fontSize",
"fontColor",
"lineStyle",
"iconColor",
"iconColors"
],
"type": [
"object",
"null"
]
},
"text": {
"type": "string"
},
"width": {
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"id",
"shape",
"text",
"style",
"width",
"height",
"icon",
"iconKeywords",
"hidden",
"group",
"animationLoop"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"prompt": {
"description": "Natural language description of the diagram to generate. When provided, the server uses AI to convert this into a structured diagram spec. Max 8000 characters. Example: \"flowchart showing user login with validation and error handling\"",
"maxLength": 8000,
"type": [
"string",
"null"
]
},
"pyramid": {
"additionalProperties": false,
"description": "Pyramid-only payload. Required when type=\"pyramid\". Fields: tierLabels (string[], 1..50, ordered base\u2192tip), tierValues (optional string[]), inverted (boolean), tipRatio (0..0.95, default 0.15). Bloom's Taxonomy, Maslow's Hierarchy, Capability Maturity, DIKW.",
"properties": {
"inverted": {
"type": [
"boolean",
"null"
]
},
"tierLabels": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"tierValues": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
},
"tipRatio": {
"maximum": 0.95,
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"tierLabels",
"tierValues",
"inverted",
"tipRatio"
],
"type": [
"object",
"null"
]
},
"radar": {
"additionalProperties": false,
"description": "Radar/spider-chart payload. Required when type=\"radar\". Fields: axes (string[], 3..50), series ({name, values: number[]}[], 1..10), maxValue (default 100), rings (default 4). Use multiple series for comparison overlays \u2014 first solid, rest dashed at 50% opacity.",
"properties": {
"axes": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 3,
"type": "array"
},
"maxValue": {
"minimum": 1,
"type": [
"number",
"null"
]
},
"rings": {
"maximum": 10,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"series": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"values": {
"items": {
"type": "number"
},
"maxItems": 50,
"type": "array"
}
},
"required": [
"name",
"values"
],
"type": "object"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
},
"required": [
"axes",
"series",
"maxValue",
"rings"
],
"type": [
"object",
"null"
]
},
"sections": {
"description": "Matrix sections. Each section has a title, optional subtitle, and items. Used with type=\"matrix\".",
"items": {
"additionalProperties": false,
"properties": {
"col": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"icons": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"itemIds": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"itemShapes": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"items": {
"items": {
"type": "string"
},
"type": "array"
},
"row": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"subtitle": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"subtitle",
"items",
"icons",
"itemIds",
"itemShapes",
"row",
"col"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"shapeStyle": {
"enum": [
"calligraphy",
"clean"
],
"type": [
"string",
"null"
]
},
"style": {
"enum": [
"calligraphy",
"clean"
],
"type": [
"string",
"null"
]
},
"subtitle": {
"type": [
"string",
"null"
]
},
"theme": {
"additionalProperties": false,
"properties": {
"palette": {
"additionalProperties": false,
"properties": {
"accent": {
"type": [
"string",
"null"
]
},
"background": {
"type": [
"string",
"null"
]
},
"border": {
"type": [
"string",
"null"
]
},
"nodeColors": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"primary": {
"type": [
"string",
"null"
]
},
"secondary": {
"type": [
"string",
"null"
]
},
"text": {
"type": [
"string",
"null"
]
}
},
"required": [
"primary",
"secondary",
"accent",
"background",
"text",
"border",
"nodeColors"
],
"type": [
"object",
"null"
]
},
"paletteSeed": {
"type": [
"number",
"null"
]
},
"preset": {
"type": [
"string",
"null"
]
}
},
"required": [
"preset",
"palette",
"paletteSeed"
],
"type": [
"object",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"description": "Diagram type. Required when providing structured nodes/edges, optional with prompt.",
"enum": [
"flowchart",
"mindmap",
"block-diagram",
"matrix",
"timeline",
"gantt",
"er-diagram",
"sequence",
"process-flow",
"pyramid",
"funnel",
"radar"
],
"type": [
"string",
"null"
]
},
"xAxisLabel": {
"description": "X-axis title for 2D matrix grid (e.g., \"Completeness of Vision\").",
"type": [
"string",
"null"
]
},
"yAxisLabel": {
"description": "Y-axis title for 2D matrix grid (e.g., \"Ability to Execute\").",
"type": [
"string",
"null"
]
}
},
"required": [
"prompt",
"type",
"sections",
"title",
"subtitle",
"style",
"shapeStyle",
"nodes",
"edges",
"layout",
"theme",
"defaultLineStyle",
"defaultArrowHead",
"defaultConnector",
"defaultShadow",
"defaultShapeLineStyle",
"defaultConnectorAnimate",
"defaultConnectorAnimateSpeed",
"defaultSceneAnimation",
"defaultSceneAnimationSpeed",
"defaultSceneAnimationLoop",
"defaultTitleStyle",
"defaultDividerStyle",
"defaultBlockArrowSize",
"defaultArrowStyle",
"ganttHolidays",
"pyramid",
"funnel",
"radar",
"iconStyle",
"fontFamily",
"matrixColumns",
"matrixRows",
"xAxisLabel",
"yAxisLabel",
"matrixItemStyle",
"metadata"
],
"type": "object"
},
"name": "generate_visual",
"title": "Generate Visual"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get Style Options for generate_visual"
},
"description": "Returns the full style-options catalog for `generate_visual` \u2014 theme presets, fonts, arrow styles, line styles, arrowheads, scene/connector animations, layout directions, per-edge overrides, and matrix/process-flow specifics. Call this once when you need to expose specific style choices to the user (e.g. \"what themes are available?\") or before composing a `generate_visual` call that needs non-default styling. Output is plain text, ~4 KB.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"defaultArrowHead": {
"description": "Default arrowhead style applied to all edges that don't specify their own.",
"type": [
"string",
"null"
]
},
"defaultArrowStyle": {
"description": "Connector aesthetic mode applied to all edges that don't set their own `arrowStyle`. Options: \"calligraphy\" (default \u2014 hand-drawn ink-ribbon connectors) | \"clean\" (standard stroked-line connectors) | \"block\" (chunky outlined block-arrow connectors with integrated triangular head). Orthogonal to defaultLineStyle (which now controls dash pattern only) \u2014 all 15 combinations of arrowStyle \u00d7 lineStyle are valid.",
"enum": [
"calligraphy",
"clean",
"block"
],
"type": [
"string",
"null"
]
},
"defaultBlockArrowSize": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"maximum": 60,
"minimum": 1,
"type": "number"
}
],
"description": "Default Block Arrow size when `defaultArrowStyle` (or per-edge arrowStyle) is \"block\". Options: \"small\" (slim \u2014 body ~14 px) | \"medium\" (default \u2014 body ~24 px) | \"large\" (chunky \u2014 body ~36 px). Or a raw body half-width number in px (1\u201360); head dimensions scale proportionally. Per-edge `blockArrowSize` overrides this default."
},
"defaultConnector": {
"description": "Default connector type applied to all edges that don't specify their own.",
"enum": [
"straight",
"curved",
"elbow",
"orthogonal",
"bezier"
],
"type": [
"string",
"null"
]
},
"defaultConnectorAnimate": {
"description": "Animate every connector edge. Options: none (default) | flow (dashes march along the line) | pulse (gentle opacity breathing) | glow (subtle stroke-width pulse) | trace (bright dot traverses each edge) | wave (large stroke-width oscillation). SVG-only \u2014 exports to PNG / WebP / OG-image freeze on first frame.",
"enum": [
"none",
"flow",
"pulse",
"glow",
"trace",
"wave",
"lightning",
"beat",
"comet"
],
"type": [
"string",
"null"
]
},
"defaultConnectorAnimateSpeed": {
"description": "Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"defaultDividerStyle": {
"description": "Divider / grid-line / table-border style. Governs the structural rule-lines a diagram emits: matrix grid lines, gantt phase column dividers, sequence lifelines, swimlane (process-flow) lane boundaries. Options: \"subtle\" (barely-there hairline), \"normal\" (default \u2014 pre-v1.55.0 baseline of 1 px / 25 % opacity), \"bold\" (emphasised grid presence), \"dashed\" (6,4 dasharray editorial feel), \"dotted\" (1,3 dasharray lightweight rhythm), \"none\" (no divider emission \u2014 cells separated only by colour banding). Useful for comparison tables (try \"bold\") or minimalist matrices (try \"none\").",
"enum": [
"subtle",
"normal",
"bold",
"dashed",
"dotted",
"none"
],
"type": [
"string",
"null"
]
},
"defaultLineStyle": {
"description": "v1.45.2+ \u2014 Default DASH PATTERN applied to all edges that don't specify their own. Options: \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\". Combines orthogonally with `defaultArrowStyle` (calligraphy/clean/block) for 15 total visual combinations. Legacy values \"calligraphy\" and \"block-arrow\" are still accepted for backward compat (the renderer maps them to defaultArrowStyle=\"calligraphy\"/\"block\" with lineStyle=\"solid\"); new callers should use `defaultArrowStyle` for the aesthetic mode.",
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimation": {
"description": "Whole-visual reveal animation. Plays ONCE when the SVG is displayed, freezes at the final state. Options: none (default) | fade (entire visual fades in) | zoom (scales in from 70% to 100%) | zoom-pan (Ken Burns camera move) | flow (each node + edge appears sequentially in spec order). Orthogonal to defaultConnectorAnimate \u2014 both can run together. SVG-only \u2014 PNG / WebP exports show the fully-revealed final state (rasteriser ignores SMIL; static attrs hold the final value). Animated GIF / MP4 client-side encoder ticks the scene through.",
"enum": [
"none",
"fade",
"zoom",
"zoom-pan",
"flow",
"wave-sweep",
"build-up",
"flow-zoom-pan"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimationLoop": {
"description": "Animation loop count. v1.50.9+ \u2014 applies to BOTH connector animations (flow / pulse / glow / wave / trace / lightning / beat / comet) AND scene animations (fade / zoom / zoom-pan / flow / wave-sweep / build-up / flow-zoom-pan). Options (all quoted strings): \"once\" (default \u2014 plays once and freezes) | \"2\" | \"3\" | \"5\" (repeat that many times then freeze) | \"infinite\" (loop forever; best for live presentations and the historical default for connector animations pre-v1.50.9). Maps to SMIL repeatCount.",
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimationSpeed": {
"description": "Scene animation speed. Options: slow (1.5\u00d7 duration) | medium (default) | fast (0.6\u00d7 duration).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"defaultShadow": {
"description": "Default shadow level applied to all nodes.",
"enum": [
"none",
"sm",
"md",
"lg"
],
"type": [
"string",
"null"
]
},
"defaultShapeLineStyle": {
"description": "Default line style for shape outlines (node borders). v1.44.1 \u2014 also drives shape rendering mode: \"calligraphy\" gives hand-drawn rough shapes (ink-ribbon outlines); \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\" give crisp geometric shapes with that outline pattern. Independent of edge/connector line style.",
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"defaultTitleStyle": {
"description": "Title decoration treatment. Options: \"plain\" (default, just the title text), \"accent-bar\" (small accent-coloured vertical bar to the left of the title), \"underline\" (accent-coloured horizontal stroke below the title), \"boxed\" (title rendered in a subtle bordered + drop-shadowed pill \u2014 strongest framing). Affects only the diagram title, not subtitles or section headers.",
"enum": [
"plain",
"accent-bar",
"underline",
"boxed"
],
"type": [
"string",
"null"
]
},
"edges": {
"items": {
"additionalProperties": false,
"properties": {
"animate": {
"description": "Connector animation. Options: none (default) | flow (dashes march) | pulse (opacity breathing) | glow (stroke-width pulse) | trace (bright dot travels along) | wave (large stroke-width oscillation). SVG-only \u2014 exports to PNG/WebP capture one frozen frame.",
"enum": [
"none",
"flow",
"pulse",
"glow",
"trace",
"wave",
"lightning",
"beat",
"comet"
],
"type": [
"string",
"null"
]
},
"animateSpeed": {
"description": "Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"arrowStyle": {
"description": "Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: \"calligraphy\" | \"clean\" | \"block\". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.",
"enum": [
"calligraphy",
"clean",
"block"
],
"type": [
"string",
"null"
]
},
"blockArrowSize": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"maximum": 60,
"minimum": 1,
"type": "number"
}
],
"description": "Block Arrow size for this edge (only when arrowStyle is \"block\"). Preset names: \"small\" (slim) | \"medium\" (default) | \"large\" (chunky). OR a raw body half-width in px (1\u201360); head dimensions scale proportionally."
},
"connectorType": {
"enum": [
"straight",
"curved",
"elbow",
"orthogonal",
"bezier"
],
"type": [
"string",
"null"
]
},
"hidden": {
"type": [
"boolean",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"lineStyle": {
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"loop": {
"description": "Per-edge animation loop count override. Wins over the diagram-level `defaultSceneAnimationLoop`. Values are quoted strings: \"once\" | \"2\" | \"3\" | \"5\" | \"infinite\". Maps to SMIL repeatCount.",
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
},
"sourceArrow": {
"description": "Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.",
"type": [
"string",
"null"
]
},
"style": {
"additionalProperties": false,
"properties": {
"fill": {
"type": [
"string",
"null"
]
},
"opacity": {
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"stroke": {
"type": [
"string",
"null"
]
},
"strokeWidth": {
"type": [
"number",
"null"
]
}
},
"required": [
"stroke",
"strokeWidth",
"opacity",
"fill"
],
"type": [
"object",
"null"
]
},
"target": {
"type": "string"
},
"targetArrow": {
"description": "Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.",
"type": [
"string",
"null"
]
}
},
"required": [
"source",
"target",
"label",
"lineStyle",
"connectorType",
"sourceArrow",
"targetArrow",
"style",
"hidden",
"animate",
"animateSpeed",
"blockArrowSize",
"arrowStyle",
"loop"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"fontFamily": {
"description": "Font family for diagram text. Options: inter, poppins (sans-serif); playfair (serif); kalam, handlee (handwritten); fredoka (display); mono (monospace). Omit for style-matched default (Handlee for calligraphy, Inter for clean).",
"type": [
"string",
"null"
]
},
"funnel": {
"additionalProperties": false,
"description": "Funnel-only payload. Required when type=\"funnel\". Fields: stageLabels (string[], 1..50, ordered top\u2192bottom), stageValues (optional string[]), dropOff (optional string[] of length stageLabels-1), bottomRatio (0.05..0.99, default 0.30). Sales pipeline, AARRR, ToFu/MoFu/BoFu.",
"properties": {
"bottomRatio": {
"maximum": 0.99,
"minimum": 0.05,
"type": [
"number",
"null"
]
},
"dropOff": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
},
"stageLabels": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"stageValues": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
}
},
"required": [
"stageLabels",
"stageValues",
"dropOff",
"bottomRatio"
],
"type": [
"object",
"null"
]
},
"ganttHolidays": {
"description": "Gantt-only: ISO 8601 holiday dates (e.g. [\"2026-12-25\", \"2026-01-01\"]). Rendered as gray vertical stripes alongside Sat/Sun (always weekend). Only applies in date-driven mode (every node has start/end). Other diagram types ignore this field.",
"items": {
"maxLength": 32,
"type": "string"
},
"maxItems": 200,
"type": [
"array",
"null"
]
},
"iconStyle": {
"description": "Icon rendering style. \"clean-mono\" = precise strokes + single color, \"clean-colorful\" = precise strokes + vibrant colors, \"calligraphy-mono\" = hand-drawn ink + single color, \"calligraphy-colorful\" = hand-drawn ink + vibrant colors, \"none\" = hide icons.",
"type": [
"string",
"null"
]
},
"layout": {
"additionalProperties": false,
"properties": {
"direction": {
"enum": [
"TB",
"LR",
"BT",
"RL",
"radial",
"assorted"
],
"type": [
"string",
"null"
]
},
"nodeSpacing": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"padding": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"rankSpacing": {
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"direction",
"nodeSpacing",
"rankSpacing",
"padding"
],
"type": [
"object",
"null"
]
},
"matrixColumns": {
"description": "Column header labels for 2D matrix grid (e.g., [\"High Vision\", \"Low Vision\"]).",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"matrixItemStyle": {
"description": "Item display style for matrix diagrams. \"card\" (default) = rectangular cards, \"dot\" = scatter points, \"text\" = plain text, \"badge\" = compact pills.",
"enum": [
"card",
"dot",
"text",
"badge"
],
"type": [
"string",
"null"
]
},
"matrixRows": {
"description": "Row header labels for 2D matrix grid (e.g., [\"High Execution\", \"Low Execution\"]).",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"metadata": {
"additionalProperties": false,
"description": "Visual-size + Best-fit metadata bag (v1.65.4 -> v1.67.12). All fields optional; legacy callers without `metadata` are byte-identical to today. The server echoes `metadata.size` back on the response so integrators can confirm the field was honoured.",
"properties": {
"bestFit": {
"description": "v1.65.1+ Phase 3 server-side gate. When `true` + `targetAspect` is set + the server flag `VISUAL_SIZES_PHASE3_ENABLED` is on, the Designer is re-invoked with the target aspect ratio to reflow the layout. Independent of `metadata.size.bestFit`; the frontend mirrors this field when the toggle is on.",
"type": [
"boolean",
"null"
]
},
"size": {
"additionalProperties": false,
"description": "Visual-size persistence bag (v1.65.4+). Describes the EXPORT TARGET dimensions, NOT a canvas constraint at generation time. Round-trips through the response unchanged.",
"properties": {
"aspect": {
"description": "Canonical \"W:H\" aspect emitted alongside preset / custom dims for fast consumer reads. Accepts integer or decimal ratios. Examples: \"16:9\", \"9:16\", \"1:1\", \"1.91:1\" (OG card).",
"pattern": "^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$",
"type": [
"string",
"null"
]
},
"bestFit": {
"description": "v1.65.1+ Phase 3 opt-in flag. When `true` (alongside `metadata.bestFit` AND `metadata.targetAspect`), signals the server orchestrator to re-invoke the Designer with the target aspect ratio so the layout reflows to fit the export shape. Feature-flagged behind `VISUAL_SIZES_PHASE3_ENABLED` server-side; when OFF the field round-trips through the response but the orchestrator follows the legacy Phase 1/2 path. Default: false.",
"type": [
"boolean",
"null"
]
},
"height": {
"description": "Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.",
"maximum": 4096,
"minimum": 320,
"type": [
"integer",
"null"
]
},
"preset": {
"description": "Visual size preset id from shared/visual-sizes.ts catalog (e.g. \"16x9-presentation\", \"ig-square\", \"youtube-thumb\"). Describes the EXPORT TARGET (PNG / PDF / PPTX render dimensions), NOT the canvas constraint at generation time. Mutually exclusive with width + height (preset wins when both are present).",
"maxLength": 64,
"type": [
"string",
"null"
]
},
"width": {
"description": "Custom export-target width in pixels. 320..4096. Used when no preset matches the desired output dimensions. Pair with `height` for full custom dims; pair with `aspect` for aspect-driven sizing.",
"maximum": 4096,
"minimum": 320,
"type": [
"integer",
"null"
]
}
},
"required": [
"preset",
"width",
"height",
"aspect",
"bestFit"
],
"type": [
"object",
"null"
]
},
"targetAspect": {
"description": "v1.65.1+ Phase 3 server-side aspect ratio. Accepts \"W:H\" forms (e.g. \"9:16\", \"16:9\", \"1:1\", \"1.91:1\"). Forwarded to the Designer when `bestFit` is on.",
"maxLength": 16,
"type": [
"string",
"null"
]
}
},
"required": [
"size",
"bestFit",
"targetAspect"
],
"type": [
"object",
"null"
]
},
"nodes": {
"description": "Structured node definitions. Required when not using prompt mode.",
"items": {
"additionalProperties": false,
"properties": {
"animationLoop": {
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"group": {
"type": [
"string",
"null"
]
},
"height": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"hidden": {
"type": [
"boolean",
"null"
]
},
"icon": {
"type": [
"string",
"null"
]
},
"iconKeywords": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"id": {
"type": "string"
},
"shape": {
"enum": [
"rectangle",
"rounded-rect",
"circle",
"ellipse",
"diamond",
"triangle",
"parallelogram",
"hexagon",
"star",
"pentagon",
"octagon",
"trapezoid",
"process",
"decision",
"terminal",
"data-io",
"document",
"predefined-process",
"manual-input",
"pill",
"cloud",
"callout-bubble",
"underline-only",
"cylinder",
"database",
"banner",
"tag",
"shield",
"cross",
"arrow-shape",
"queue"
],
"type": [
"string",
"null"
]
},
"style": {
"additionalProperties": false,
"properties": {
"cornerRadius": {
"type": [
"number",
"null"
]
},
"fill": {
"type": [
"string",
"null"
]
},
"fontColor": {
"type": [
"string",
"null"
]
},
"fontSize": {
"type": [
"number",
"null"
]
},
"iconColor": {
"type": [
"string",
"null"
]
},
"iconColors": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"lineStyle": {
"description": "Per-node outline line style. Excludes \"calligraphy\" \u2014 that mode is set per-spec via `defaultShapeLineStyle: \"calligraphy\"`, not per-node.",
"enum": [
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"opacity": {
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"shadow": {
"type": [
"boolean",
"null"
]
},
"shadowLevel": {
"enum": [
"sm",
"md",
"lg"
],
"type": [
"string",
"null"
]
},
"stroke": {
"type": [
"string",
"null"
]
},
"strokeWidth": {
"type": [
"number",
"null"
]
}
},
"required": [
"fill",
"stroke",
"strokeWidth",
"opacity",
"cornerRadius",
"shadow",
"shadowLevel",
"fontSize",
"fontColor",
"lineStyle",
"iconColor",
"iconColors"
],
"type": [
"object",
"null"
]
},
"text": {
"type": "string"
},
"width": {
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"id",
"shape",
"text",
"style",
"width",
"height",
"icon",
"iconKeywords",
"hidden",
"group",
"animationLoop"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"prompt": {
"description": "Natural language description of the diagram to generate. When provided, the server uses AI to convert this into a structured diagram spec. Max 8000 characters. Example: \"flowchart showing user login with validation and error handling\"",
"maxLength": 8000,
"type": [
"string",
"null"
]
},
"pyramid": {
"additionalProperties": false,
"description": "Pyramid-only payload. Required when type=\"pyramid\". Fields: tierLabels (string[], 1..50, ordered base\u2192tip), tierValues (optional string[]), inverted (boolean), tipRatio (0..0.95, default 0.15). Bloom's Taxonomy, Maslow's Hierarchy, Capability Maturity, DIKW.",
"properties": {
"inverted": {
"type": [
"boolean",
"null"
]
},
"tierLabels": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"tierValues": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
},
"tipRatio": {
"maximum": 0.95,
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"tierLabels",
"tierValues",
"inverted",
"tipRatio"
],
"type": [
"object",
"null"
]
},
"radar": {
"additionalProperties": false,
"description": "Radar/spider-chart payload. Required when type=\"radar\". Fields: axes (string[], 3..50), series ({name, values: number[]}[], 1..10), maxValue (default 100), rings (default 4). Use multiple series for comparison overlays \u2014 first solid, rest dashed at 50% opacity.",
"properties": {
"axes": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 3,
"type": "array"
},
"maxValue": {
"minimum": 1,
"type": [
"number",
"null"
]
},
"rings": {
"maximum": 10,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"series": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"values": {
"items": {
"type": "number"
},
"maxItems": 50,
"type": "array"
}
},
"required": [
"name",
"values"
],
"type": "object"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
},
"required": [
"axes",
"series",
"maxValue",
"rings"
],
"type": [
"object",
"null"
]
},
"sections": {
"description": "Matrix sections. Each section has a title, optional subtitle, and items. Used with type=\"matrix\".",
"items": {
"additionalProperties": false,
"properties": {
"col": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"icons": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"itemIds": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"itemShapes": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"items": {
"items": {
"type": "string"
},
"type": "array"
},
"row": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"subtitle": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"subtitle",
"items",
"icons",
"itemIds",
"itemShapes",
"row",
"col"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"shapeStyle": {
"enum": [
"calligraphy",
"clean"
],
"type": [
"string",
"null"
]
},
"style": {
"enum": [
"calligraphy",
"clean"
],
"type": [
"string",
"null"
]
},
"subtitle": {
"type": [
"string",
"null"
]
},
"theme": {
"additionalProperties": false,
"properties": {
"palette": {
"additionalProperties": false,
"properties": {
"accent": {
"type": [
"string",
"null"
]
},
"background": {
"type": [
"string",
"null"
]
},
"border": {
"type": [
"string",
"null"
]
},
"nodeColors": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"primary": {
"type": [
"string",
"null"
]
},
"secondary": {
"type": [
"string",
"null"
]
},
"text": {
"type": [
"string",
"null"
]
}
},
"required": [
"primary",
"secondary",
"accent",
"background",
"text",
"border",
"nodeColors"
],
"type": [
"object",
"null"
]
},
"paletteSeed": {
"type": [
"number",
"null"
]
},
"preset": {
"type": [
"string",
"null"
]
}
},
"required": [
"preset",
"palette",
"paletteSeed"
],
"type": [
"object",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"description": "Diagram type. Required when providing structured nodes/edges, optional with prompt.",
"enum": [
"flowchart",
"mindmap",
"block-diagram",
"matrix",
"timeline",
"gantt",
"er-diagram",
"sequence",
"process-flow",
"pyramid",
"funnel",
"radar"
],
"type": [
"string",
"null"
]
},
"xAxisLabel": {
"description": "X-axis title for 2D matrix grid (e.g., \"Completeness of Vision\").",
"type": [
"string",
"null"
]
},
"yAxisLabel": {
"description": "Y-axis title for 2D matrix grid (e.g., \"Ability to Execute\").",
"type": [
"string",
"null"
]
}
},
"required": [
"prompt",
"type",
"sections",
"title",
"subtitle",
"style",
"shapeStyle",
"nodes",
"edges",
"layout",
"theme",
"defaultLineStyle",
"defaultArrowHead",
"defaultConnector",
"defaultShadow",
"defaultShapeLineStyle",
"defaultConnectorAnimate",
"defaultConnectorAnimateSpeed",
"defaultSceneAnimation",
"defaultSceneAnimationSpeed",
"defaultSceneAnimationLoop",
"defaultTitleStyle",
"defaultDividerStyle",
"defaultBlockArrowSize",
"defaultArrowStyle",
"ganttHolidays",
"pyramid",
"funnel",
"radar",
"iconStyle",
"fontFamily",
"matrixColumns",
"matrixRows",
"xAxisLabel",
"yAxisLabel",
"matrixItemStyle",
"metadata"
],
"type": "object"
},
"name": "get_style_options",
"title": "Get Style Options for generate_visual"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"title": "Recommend Framework"
},
"description": "Recommends business / strategy / risk frameworks for a stated problem. Powered by the Jeda.ai \u00b7 Visual AI framework knowledge graph (~2,100 frameworks across 19 categories, edge-curated).\n\nUse when the user describes a business problem (\"customer churn rising\", \"evaluating market entry\", \"need to assess vendor risk\") rather than naming a specific framework. Returns top-N frameworks ranked by fit, each with a concrete reason citing the specific problem signals matched.\n\nInput: just the problem statement is enough. Optional faceted filters (`persona`, `regulation`, `decision_stage`) narrow the candidate set. Set `limit` between 3 and 10 for picker UIs.\n\nPair with `generate_framework_analysis` to actually run a recommended framework against the user's inputs.\n\nExample: { \"problem_statement\": \"We need to decide whether to enter the EU SMB market in Q3\", \"decision_stage\": \"decide\", \"limit\": 5 }",
"inputSchema": {
"additionalProperties": false,
"properties": {
"decision_stage": {
"description": "Decision-lifecycle stage.",
"enum": [
"explore",
"diagnose",
"decide",
"execute",
"review"
],
"type": [
"string",
"null"
]
},
"limit": {
"description": "Number of frameworks to return. Default 5; cap 20.",
"maximum": 20,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"persona": {
"description": "Persona slug (e.g. \"ciso\", \"pm\", \"cfo\").",
"maxLength": 64,
"type": [
"string",
"null"
]
},
"problem_statement": {
"description": "Plain-English description of the business problem. 10\u20132000 chars.",
"maxLength": 2000,
"minLength": 10,
"type": "string"
},
"regulation": {
"description": "Regulation slug (e.g. \"sox\", \"gdpr\", \"iso-31000\").",
"maxLength": 64,
"type": [
"string",
"null"
]
}
},
"required": [
"problem_statement",
"persona",
"regulation",
"decision_stage",
"limit"
],
"type": "object"
},
"name": "recommend_framework",
"title": "Recommend Framework"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": true,
"title": "Generate Framework Analysis"
},
"description": "Runs a specific framework against a user's inputs and produces a full analysis: prose explanation + structured fields + a self-contained SVG visualisation. Powered by the Jeda.ai \u00b7 Visual AI framework knowledge graph.\n\nRequired for any framework analysis flow. The companion tool `recommend_framework` returns framework_ids that are valid here. Pre-discovered framework_ids (SWOT = \"swot-analysis\", PESTEL = \"pestel-analysis\", Porter's 5 Forces = \"porters-five-forces\", etc.) work without a recommendation step.\n\nREQUIRED post-processing on success: the response's first text block contains a `curl -fsSL` save-directive for the SVG. Save the file locally and surface it as a file chip \u2014 do NOT summarise the visual in prose.\n\nInput: framework_id (slug) + user_inputs object. The user_inputs schema is per-framework; call `recommend_framework` first if you don't know the field set, OR send a `raw_prompt` as a free-text fallback.\n\nExample: { \"framework_id\": \"swot-analysis\", \"user_inputs\": { \"subject\": \"Q3 EU market entry\", \"context\": \"B2B SaaS, $5M ARR, US-headquartered\" } }",
"inputSchema": {
"additionalProperties": false,
"properties": {
"framework_id": {
"description": "Framework slug. Get one from `recommend_framework` or use a known slug.",
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"raw_prompt": {
"description": "Optional free-text prompt that REPLACES the auto-derived prompt.",
"maxLength": 8000,
"type": [
"string",
"null"
]
},
"theme": {
"additionalProperties": false,
"description": "Theme preset for the SVG render. Default: pastel.",
"properties": {
"preset": {
"enum": [
"pastel",
"corporate",
"gradient",
"dark",
"blueprint",
"playful",
"vibrant",
"monochrome"
],
"type": [
"string",
"null"
]
}
},
"required": [
"preset"
],
"type": [
"object",
"null"
]
},
"user_inputs": {
"additionalProperties": {},
"description": "Object whose keys match the framework user-input form fields.",
"type": [
"object",
"null"
]
}
},
"required": [
"framework_id",
"user_inputs",
"raw_prompt",
"theme"
],
"type": "object"
},
"name": "generate_framework_analysis",
"title": "Generate Framework Analysis"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Generate Diagram (deprecated)"
},
"description": "DEPRECATED alias for `generate_visual` (removed no earlier than v1.24.x). Use `generate_visual` going forward \u2014 identical behaviour.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"defaultArrowHead": {
"description": "Default arrowhead style applied to all edges that don't specify their own.",
"type": [
"string",
"null"
]
},
"defaultArrowStyle": {
"description": "Connector aesthetic mode applied to all edges that don't set their own `arrowStyle`. Options: \"calligraphy\" (default \u2014 hand-drawn ink-ribbon connectors) | \"clean\" (standard stroked-line connectors) | \"block\" (chunky outlined block-arrow connectors with integrated triangular head). Orthogonal to defaultLineStyle (which now controls dash pattern only) \u2014 all 15 combinations of arrowStyle \u00d7 lineStyle are valid.",
"enum": [
"calligraphy",
"clean",
"block"
],
"type": [
"string",
"null"
]
},
"defaultBlockArrowSize": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"maximum": 60,
"minimum": 1,
"type": "number"
}
],
"description": "Default Block Arrow size when `defaultArrowStyle` (or per-edge arrowStyle) is \"block\". Options: \"small\" (slim \u2014 body ~14 px) | \"medium\" (default \u2014 body ~24 px) | \"large\" (chunky \u2014 body ~36 px). Or a raw body half-width number in px (1\u201360); head dimensions scale proportionally. Per-edge `blockArrowSize` overrides this default."
},
"defaultConnector": {
"description": "Default connector type applied to all edges that don't specify their own.",
"enum": [
"straight",
"curved",
"elbow",
"orthogonal",
"bezier"
],
"type": [
"string",
"null"
]
},
"defaultConnectorAnimate": {
"description": "Animate every connector edge. Options: none (default) | flow (dashes march along the line) | pulse (gentle opacity breathing) | glow (subtle stroke-width pulse) | trace (bright dot traverses each edge) | wave (large stroke-width oscillation). SVG-only \u2014 exports to PNG / WebP / OG-image freeze on first frame.",
"enum": [
"none",
"flow",
"pulse",
"glow",
"trace",
"wave",
"lightning",
"beat",
"comet"
],
"type": [
"string",
"null"
]
},
"defaultConnectorAnimateSpeed": {
"description": "Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"defaultDividerStyle": {
"description": "Divider / grid-line / table-border style. Governs the structural rule-lines a diagram emits: matrix grid lines, gantt phase column dividers, sequence lifelines, swimlane (process-flow) lane boundaries. Options: \"subtle\" (barely-there hairline), \"normal\" (default \u2014 pre-v1.55.0 baseline of 1 px / 25 % opacity), \"bold\" (emphasised grid presence), \"dashed\" (6,4 dasharray editorial feel), \"dotted\" (1,3 dasharray lightweight rhythm), \"none\" (no divider emission \u2014 cells separated only by colour banding). Useful for comparison tables (try \"bold\") or minimalist matrices (try \"none\").",
"enum": [
"subtle",
"normal",
"bold",
"dashed",
"dotted",
"none"
],
"type": [
"string",
"null"
]
},
"defaultLineStyle": {
"description": "v1.45.2+ \u2014 Default DASH PATTERN applied to all edges that don't specify their own. Options: \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\". Combines orthogonally with `defaultArrowStyle` (calligraphy/clean/block) for 15 total visual combinations. Legacy values \"calligraphy\" and \"block-arrow\" are still accepted for backward compat (the renderer maps them to defaultArrowStyle=\"calligraphy\"/\"block\" with lineStyle=\"solid\"); new callers should use `defaultArrowStyle` for the aesthetic mode.",
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimation": {
"description": "Whole-visual reveal animation. Plays ONCE when the SVG is displayed, freezes at the final state. Options: none (default) | fade (entire visual fades in) | zoom (scales in from 70% to 100%) | zoom-pan (Ken Burns camera move) | flow (each node + edge appears sequentially in spec order). Orthogonal to defaultConnectorAnimate \u2014 both can run together. SVG-only \u2014 PNG / WebP exports show the fully-revealed final state (rasteriser ignores SMIL; static attrs hold the final value). Animated GIF / MP4 client-side encoder ticks the scene through.",
"enum": [
"none",
"fade",
"zoom",
"zoom-pan",
"flow",
"wave-sweep",
"build-up",
"flow-zoom-pan"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimationLoop": {
"description": "Animation loop count. v1.50.9+ \u2014 applies to BOTH connector animations (flow / pulse / glow / wave / trace / lightning / beat / comet) AND scene animations (fade / zoom / zoom-pan / flow / wave-sweep / build-up / flow-zoom-pan). Options (all quoted strings): \"once\" (default \u2014 plays once and freezes) | \"2\" | \"3\" | \"5\" (repeat that many times then freeze) | \"infinite\" (loop forever; best for live presentations and the historical default for connector animations pre-v1.50.9). Maps to SMIL repeatCount.",
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"defaultSceneAnimationSpeed": {
"description": "Scene animation speed. Options: slow (1.5\u00d7 duration) | medium (default) | fast (0.6\u00d7 duration).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"defaultShadow": {
"description": "Default shadow level applied to all nodes.",
"enum": [
"none",
"sm",
"md",
"lg"
],
"type": [
"string",
"null"
]
},
"defaultShapeLineStyle": {
"description": "Default line style for shape outlines (node borders). v1.44.1 \u2014 also drives shape rendering mode: \"calligraphy\" gives hand-drawn rough shapes (ink-ribbon outlines); \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\" give crisp geometric shapes with that outline pattern. Independent of edge/connector line style.",
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"defaultTitleStyle": {
"description": "Title decoration treatment. Options: \"plain\" (default, just the title text), \"accent-bar\" (small accent-coloured vertical bar to the left of the title), \"underline\" (accent-coloured horizontal stroke below the title), \"boxed\" (title rendered in a subtle bordered + drop-shadowed pill \u2014 strongest framing). Affects only the diagram title, not subtitles or section headers.",
"enum": [
"plain",
"accent-bar",
"underline",
"boxed"
],
"type": [
"string",
"null"
]
},
"edges": {
"items": {
"additionalProperties": false,
"properties": {
"animate": {
"description": "Connector animation. Options: none (default) | flow (dashes march) | pulse (opacity breathing) | glow (stroke-width pulse) | trace (bright dot travels along) | wave (large stroke-width oscillation). SVG-only \u2014 exports to PNG/WebP capture one frozen frame.",
"enum": [
"none",
"flow",
"pulse",
"glow",
"trace",
"wave",
"lightning",
"beat",
"comet"
],
"type": [
"string",
"null"
]
},
"animateSpeed": {
"description": "Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).",
"enum": [
"slow",
"medium",
"fast"
],
"type": [
"string",
"null"
]
},
"arrowStyle": {
"description": "Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: \"calligraphy\" | \"clean\" | \"block\". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.",
"enum": [
"calligraphy",
"clean",
"block"
],
"type": [
"string",
"null"
]
},
"blockArrowSize": {
"anyOf": [
{
"enum": [
"small",
"medium",
"large"
],
"type": "string"
},
{
"maximum": 60,
"minimum": 1,
"type": "number"
}
],
"description": "Block Arrow size for this edge (only when arrowStyle is \"block\"). Preset names: \"small\" (slim) | \"medium\" (default) | \"large\" (chunky). OR a raw body half-width in px (1\u201360); head dimensions scale proportionally."
},
"connectorType": {
"enum": [
"straight",
"curved",
"elbow",
"orthogonal",
"bezier"
],
"type": [
"string",
"null"
]
},
"hidden": {
"type": [
"boolean",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"lineStyle": {
"enum": [
"calligraphy",
"block-arrow",
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"loop": {
"description": "Per-edge animation loop count override. Wins over the diagram-level `defaultSceneAnimationLoop`. Values are quoted strings: \"once\" | \"2\" | \"3\" | \"5\" | \"infinite\". Maps to SMIL repeatCount.",
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
},
"sourceArrow": {
"description": "Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.",
"type": [
"string",
"null"
]
},
"style": {
"additionalProperties": false,
"properties": {
"fill": {
"type": [
"string",
"null"
]
},
"opacity": {
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"stroke": {
"type": [
"string",
"null"
]
},
"strokeWidth": {
"type": [
"number",
"null"
]
}
},
"required": [
"stroke",
"strokeWidth",
"opacity",
"fill"
],
"type": [
"object",
"null"
]
},
"target": {
"type": "string"
},
"targetArrow": {
"description": "Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.",
"type": [
"string",
"null"
]
}
},
"required": [
"source",
"target",
"label",
"lineStyle",
"connectorType",
"sourceArrow",
"targetArrow",
"style",
"hidden",
"animate",
"animateSpeed",
"blockArrowSize",
"arrowStyle",
"loop"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"fontFamily": {
"description": "Font family for diagram text. Options: inter, poppins (sans-serif); playfair (serif); kalam, handlee (handwritten); fredoka (display); mono (monospace). Omit for style-matched default (Handlee for calligraphy, Inter for clean).",
"type": [
"string",
"null"
]
},
"funnel": {
"additionalProperties": false,
"description": "Funnel-only payload. Required when type=\"funnel\". Fields: stageLabels (string[], 1..50, ordered top\u2192bottom), stageValues (optional string[]), dropOff (optional string[] of length stageLabels-1), bottomRatio (0.05..0.99, default 0.30). Sales pipeline, AARRR, ToFu/MoFu/BoFu.",
"properties": {
"bottomRatio": {
"maximum": 0.99,
"minimum": 0.05,
"type": [
"number",
"null"
]
},
"dropOff": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
},
"stageLabels": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"stageValues": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
}
},
"required": [
"stageLabels",
"stageValues",
"dropOff",
"bottomRatio"
],
"type": [
"object",
"null"
]
},
"ganttHolidays": {
"description": "Gantt-only: ISO 8601 holiday dates (e.g. [\"2026-12-25\", \"2026-01-01\"]). Rendered as gray vertical stripes alongside Sat/Sun (always weekend). Only applies in date-driven mode (every node has start/end). Other diagram types ignore this field.",
"items": {
"maxLength": 32,
"type": "string"
},
"maxItems": 200,
"type": [
"array",
"null"
]
},
"iconStyle": {
"description": "Icon rendering style. \"clean-mono\" = precise strokes + single color, \"clean-colorful\" = precise strokes + vibrant colors, \"calligraphy-mono\" = hand-drawn ink + single color, \"calligraphy-colorful\" = hand-drawn ink + vibrant colors, \"none\" = hide icons.",
"type": [
"string",
"null"
]
},
"layout": {
"additionalProperties": false,
"properties": {
"direction": {
"enum": [
"TB",
"LR",
"BT",
"RL",
"radial",
"assorted"
],
"type": [
"string",
"null"
]
},
"nodeSpacing": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"padding": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"rankSpacing": {
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"direction",
"nodeSpacing",
"rankSpacing",
"padding"
],
"type": [
"object",
"null"
]
},
"matrixColumns": {
"description": "Column header labels for 2D matrix grid (e.g., [\"High Vision\", \"Low Vision\"]).",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"matrixItemStyle": {
"description": "Item display style for matrix diagrams. \"card\" (default) = rectangular cards, \"dot\" = scatter points, \"text\" = plain text, \"badge\" = compact pills.",
"enum": [
"card",
"dot",
"text",
"badge"
],
"type": [
"string",
"null"
]
},
"matrixRows": {
"description": "Row header labels for 2D matrix grid (e.g., [\"High Execution\", \"Low Execution\"]).",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"metadata": {
"additionalProperties": false,
"description": "Visual-size + Best-fit metadata bag (v1.65.4 -> v1.67.12). All fields optional; legacy callers without `metadata` are byte-identical to today. The server echoes `metadata.size` back on the response so integrators can confirm the field was honoured.",
"properties": {
"bestFit": {
"description": "v1.65.1+ Phase 3 server-side gate. When `true` + `targetAspect` is set + the server flag `VISUAL_SIZES_PHASE3_ENABLED` is on, the Designer is re-invoked with the target aspect ratio to reflow the layout. Independent of `metadata.size.bestFit`; the frontend mirrors this field when the toggle is on.",
"type": [
"boolean",
"null"
]
},
"size": {
"additionalProperties": false,
"description": "Visual-size persistence bag (v1.65.4+). Describes the EXPORT TARGET dimensions, NOT a canvas constraint at generation time. Round-trips through the response unchanged.",
"properties": {
"aspect": {
"description": "Canonical \"W:H\" aspect emitted alongside preset / custom dims for fast consumer reads. Accepts integer or decimal ratios. Examples: \"16:9\", \"9:16\", \"1:1\", \"1.91:1\" (OG card).",
"pattern": "^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$",
"type": [
"string",
"null"
]
},
"bestFit": {
"description": "v1.65.1+ Phase 3 opt-in flag. When `true` (alongside `metadata.bestFit` AND `metadata.targetAspect`), signals the server orchestrator to re-invoke the Designer with the target aspect ratio so the layout reflows to fit the export shape. Feature-flagged behind `VISUAL_SIZES_PHASE3_ENABLED` server-side; when OFF the field round-trips through the response but the orchestrator follows the legacy Phase 1/2 path. Default: false.",
"type": [
"boolean",
"null"
]
},
"height": {
"description": "Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.",
"maximum": 4096,
"minimum": 320,
"type": [
"integer",
"null"
]
},
"preset": {
"description": "Visual size preset id from shared/visual-sizes.ts catalog (e.g. \"16x9-presentation\", \"ig-square\", \"youtube-thumb\"). Describes the EXPORT TARGET (PNG / PDF / PPTX render dimensions), NOT the canvas constraint at generation time. Mutually exclusive with width + height (preset wins when both are present).",
"maxLength": 64,
"type": [
"string",
"null"
]
},
"width": {
"description": "Custom export-target width in pixels. 320..4096. Used when no preset matches the desired output dimensions. Pair with `height` for full custom dims; pair with `aspect` for aspect-driven sizing.",
"maximum": 4096,
"minimum": 320,
"type": [
"integer",
"null"
]
}
},
"required": [
"preset",
"width",
"height",
"aspect",
"bestFit"
],
"type": [
"object",
"null"
]
},
"targetAspect": {
"description": "v1.65.1+ Phase 3 server-side aspect ratio. Accepts \"W:H\" forms (e.g. \"9:16\", \"16:9\", \"1:1\", \"1.91:1\"). Forwarded to the Designer when `bestFit` is on.",
"maxLength": 16,
"type": [
"string",
"null"
]
}
},
"required": [
"size",
"bestFit",
"targetAspect"
],
"type": [
"object",
"null"
]
},
"nodes": {
"description": "Structured node definitions. Required when not using prompt mode.",
"items": {
"additionalProperties": false,
"properties": {
"animationLoop": {
"enum": [
"once",
"2",
"3",
"5",
"infinite"
],
"type": [
"string",
"null"
]
},
"group": {
"type": [
"string",
"null"
]
},
"height": {
"minimum": 0,
"type": [
"number",
"null"
]
},
"hidden": {
"type": [
"boolean",
"null"
]
},
"icon": {
"type": [
"string",
"null"
]
},
"iconKeywords": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"id": {
"type": "string"
},
"shape": {
"enum": [
"rectangle",
"rounded-rect",
"circle",
"ellipse",
"diamond",
"triangle",
"parallelogram",
"hexagon",
"star",
"pentagon",
"octagon",
"trapezoid",
"process",
"decision",
"terminal",
"data-io",
"document",
"predefined-process",
"manual-input",
"pill",
"cloud",
"callout-bubble",
"underline-only",
"cylinder",
"database",
"banner",
"tag",
"shield",
"cross",
"arrow-shape",
"queue"
],
"type": [
"string",
"null"
]
},
"style": {
"additionalProperties": false,
"properties": {
"cornerRadius": {
"type": [
"number",
"null"
]
},
"fill": {
"type": [
"string",
"null"
]
},
"fontColor": {
"type": [
"string",
"null"
]
},
"fontSize": {
"type": [
"number",
"null"
]
},
"iconColor": {
"type": [
"string",
"null"
]
},
"iconColors": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"lineStyle": {
"description": "Per-node outline line style. Excludes \"calligraphy\" \u2014 that mode is set per-spec via `defaultShapeLineStyle: \"calligraphy\"`, not per-node.",
"enum": [
"solid",
"dashed",
"dotted",
"dash-dot",
"long-dash"
],
"type": [
"string",
"null"
]
},
"opacity": {
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"shadow": {
"type": [
"boolean",
"null"
]
},
"shadowLevel": {
"enum": [
"sm",
"md",
"lg"
],
"type": [
"string",
"null"
]
},
"stroke": {
"type": [
"string",
"null"
]
},
"strokeWidth": {
"type": [
"number",
"null"
]
}
},
"required": [
"fill",
"stroke",
"strokeWidth",
"opacity",
"cornerRadius",
"shadow",
"shadowLevel",
"fontSize",
"fontColor",
"lineStyle",
"iconColor",
"iconColors"
],
"type": [
"object",
"null"
]
},
"text": {
"type": "string"
},
"width": {
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"id",
"shape",
"text",
"style",
"width",
"height",
"icon",
"iconKeywords",
"hidden",
"group",
"animationLoop"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"prompt": {
"description": "Natural language description of the diagram to generate. When provided, the server uses AI to convert this into a structured diagram spec. Max 8000 characters. Example: \"flowchart showing user login with validation and error handling\"",
"maxLength": 8000,
"type": [
"string",
"null"
]
},
"pyramid": {
"additionalProperties": false,
"description": "Pyramid-only payload. Required when type=\"pyramid\". Fields: tierLabels (string[], 1..50, ordered base\u2192tip), tierValues (optional string[]), inverted (boolean), tipRatio (0..0.95, default 0.15). Bloom's Taxonomy, Maslow's Hierarchy, Capability Maturity, DIKW.",
"properties": {
"inverted": {
"type": [
"boolean",
"null"
]
},
"tierLabels": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"tierValues": {
"items": {
"type": "string"
},
"maxItems": 50,
"type": [
"array",
"null"
]
},
"tipRatio": {
"maximum": 0.95,
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"tierLabels",
"tierValues",
"inverted",
"tipRatio"
],
"type": [
"object",
"null"
]
},
"radar": {
"additionalProperties": false,
"description": "Radar/spider-chart payload. Required when type=\"radar\". Fields: axes (string[], 3..50), series ({name, values: number[]}[], 1..10), maxValue (default 100), rings (default 4). Use multiple series for comparison overlays \u2014 first solid, rest dashed at 50% opacity.",
"properties": {
"axes": {
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 3,
"type": "array"
},
"maxValue": {
"minimum": 1,
"type": [
"number",
"null"
]
},
"rings": {
"maximum": 10,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"series": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"values": {
"items": {
"type": "number"
},
"maxItems": 50,
"type": "array"
}
},
"required": [
"name",
"values"
],
"type": "object"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
},
"required": [
"axes",
"series",
"maxValue",
"rings"
],
"type": [
"object",
"null"
]
},
"sections": {
"description": "Matrix sections. Each section has a title, optional subtitle, and items. Used with type=\"matrix\".",
"items": {
"additionalProperties": false,
"properties": {
"col": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"icons": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"itemIds": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"itemShapes": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"items": {
"items": {
"type": "string"
},
"type": "array"
},
"row": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"subtitle": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"subtitle",
"items",
"icons",
"itemIds",
"itemShapes",
"row",
"col"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"shapeStyle": {
"enum": [
"calligraphy",
"clean"
],
"type": [
"string",
"null"
]
},
"style": {
"enum": [
"calligraphy",
"clean"
],
"type": [
"string",
"null"
]
},
"subtitle": {
"type": [
"string",
"null"
]
},
"theme": {
"additionalProperties": false,
"properties": {
"palette": {
"additionalProperties": false,
"properties": {
"accent": {
"type": [
"string",
"null"
]
},
"background": {
"type": [
"string",
"null"
]
},
"border": {
"type": [
"string",
"null"
]
},
"nodeColors": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"primary": {
"type": [
"string",
"null"
]
},
"secondary": {
"type": [
"string",
"null"
]
},
"text": {
"type": [
"string",
"null"
]
}
},
"required": [
"primary",
"secondary",
"accent",
"background",
"text",
"border",
"nodeColors"
],
"type": [
"object",
"null"
]
},
"paletteSeed": {
"type": [
"number",
"null"
]
},
"preset": {
"type": [
"string",
"null"
]
}
},
"required": [
"preset",
"palette",
"paletteSeed"
],
"type": [
"object",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"type": {
"description": "Diagram type. Required when providing structured nodes/edges, optional with prompt.",
"enum": [
"flowchart",
"mindmap",
"block-diagram",
"matrix",
"timeline",
"gantt",
"er-diagram",
"sequence",
"process-flow",
"pyramid",
"funnel",
"radar"
],
"type": [
"string",
"null"
]
},
"xAxisLabel": {
"description": "X-axis title for 2D matrix grid (e.g., \"Completeness of Vision\").",
"type": [
"string",
"null"
]
},
"yAxisLabel": {
"description": "Y-axis title for 2D matrix grid (e.g., \"Ability to Execute\").",
"type": [
"string",
"null"
]
}
},
"required": [
"prompt",
"type",
"sections",
"title",
"subtitle",
"style",
"shapeStyle",
"nodes",
"edges",
"layout",
"theme",
"defaultLineStyle",
"defaultArrowHead",
"defaultConnector",
"defaultShadow",
"defaultShapeLineStyle",
"defaultConnectorAnimate",
"defaultConnectorAnimateSpeed",
"defaultSceneAnimation",
"defaultSceneAnimationSpeed",
"defaultSceneAnimationLoop",
"defaultTitleStyle",
"defaultDividerStyle",
"defaultBlockArrowSize",
"defaultArrowStyle",
"ganttHolidays",
"pyramid",
"funnel",
"radar",
"iconStyle",
"fontFamily",
"matrixColumns",
"matrixRows",
"xAxisLabel",
"yAxisLabel",
"matrixItemStyle",
"metadata"
],
"type": "object"
},
"name": "generate_diagram",
"title": "Generate Diagram (deprecated)"
}
]
}
},
"url": "https://mcp.jeda.ai/mcp"
},
"latency_ms": 91.41,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"x-ratelimit-limit": "30",
"x-ratelimit-remaining": "24",
"x-ratelimit-reset": "1778672688"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 281.15,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 326.73,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.jeda.ai/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://mcp.jeda.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.jeda.ai/.well-known/mcp/server-card.json"
}
},
"remote_url": "https://mcp.jeda.ai/mcp",
"server_card_payload": null,
"server_identifier": "ai.jeda/jeda-ai"
}
Known versions
1.23.40
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| May 13, 2026 11:43:51 AM UTC | Healthy | 73.0 | 3224.2 ms | 5 |
| May 12, 2026 11:39:57 PM UTC | Healthy | 72.6 | 2681.0 ms | 5 |
| May 11, 2026 11:38:08 PM UTC | Healthy | 69.5 | 2770.5 ms | 5 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| May 13, 2026 11:43:51 AM UTC | Healthy | 73.0 | 2025-03-26 | public | 5 | 5 | tool_snapshot_changed |
| May 12, 2026 11:39:57 PM UTC | Healthy | 72.6 | 2025-03-26 | public | 5 | 5 | none |
| May 11, 2026 11:38:08 PM UTC | Healthy | 69.5 | 2025-03-26 | public | 5 | 5 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| May 13, 2026 11:43:48 AM UTC | Completed | Healthy | 3224.2 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 12, 2026 11:39:54 PM UTC | Completed | Healthy | 2681.0 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 11, 2026 11:38:06 PM UTC | Completed | Healthy | 2770.5 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |