@snokam/mcp-api 0.175.0 → 0.177.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snokam/mcp-api",
3
- "version": "0.175.0",
3
+ "version": "0.177.0",
4
4
  "description": "MCP server exposing Snokam backend APIs as tools for Claude Code and other MCP clients",
5
5
  "type": "module",
6
6
  "bin": {
@@ -568,6 +568,58 @@
568
568
  ]
569
569
  }
570
570
  },
571
+ "/v1.0/cvs/users/{userId}/{cvId}": {
572
+ "get": {
573
+ "tags": [
574
+ "Proposals"
575
+ ],
576
+ "summary": "Get any CV (including tailored CVs) as raw Flowcase JSON by user_id + cv_id.",
577
+ "operationId": "GetRawCv",
578
+ "parameters": [
579
+ {
580
+ "name": "userId",
581
+ "in": "path",
582
+ "required": true,
583
+ "schema": {
584
+ "type": "string"
585
+ }
586
+ },
587
+ {
588
+ "name": "cvId",
589
+ "in": "path",
590
+ "required": true,
591
+ "schema": {
592
+ "type": "string"
593
+ }
594
+ }
595
+ ],
596
+ "responses": {
597
+ "200": {
598
+ "description": "Payload of Object",
599
+ "content": {
600
+ "application/json": {
601
+ "schema": {
602
+ "type": "object"
603
+ }
604
+ }
605
+ }
606
+ },
607
+ "404": {
608
+ "description": "No description"
609
+ }
610
+ },
611
+ "security": [
612
+ {
613
+ "Implicit": [
614
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
615
+ ]
616
+ },
617
+ {
618
+ "ApiKey": []
619
+ }
620
+ ]
621
+ }
622
+ },
571
623
  "/v1.0/cvs/users/{userId}/{cvId}/sections/{sectionType}/{sectionId}": {
572
624
  "put": {
573
625
  "tags": [
@@ -1603,6 +1603,118 @@
1603
1603
  ]
1604
1604
  }
1605
1605
  },
1606
+ "/v1.0/cv-variants/me": {
1607
+ "get": {
1608
+ "tags": [
1609
+ "CvVariants"
1610
+ ],
1611
+ "summary": "Get the authenticated consultant's persistent AI CV variant, if one exists.",
1612
+ "operationId": "GetMyCvVariant",
1613
+ "responses": {
1614
+ "200": {
1615
+ "description": "Payload of ConsultantCvVariantView",
1616
+ "content": {
1617
+ "application/json": {
1618
+ "schema": {
1619
+ "$ref": "#/components/schemas/consultantCvVariantView"
1620
+ }
1621
+ }
1622
+ }
1623
+ },
1624
+ "404": {
1625
+ "description": "No description"
1626
+ }
1627
+ },
1628
+ "security": [
1629
+ {
1630
+ "Implicit": [
1631
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1632
+ ]
1633
+ },
1634
+ {
1635
+ "ApiKey": []
1636
+ }
1637
+ ]
1638
+ },
1639
+ "post": {
1640
+ "tags": [
1641
+ "CvVariants"
1642
+ ],
1643
+ "summary": "Get or create the authenticated consultant's persistent AI CV variant (Flowcase proposal + tailored CV copy of the main CV).",
1644
+ "operationId": "EnsureMyCvVariant",
1645
+ "requestBody": {
1646
+ "content": {
1647
+ "application/json": {
1648
+ "schema": {
1649
+ "$ref": "#/components/schemas/ensureCvVariantRequest"
1650
+ }
1651
+ }
1652
+ }
1653
+ },
1654
+ "responses": {
1655
+ "200": {
1656
+ "description": "Payload of ConsultantCvVariantView",
1657
+ "content": {
1658
+ "application/json": {
1659
+ "schema": {
1660
+ "$ref": "#/components/schemas/consultantCvVariantView"
1661
+ }
1662
+ }
1663
+ }
1664
+ },
1665
+ "502": {
1666
+ "description": "No description"
1667
+ }
1668
+ },
1669
+ "security": [
1670
+ {
1671
+ "Implicit": [
1672
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1673
+ ]
1674
+ },
1675
+ {
1676
+ "ApiKey": []
1677
+ }
1678
+ ]
1679
+ }
1680
+ },
1681
+ "/v1.0/cv-variants/me/promote": {
1682
+ "post": {
1683
+ "tags": [
1684
+ "CvVariants"
1685
+ ],
1686
+ "summary": "Merge the consultant's AI CV variant into the main CV.",
1687
+ "operationId": "PromoteMyCvVariant",
1688
+ "responses": {
1689
+ "200": {
1690
+ "description": "Payload of ConsultantCvVariantView",
1691
+ "content": {
1692
+ "application/json": {
1693
+ "schema": {
1694
+ "$ref": "#/components/schemas/consultantCvVariantView"
1695
+ }
1696
+ }
1697
+ }
1698
+ },
1699
+ "404": {
1700
+ "description": "No description"
1701
+ },
1702
+ "501": {
1703
+ "description": "No description"
1704
+ }
1705
+ },
1706
+ "security": [
1707
+ {
1708
+ "Implicit": [
1709
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1710
+ ]
1711
+ },
1712
+ {
1713
+ "ApiKey": []
1714
+ }
1715
+ ]
1716
+ }
1717
+ },
1606
1718
  "/v1.0/consultants": {
1607
1719
  "get": {
1608
1720
  "tags": [
@@ -2311,6 +2423,60 @@
2311
2423
  ]
2312
2424
  }
2313
2425
  },
