{
  "info": {
    "name": "Spec Catalog MCP",
    "_postman_id": "a1b2c3d4-spec-catalog-mcp",
    "description": "JSON-RPC 2.0 collection for the Spec Catalog MCP server.\n\nSet collection variables:\n- `base_url` — your workspace origin (e.g. https://your-app.lovable.app)\n- `mcp_token` — bearer token minted in Settings → Tokens (starts with `mcp_`).\n\nAll requests POST to `{{base_url}}/api/mcp` with `Authorization: Bearer {{mcp_token}}`.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://your-workspace.lovable.app",
      "type": "string"
    },
    {
      "key": "mcp_token",
      "value": "mcp_replace_me",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Handshake",
      "item": [
        {
          "name": "initialize",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"initialize\",\n  \"params\": {\n    \"protocolVersion\": \"2025-06-18\",\n    \"capabilities\": {},\n    \"clientInfo\": {\n      \"name\": \"postman\",\n      \"version\": \"1.0\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "MCP handshake. Call once per session."
          }
        },
        {
          "name": "tools/list",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/list\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Discover available tools and their JSON schemas."
          }
        }
      ]
    },
    {
      "name": "Tools",
      "item": [
        {
          "name": "search_entities",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 10,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"search_entities\",\n    \"arguments\": {\n      \"query\": \"rescue\",\n      \"domain\": \"ba\",\n      \"kind\": \"Feature\",\n      \"workpackage\": \"w-7-rescue-flow\",\n      \"repo\": \"spec-catalog\",\n      \"limit\": 25\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Full-text search across entities. All filters optional."
          }
        },
        {
          "name": "get_entity",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 11,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_entity\",\n    \"arguments\": {\n      \"externalId\": \"F-001\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Fetch a single entity by external_id."
          }
        },
        {
          "name": "list_workpackages",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 12,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"list_workpackages\",\n    \"arguments\": {}\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "All Workpackages in the tenant."
          }
        },
        {
          "name": "list_repositories",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 13,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"list_repositories\",\n    \"arguments\": {}\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Repositories registered in the tenant."
          }
        },
        {
          "name": "upsert_entity",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 14,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"upsert_entity\",\n    \"arguments\": {\n      \"externalId\": \"F-001\",\n      \"name\": \"F-001\",\n      \"title\": \"Operator can publish a rescue\",\n      \"description\": \"Allow the operator to publish a rescue offer to nearby partners.\",\n      \"domain\": \"ba\",\n      \"kind\": \"Feature\",\n      \"fkind\": \"Feature\",\n      \"lifecycle\": \"in-progress\",\n      \"owner\": \"product\",\n      \"workpackage\": \"w-7-rescue-flow\",\n      \"fields\": {\n        \"priority\": \"must\",\n        \"acceptance\": [\n          \"partner notified\",\n          \"audit log written\"\n        ]\n      },\n      \"repos\": [\n        \"spec-catalog\",\n        \"rescue-app\"\n      ],\n      \"expectedVersion\": 3\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Create or update an entity. expectedVersion enables optimistic concurrency."
          }
        },
        {
          "name": "delete_entity",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 15,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"delete_entity\",\n    \"arguments\": {\n      \"externalId\": \"F-001\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Delete an entity by external_id."
          }
        },
        {
          "name": "list_revisions",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 16,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"list_revisions\",\n    \"arguments\": {\n      \"externalId\": \"F-001\",\n      \"limit\": 50\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "List revision history of an entity (newest first)."
          }
        },
        {
          "name": "get_revision",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{mcp_token}}",
                "description": "Workspace MCP token (mcp_…). Mint one in Settings → Tokens."
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 17,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_revision\",\n    \"arguments\": {\n      \"externalId\": \"F-001\",\n      \"from\": 2,\n      \"to\": 4\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Fetch one or two revisions for diffing."
          }
        }
      ]
    }
  ]
}