Server definition
- Hash
- sha256:1c6d297ac0b05f041dc351c96f1252b3a6c447799a5270504a272627da39d727
- What it is
- What a remote MCP server returned when asked what it offers: 3 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Create a NEW architecture diagram from a graph that YOU author, and get back a shareable, editable canvas URL plus a rendered SVG and Mermaid.\n\nYou produce only the SEMANTICS — nodes, the groups (VPC/cluster/...) they live in, and the directed edges between them. You do NOT lay anything out: never send x/y/position/pinned. A deterministic layout engine computes all geometry and an icon layer picks the pictures from each node's kind.\n\nkind.catalog is one of aws | gcp | azure | k8s | saas | generic, each with rich per-catalog kind.types (e.g. aws:lambda, gcp:bigquery, azure:cosmos_db, k8s:deployment, saas:kafka):\n- \"aws\" (api_gateway, lambda, s3, rds, dynamodb, sqs, bedrock, kinesis, fargate, eventbridge, aurora, ...).\n- \"gcp\" (compute_engine, gke, cloud_run, cloud_sql, spanner, firestore, bigquery, pubsub, dataflow, vertex_ai, ...).\n- \"azure\" (virtual_machine, aks, app_service, functions, blob_storage, sql_database, cosmos_db, service_bus, event_hubs, key_vault, ...).\n- \"k8s\" (pod, deployment, statefulset, daemonset, job, cronjob, service, ingress, configmap, secret, hpa, ...).\n- \"saas\" for hosted third-parties (redis, postgresql, mysql, mongodb, kafka, stripe, twilio, auth0, github, cloudflare, ...).\n- \"generic\" primitive when nothing branded fits: service, database, cache, queue, user, external_system, storage, gateway, function, note.\n- \"generic\" FLOWCHART kinds for processes/flowcharts: process, decision, terminator, data, document, subprocess.\nedge.kind is one of: request, response, async_event, data_flow, dependency, network, generic.\n\nWORKED EXAMPLE — a user hitting an API in a VPC that talks to Postgres:\n{\n \"title\": \"Web API\",\n \"domain\": \"cloud_architecture\",\n \"graph\": {\n \"groups\": [{ \"id\": \"g_vpc\", \"label\": \"VPC\", \"type\": \"vpc\" }],\n \"nodes\": [\n { \"id\": \"n_user\", \"label\": \"User\", \"kind\": { \"catalog\": \"generic\", \"type\": \"user\" } },\n { \"id\": \"n_api\", \"label\": \"API\", \"kind\": { \"catalog\": \"aws\", \"type\": \"api_gateway\" }, \"parentId\": \"g_vpc\" },\n { \"id\": \"n_db\", \"label\": \"Postgres\", \"kind\": { \"catalog\": \"aws\", \"type\": \"rds\" }, \"parentId\": \"g_vpc\" }\n ],\n \"edges\": [\n { \"id\": \"e1\", \"source\": \"n_user\", \"target\": \"n_api\", \"kind\": \"request\" },\n { \"id\": \"e2\", \"source\": \"n_api\", \"target\": \"n_db\", \"kind\": \"data_flow\" }\n ]\n }\n}\n\nReturns { diagramId, url, svg, mermaid, version }. Give the user the url — opening it shows the same diagram on an editable canvas (anonymous; it's theirs to claim by signing in). To change the diagram afterwards, use get_diagram then edit_diagram.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"domain": {
"description": "Optional domain hint (default: generic).",
"enum": [
"cloud_architecture",
"system_design",
"sequence",
"flow",
"generic"
],
"type": "string"
},
"graph": {
"additionalProperties": false,
"properties": {
"edges": {
"description": "Directed connections between node ids.",
"items": {
"additionalProperties": false,
"properties": {
"directed": {
"type": "boolean"
},
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"enum": [
"request",
"response",
"async_event",
"data_flow",
"dependency",
"network",
"generic"
],
"type": "string"
},
"label": {
"type": "string"
},
"source": {
"description": "id of the source node.",
"minLength": 1,
"type": "string"
},
"target": {
"description": "id of the target node.",
"minLength": 1,
"type": "string"
}
},
"required": [
"id",
"source",
"target",
"kind"
],
"type": "object"
},
"type": "array"
},
"groups": {
"description": "Containers that nodes live in (VPCs, clusters, ...).",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Stable snake_case id you assign, e.g. g_vpc.",
"minLength": 1,
"type": "string"
},
"label": {
"type": "string"
},
"parentId": {
"description": "id of the parent group, for nested containers.",
"minLength": 1,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"color": {
"type": "string"
},
"dashed": {
"type": "boolean"
}
},
"type": "object"
},
"type": {
"enum": [
"vpc",
"subnet",
"availability_zone",
"region",
"cluster",
"trust_boundary",
"logical"
],
"type": "string"
}
},
"required": [
"id",
"label",
"type"
],
"type": "object"
},
"type": "array"
},
"nodes": {
"description": "The nodes (services, databases, users, ...).",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Stable snake_case id you assign, e.g. n_api. Referenced by edges.",
"minLength": 1,
"type": "string"
},
"kind": {
"additionalProperties": false,
"properties": {
"catalog": {
"enum": [
"aws",
"gcp",
"azure",
"k8s",
"saas",
"generic"
],
"type": "string"
},
"type": {
"description": "Catalog-specific type, e.g. api_gateway, rds, redis, service.",
"minLength": 1,
"type": "string"
}
},
"required": [
"catalog",
"type"
],
"type": "object"
},
"label": {
"description": "Human label shown on the node, e.g. 'API Gateway'.",
"type": "string"
},
"parentId": {
"description": "id of the group this node lives in (a VPC, cluster, ...).",
"minLength": 1,
"type": "string"
}
},
"required": [
"id",
"label",
"kind"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"title": {
"description": "A short title for the diagram.",
"minLength": 1,
"type": "string"
}
},
"required": [
"title",
"graph"
],
"type": "object"
},
"name": "create_diagram",
"outputSchema": null
},
{
"description": "Apply a list of operations to an EXISTING diagram. The ops re-use this tool's op vocabulary; you author them, we validate + apply + re-layout + re-render.\n\nALWAYS call get_diagram(diagramId) first: it returns the current ids and the `version`. Pass that version as `baseVersion`. If the diagram changed since you fetched it, you get a STALE_VERSION error telling you the current version — refetch with get_diagram, recompute your ops, and retry.\n\nThe operations (each element of `ops`):\n- add_node { op, node:{ id, label, kind, parentId? } }\n- remove_node { op, id } (also drops edges touching the node)\n- update_node { op, id, patch:{ label?, kind?, parentId?, metadata? } }\n- add_edge { op, edge:{ id, source, target, kind, label?, directed? } }\n- remove_edge { op, id }\n- update_edge { op, id, patch:{ source?, target?, label?, kind?, directed? } }\n- add_group { op, group:{ id, label, type, parentId? } }\n- remove_group{ op, id }\n- move_to_group { op, nodeId, groupId } (groupId null un-nests the node)\n- set_layout { op, patch:{ direction?, spacing? } }\n- insert_between { op, newNode:{ id, label, kind, parentId? }, sourceId, targetId, inKind?, outKind? }\n\ninsert_between IS THE KEY OP for \"add X between A and B\" requests. It splices newNode onto the existing A→B edge: removes that edge, adds the node, and wires A→newNode→B so the connection re-routes through it automatically.\n\nWORKED EXAMPLE — \"add a Redis cache between the API and the DB\" on the diagram above:\n1) get_diagram(diagramId) → shows nodes n_api, n_db and version 1.\n2) edit_diagram({ diagramId, baseVersion: 1, ops: [\n { \"op\": \"insert_between\", \"sourceId\": \"n_api\", \"targetId\": \"n_db\",\n \"newNode\": { \"id\": \"n_redis\", \"label\": \"Redis\", \"kind\": { \"catalog\": \"saas\", \"type\": \"redis\" }, \"parentId\": \"g_vpc\" },\n \"inKind\": \"request\", \"outKind\": \"data_flow\" }\n ] })\nThe API→DB edge is gone and now flows API→Redis→DB. Never send x/y/position — geometry is computed for you.\n\nNode kinds: catalog ∈ {aws, gcp, azure, k8s, saas, generic} with rich per-catalog types (e.g. aws:lambda, gcp:bigquery, azure:cosmos_db, k8s:deployment, saas:kafka), plus generic flowchart kinds (process, decision, terminator, data, document, subprocess).\n\nReturns { url, svg, mermaid, appliedOps, version }.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"baseVersion": {
"description": "The version you are editing against — get it from get_diagram. Stale → STALE_VERSION.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"diagramId": {
"description": "The diagram to edit (from create_diagram or get_diagram).",
"minLength": 1,
"type": "string"
},
"ops": {
"items": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"node": {
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"additionalProperties": false,
"properties": {
"catalog": {
"enum": [
"aws",
"gcp",
"azure",
"k8s",
"saas",
"generic"
],
"type": "string"
},
"type": {
"maxLength": 512,
"minLength": 1,
"type": "string"
}
},
"required": [
"catalog",
"type"
],
"type": "object"
},
"label": {
"maxLength": 512,
"type": "string"
},
"metadata": {
"additionalProperties": {},
"propertyNames": {
"maxLength": 256,
"type": "string"
},
"type": "object"
},
"parentId": {
"minLength": 1,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"bold": {
"type": "boolean"
},
"border": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"fill": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"textSize": {
"enum": [
"s",
"m",
"l"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"id",
"label",
"kind"
],
"type": "object"
},
"op": {
"const": "add_node",
"type": "string"
}
},
"required": [
"op",
"node"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"op": {
"const": "remove_node",
"type": "string"
}
},
"required": [
"op",
"id"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"op": {
"const": "update_node",
"type": "string"
},
"patch": {
"additionalProperties": false,
"properties": {
"kind": {
"additionalProperties": false,
"properties": {
"catalog": {
"enum": [
"aws",
"gcp",
"azure",
"k8s",
"saas",
"generic"
],
"type": "string"
},
"type": {
"maxLength": 512,
"minLength": 1,
"type": "string"
}
},
"required": [
"catalog",
"type"
],
"type": "object"
},
"label": {
"maxLength": 512,
"type": "string"
},
"metadata": {
"additionalProperties": {},
"propertyNames": {
"maxLength": 256,
"type": "string"
},
"type": "object"
},
"parentId": {
"minLength": 1,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"bold": {
"type": "boolean"
},
"border": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"fill": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"textSize": {
"enum": [
"s",
"m",
"l"
],
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
}
},
"required": [
"op",
"id",
"patch"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"edge": {
"additionalProperties": false,
"properties": {
"directed": {
"type": "boolean"
},
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"enum": [
"request",
"response",
"async_event",
"data_flow",
"dependency",
"network",
"generic"
],
"type": "string"
},
"label": {
"maxLength": 512,
"type": "string"
},
"source": {
"minLength": 1,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"bold": {
"type": "boolean"
},
"color": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"textSize": {
"enum": [
"s",
"m",
"l"
],
"type": "string"
},
"width": {
"enum": [
"thin",
"normal",
"thick"
],
"type": "string"
}
},
"type": "object"
},
"target": {
"minLength": 1,
"type": "string"
}
},
"required": [
"id",
"source",
"target",
"kind"
],
"type": "object"
},
"op": {
"const": "add_edge",
"type": "string"
}
},
"required": [
"op",
"edge"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"op": {
"const": "remove_edge",
"type": "string"
}
},
"required": [
"op",
"id"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"op": {
"const": "update_edge",
"type": "string"
},
"patch": {
"additionalProperties": false,
"properties": {
"directed": {
"type": "boolean"
},
"kind": {
"enum": [
"request",
"response",
"async_event",
"data_flow",
"dependency",
"network",
"generic"
],
"type": "string"
},
"label": {
"maxLength": 512,
"type": "string"
},
"source": {
"minLength": 1,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"bold": {
"type": "boolean"
},
"color": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"textSize": {
"enum": [
"s",
"m",
"l"
],
"type": "string"
},
"width": {
"enum": [
"thin",
"normal",
"thick"
],
"type": "string"
}
},
"type": "object"
},
"target": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
}
},
"required": [
"op",
"id",
"patch"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"group": {
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"label": {
"maxLength": 512,
"type": "string"
},
"parentId": {
"minLength": 1,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"color": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"dashed": {
"type": "boolean"
}
},
"type": "object"
},
"type": {
"enum": [
"vpc",
"subnet",
"availability_zone",
"region",
"cluster",
"trust_boundary",
"logical"
],
"type": "string"
}
},
"required": [
"id",
"label",
"type"
],
"type": "object"
},
"op": {
"const": "add_group",
"type": "string"
}
},
"required": [
"op",
"group"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"op": {
"const": "remove_group",
"type": "string"
}
},
"required": [
"op",
"id"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"op": {
"const": "update_group",
"type": "string"
},
"patch": {
"additionalProperties": false,
"properties": {
"label": {
"maxLength": 512,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"color": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"dashed": {
"type": "boolean"
}
},
"type": "object"
},
"type": {
"enum": [
"vpc",
"subnet",
"availability_zone",
"region",
"cluster",
"trust_boundary",
"logical"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"op",
"id",
"patch"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"groupId": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
]
},
"nodeId": {
"minLength": 1,
"type": "string"
},
"op": {
"const": "move_to_group",
"type": "string"
}
},
"required": [
"op",
"nodeId",
"groupId"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"op": {
"const": "set_layout",
"type": "string"
},
"patch": {
"additionalProperties": false,
"properties": {
"direction": {
"enum": [
"TB",
"LR",
"BT",
"RL"
],
"type": "string"
},
"engine": {
"enum": [
"elk",
"dagre"
],
"type": "string"
},
"spacing": {
"additionalProperties": false,
"properties": {
"layer": {
"maximum": 10000,
"minimum": 0,
"type": "number"
},
"node": {
"maximum": 10000,
"minimum": 0,
"type": "number"
}
},
"type": "object"
}
},
"type": "object"
}
},
"required": [
"op",
"patch"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"op": {
"const": "set_theme",
"type": "string"
},
"patch": {
"additionalProperties": false,
"properties": {
"background": {
"enum": [
"dots",
"grid",
"plain"
],
"type": "string"
},
"mode": {
"enum": [
"light",
"dark",
"blueprint"
],
"type": "string"
},
"styleMode": {
"enum": [
"plain",
"shadow"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"op",
"patch"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"op": {
"const": "set_title",
"type": "string"
},
"title": {
"maxLength": 256,
"minLength": 1,
"type": "string"
}
},
"required": [
"op",
"title"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"inKind": {
"enum": [
"request",
"response",
"async_event",
"data_flow",
"dependency",
"network",
"generic"
],
"type": "string"
},
"newNode": {
"additionalProperties": false,
"properties": {
"id": {
"minLength": 1,
"type": "string"
},
"kind": {
"additionalProperties": false,
"properties": {
"catalog": {
"enum": [
"aws",
"gcp",
"azure",
"k8s",
"saas",
"generic"
],
"type": "string"
},
"type": {
"maxLength": 512,
"minLength": 1,
"type": "string"
}
},
"required": [
"catalog",
"type"
],
"type": "object"
},
"label": {
"maxLength": 512,
"type": "string"
},
"metadata": {
"additionalProperties": {},
"propertyNames": {
"maxLength": 256,
"type": "string"
},
"type": "object"
},
"parentId": {
"minLength": 1,
"type": "string"
},
"style": {
"additionalProperties": false,
"properties": {
"bold": {
"type": "boolean"
},
"border": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"fill": {
"enum": [
"gray",
"slate",
"blue",
"teal",
"green",
"amber",
"orange",
"red",
"pink",
"violet"
],
"type": "string"
},
"textSize": {
"enum": [
"s",
"m",
"l"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"id",
"label",
"kind"
],
"type": "object"
},
"op": {
"const": "insert_between",
"type": "string"
},
"outKind": {
"enum": [
"request",
"response",
"async_event",
"data_flow",
"dependency",
"network",
"generic"
],
"type": "string"
},
"sourceId": {
"minLength": 1,
"type": "string"
},
"targetId": {
"minLength": 1,
"type": "string"
}
},
"required": [
"op",
"newNode",
"sourceId",
"targetId"
],
"type": "object"
}
]
},
"type": "array"
}
},
"required": [
"diagramId",
"baseVersion",
"ops"
],
"type": "object"
},
"name": "edit_diagram",
"outputSchema": null
},
{
"description": "Fetch a diagram's raw IR (nodes, groups, edges with their real ids) and its current `version`. Call this before edit_diagram so your ops reference ids that actually exist and you pass the correct baseVersion. Returns { diagram, version }.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"diagramId": {
"description": "The diagram to fetch.",
"minLength": 1,
"type": "string"
}
},
"required": [
"diagramId"
],
"type": "object"
},
"name": "get_diagram",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:1c6d297ac0b05f041dc351c96f1252b3a6c447799a5270504a272627da39d727 | sha256sum