2426
+ "/v1.0/tenders/{id}/matches/interest": {
2427
+ "post": {
2428
+ "tags": [
2429
+ "Tenders"
2430
+ ],
2431
+ "summary": "Mark a consultant's interest in a matched tender. interested=true selects the match; false deselects and dismisses it (suppressing future match notifications).",
2432
+ "operationId": "SetConsultantMatchInterest",
2433
+ "parameters": [
2434
+ {
2435
+ "name": "id",
2436
+ "in": "path",
2437
+ "required": true,
2438
+ "schema": {
2439
+ "type": "string"
2440
+ }
2441
+ }
2442
+ ],
2443
+ "requestBody": {
2444
+ "content": {
2445
+ "application/json": {
2446
+ "schema": {
2447
+ "$ref": "#/components/schemas/setMatchInterestRequest"
2448
+ }
2449
+ }
2450
+ },
2451
+ "required": true
2452
+ },
2453
+ "responses": {
2454
+ "200": {
2455
+ "description": "Payload of TenderView",
2456
+ "content": {
2457
+ "application/json": {
2458
+ "schema": {
2459
+ "$ref": "#/components/schemas/tenderView"
2460
+ }
2461
+ }
2462
+ }
2463
+ },
2464
+ "404": {
2465
+ "description": "No description"
2466
+ }
2467
+ },
2468
+ "security": [
2469
+ {
2470
+ "Implicit": [
2471
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
2472
+ ]
2473
+ },
2474
+ {
2475
+ "ApiKey": []
2476
+ }
2477
+ ]
2478
+ }
2479
+ },
2314
2480
  "/v1.0/tenders/{id}/slack-messages": {
2315
2481
  "post": {
2316
2482
  "tags": [
@@ -3434,6 +3600,45 @@
3434
3600
  }
3435
3601
  }
3436
3602
  },
3603
+ "consultantCvVariantView": {
3604
+ "type": "object",
3605
+ "properties": {
3606
+ "consultantEmail": {
3607
+ "type": "string",
3608
+ "nullable": true
3609
+ },
3610
+ "consultantName": {
3611
+ "type": "string",
3612
+ "nullable": true
3613
+ },
3614
+ "proposalId": {
3615
+ "type": "string",
3616
+ "nullable": true
3617
+ },
3618
+ "userId": {
3619
+ "type": "string",
3620
+ "nullable": true
3621
+ },
3622
+ "mainCvId": {
3623
+ "type": "string",
3624
+ "nullable": true
3625
+ },
3626
+ "variantCvId": {
3627
+ "type": "string",
3628
+ "nullable": true
3629
+ },
3630
+ "createdAt": {
3631
+ "type": "string",
3632
+ "format": "date-time",
3633
+ "nullable": true
3634
+ },
3635
+ "promotedAt": {
3636
+ "type": "string",
3637
+ "format": "date-time",
3638
+ "nullable": true
3639
+ }
3640
+ }
3641
+ },
3437
3642
  "consultantMatch": {
3438
3643
  "type": "object",
3439
3644
  "properties": {
@@ -3480,6 +3685,15 @@
3480
3685
  "type": "boolean",
3481
3686
  "nullable": true
3482
3687
  },
3688
+ "dismissed": {
3689
+ "type": "boolean",
3690
+ "nullable": true
3691
+ },
3692
+ "dismissedAt": {
3693
+ "type": "string",
3694
+ "format": "date-time",
3695
+ "nullable": true
3696
+ },
3483
3697
  "fitExplanation": {
3484
3698
  "type": "string",
3485
3699
  "nullable": true
@@ -3948,6 +4162,15 @@
3948
4162
  }
3949
4163
  }
3950
4164
  },
4165
+ "ensureCvVariantRequest": {
4166
+ "type": "object",
4167
+ "properties": {
4168
+ "consultantName": {
4169
+ "type": "string",
4170
+ "nullable": true
4171
+ }
4172
+ }
4173
+ },
3951
4174
  "externalSourceRef": {
3952
4175
  "type": "object",
3953
4176
  "properties": {
@@ -4291,6 +4514,19 @@
4291
4514
  }
4292
4515
  }
4293
4516
  },
4517
+ "setMatchInterestRequest": {
4518
+ "type": "object",
4519
+ "properties": {
4520
+ "email": {
4521
+ "type": "string",
4522
+ "nullable": true
4523
+ },
4524
+ "interested": {
4525
+ "type": "boolean",
4526
+ "nullable": true
4527
+ }
4528
+ }
4529
+ },
4294
4530
  "sourceFile": {
4295
4531
  "type": "object",
4296
4532
  "properties": {
@@ -568,6 +568,58 @@
568
568
  ]
569
569
  }
570
570
  },
571
+ "/v1.0/cvs/users/{userId}/{cvId}": {
572
+ "get": {
573
+ "tags": [
574
+ "Proposals"
575
+ ],
576
+ "summary": "Get any CV (including tailored CVs) as raw Flowcase JSON by user_id + cv_id.",
577
+ "operationId": "GetRawCv",
578
+ "parameters": [
579
+ {
580
+ "name": "userId",
581
+ "in": "path",
582
+ "required": true,
583
+ "schema": {
584
+ "type": "string"
585
+ }
586
+ },
587
+ {
588
+ "name": "cvId",
589
+ "in": "path",
590
+ "required": true,
591
+ "schema": {
592
+ "type": "string"
593
+ }
594
+ }
595
+ ],
596
+ "responses": {
597
+ "200": {
598
+ "description": "Payload of Object",
599
+ "content": {
600
+ "application/json": {
601
+ "schema": {
602
+ "type": "object"
603
+ }
604
+ }
605
+ }
606
+ },
607
+ "404": {
608
+ "description": "No description"
609
+ }
610
+ },
611
+ "security": [
612
+ {
613
+ "Implicit": [
614
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
615
+ ]
616
+ },
617
+ {
618
+ "ApiKey": []
619
+ }
620
+ ]
621
+ }
622
+ },
571
623
  "/v1.0/cvs/users/{userId}/{cvId}/sections/{sectionType}/{sectionId}": {
572
624
  "put": {
573
625
  "tags": [
@@ -1603,6 +1603,118 @@
1603
1603
  ]
1604
1604
  }
1605
1605
  },
1606
+ "/v1.0/cv-variants/me": {
1607
+ "get": {
1608
+ "tags": [
1609
+ "CvVariants"
1610
+ ],
1611
+ "summary": "Get the authenticated consultant's persistent AI CV variant, if one exists.",
1612
+ "operationId": "GetMyCvVariant",
1613
+ "responses": {
1614
+ "200": {
1615
+ "description": "Payload of ConsultantCvVariantView",
1616
+ "content": {
1617
+ "application/json": {
1618
+ "schema": {
1619
+ "$ref": "#/components/schemas/consultantCvVariantView"
1620
+ }
1621
+ }
1622
+ }
1623
+ },
1624
+ "404": {
1625
+ "description": "No description"
1626
+ }
1627
+ },
1628
+ "security": [
1629
+ {
1630
+ "Implicit": [
1631
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
1632
+ ]
1633
+ },
1634
+ {
1635
+ "ApiKey": []
1636
+ }
1637
+ ]
1638
+ },
1639
+ "post": {
1640
+ "tags": [
1641
+ "CvVariants"
1642
+ ],
1643
+ "summary": "Get or create the authenticated consultant's persistent AI CV variant (Flowcase proposal + tailored CV copy of the main CV).",
1644
+ "operationId": "EnsureMyCvVariant",
1645
+ "requestBody": {
1646
+ "content": {
1647
+ "application/json": {
1648
+ "schema": {
1649
+ "$ref": "#/components/schemas/ensureCvVariantRequest"
1650
+ }
1651
+ }
1652
+ }
1653
+ },
1654
+ "responses": {
1655
+ "200": {
1656
+ "description": "Payload of ConsultantCvVariantView",
1657
+ "content": {
1658
+ "application/json": {
1659
+ "schema": {
1660
+ "$ref": "#/components/schemas/consultantCvVariantView"
1661
+ }
1662
+ }
1663
+ }
1664
+ },
1665
+ "502": {
1666
+ "description": "No description"
1667
+ }
1668
+ },
1669
+ "security": [
1670
+ {
1671
+ "Implicit": [
1672
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
1673
+ ]
1674
+ },
1675
+ {
1676
+ "ApiKey": []
1677
+ }
1678
+ ]
1679
+ }
1680
+ },
1681
+ "/v1.0/cv-variants/me/promote": {
1682
+ "post": {
1683
+ "tags": [
1684
+ "CvVariants"
1685
+ ],
1686
+ "summary": "Merge the consultant's AI CV variant into the main CV.",
1687
+ "operationId": "PromoteMyCvVariant",
1688
+ "responses": {
1689
+ "200": {
1690
+ "description": "Payload of ConsultantCvVariantView",
1691
+ "content": {
1692
+ "application/json": {
1693
+ "schema": {
1694
+ "$ref": "#/components/schemas/consultantCvVariantView"
1695
+ }
1696
+ }
1697
+ }
1698
+ },
1699
+ "404": {
1700
+ "description": "No description"
1701
+ },
1702
+ "501": {
1703
+ "description": "No description"
1704
+ }
1705
+ },
1706
+ "security": [
1707
+ {
1708
+ "Implicit": [
1709
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
1710
+ ]
1711
+ },
1712
+ {
1713
+ "ApiKey": []
1714
+ }
1715
+ ]
1716
+ }
1717
+ },
1606
1718
  "/v1.0/consultants": {
1607
1719
  "get": {
1608
1720
  "tags": [
@@ -2311,6 +2423,60 @@
2311
2423
  ]
2312
2424
  }
2313
2425
  },
2426
+ "/v1.0/tenders/{id}/matches/interest": {
2427
+ "post": {
2428
+ "tags": [
2429
+ "Tenders"
2430
+ ],
2431
+ "summary": "Mark a consultant's interest in a matched tender. interested=true selects the match; false deselects and dismisses it (suppressing future match notifications).",
2432
+ "operationId": "SetConsultantMatchInterest",
2433
+ "parameters": [
2434
+ {
2435
+ "name": "id",
2436
+ "in": "path",
2437
+ "required": true,
2438
+ "schema": {
2439
+ "type": "string"
2440
+ }
2441
+ }
2442
+ ],
2443
+ "requestBody": {
2444
+ "content": {
2445
+ "application/json": {
2446
+ "schema": {
2447
+ "$ref": "#/components/schemas/setMatchInterestRequest"
2448
+ }
2449
+ }
2450
+ },
2451
+ "required": true
2452
+ },
2453
+ "responses": {
2454
+ "200": {
2455
+ "description": "Payload of TenderView",
2456
+ "content": {
2457
+ "application/json": {
2458
+ "schema": {
2459
+ "$ref": "#/components/schemas/tenderView"
2460
+ }
2461
+ }
2462
+ }
2463
+ },
2464
+ "404": {
2465
+ "description": "No description"
2466
+ }
2467
+ },
2468
+ "security": [
2469
+ {
2470
+ "Implicit": [
2471
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
2472
+ ]
2473
+ },
2474
+ {
2475
+ "ApiKey": []
2476
+ }
2477
+ ]
2478
+ }
2479
+ },
2314
2480
  "/v1.0/tenders/{id}/slack-messages": {
2315
2481
  "post": {
2316
2482
  "tags": [
@@ -3434,6 +3600,45 @@
3434
3600
  }
3435
3601
  }
3436
3602
  },
3603
+ "consultantCvVariantView": {
3604
+ "type": "object",
3605
+ "properties": {
3606
+ "consultantEmail": {
3607
+ "type": "string",
3608
+ "nullable": true
3609
+ },
3610
+ "consultantName": {
3611
+ "type": "string",
3612
+ "nullable": true
3613
+ },
3614
+ "proposalId": {
3615
+ "type": "string",
3616
+ "nullable": true
3617
+ },
3618
+ "userId": {
3619
+ "type": "string",
3620
+ "nullable": true
3621
+ },
3622
+ "mainCvId": {
3623
+ "type": "string",
3624
+ "nullable": true
3625
+ },
3626
+ "variantCvId": {
3627
+ "type": "string",
3628
+ "nullable": true
3629
+ },
3630
+ "createdAt": {
3631
+ "type": "string",
3632
+ "format": "date-time",
3633
+ "nullable": true
3634
+ },
3635
+ "promotedAt": {
3636
+ "type": "string",
3637
+ "format": "date-time",
3638
+ "nullable": true
3639
+ }
3640
+ }
3641
+ },
3437
3642
  "consultantMatch": {
3438
3643
  "type": "object",
3439
3644
  "properties": {
@@ -3480,6 +3685,15 @@
3480
3685
  "type": "boolean",
3481
3686
  "nullable": true
3482
3687
  },
3688
+ "dismissed": {
3689
+ "type": "boolean",
3690
+ "nullable": true
3691
+ },
3692
+ "dismissedAt": {
3693
+ "type": "string",
3694
+ "format": "date-time",
3695
+ "nullable": true
3696
+ },
3483
3697
  "fitExplanation": {
3484
3698
  "type": "string",
3485
3699
  "nullable": true
@@ -3948,6 +4162,15 @@
3948
4162
  }
3949
4163
  }
3950
4164
  },
4165
+ "ensureCvVariantRequest": {
4166
+ "type": "object",
4167
+ "properties": {
4168
+ "consultantName": {
4169
+ "type": "string",
4170
+ "nullable": true
4171
+ }
4172
+ }
4173
+ },
3951
4174
  "externalSourceRef": {
3952
4175
  "type": "object",
3953
4176
  "properties": {
@@ -4291,6 +4514,19 @@
4291
4514
  }
4292
4515
  }
4293
4516
  },
4517
+ "setMatchInterestRequest": {
4518
+ "type": "object",
4519
+ "properties": {
4520
+ "email": {
4521
+ "type": "string",
4522
+ "nullable": true
4523
+ },
4524
+ "interested": {
4525
+ "type": "boolean",
4526
+ "nullable": true
4527
+ }
4528
+ }
4529
+ },
4294
4530
  "sourceFile": {
4295
4531
  "type": "object",
4296
4532
  "properties": {