@portone/mcp-server 0.14.0 → 0.15.0-alpha.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.
Files changed (257) hide show
  1. package/README.md +4 -2
  2. package/assets/docs/_components/ko/docs-for-llms.md +21 -0
  3. package/assets/docs/_components/ko/llms-txt-support.md +15 -0
  4. package/assets/docs/_components/ko/using-mcp-server.md +60 -0
  5. package/assets/docs/api/rest-v1/_components/v1auth.md +103 -0
  6. package/assets/docs/help/admin-console/analytics/content32.md +4 -4
  7. package/assets/docs/help/admin-console/payment-service/content29.md +223 -110
  8. package/assets/docs/help/admin-console/pg-settlement/content30.md +103 -208
  9. package/assets/docs/help/admin-console/pg-settlement-history/content35.md +167 -0
  10. package/assets/docs/help/admin-console/platform-settlement/partner_settlement_service_guide.md +268 -0
  11. package/assets/docs/help/api-sdk-2025-05-14.md +71 -0
  12. package/assets/docs/help/applepay.md +1 -1
  13. package/assets/docs/help/content100002.md +1 -1
  14. package/assets/docs/help/content100029.md +1 -1
  15. package/assets/docs/help/content100060.md +2 -2
  16. package/assets/docs/help/content200015.md +1 -1
  17. package/assets/docs/help/content200019.md +1 -1
  18. package/assets/docs/help/content200023.md +2 -2
  19. package/assets/docs/help/content200050.md +1 -1
  20. package/assets/docs/help/core-service/channel-setting/danal.md +6 -8
  21. package/assets/docs/help/core-service/channel-setting/eximbay.md +9 -3
  22. package/assets/docs/help/core-service/channel-setting/kcp_channel.md +80 -13
  23. package/assets/docs/help/core-service/channel-setting/naverpay.md +6 -8
  24. package/assets/docs/help/core-service/channel-setting/nice.md +49 -47
  25. package/assets/docs/help/core-service/channel-setting/payletter.md +91 -0
  26. package/assets/docs/help/core-service/channel-setting/paymentwall.md +4 -1
  27. package/assets/docs/help/core-service/how-to-use/additional-nice.md +19 -19
  28. package/assets/docs/help/core-service/how-to-use/cancel-reversal.md +2 -2
  29. package/assets/docs/help/core-service/how-to-use/content200009.md +2 -2
  30. package/assets/docs/help/core-service/how-to-use/danal-contract.md +2 -2
  31. package/assets/docs/help/core-service/how-to-use/daou-contract.md +2 -2
  32. package/assets/docs/help/core-service/how-to-use/high-risk-industry.md +9 -9
  33. package/assets/docs/help/core-service/how-to-use/identity-verification-age-restriction.md +29 -0
  34. package/assets/docs/help/core-service/how-to-use/information-pg.md +4 -4
  35. package/assets/docs/help/core-service/how-to-use/ksnet-contract.md +1 -1
  36. package/assets/docs/help/core-service/how-to-use/nice-contract.md +15 -15
  37. package/assets/docs/help/core-service/how-to-use/open-immediately.md +1 -1
  38. package/assets/docs/help/core-service/how-to-use/point-service.md +7 -7
  39. package/assets/docs/help/core-service/how-to-use/settle-contract.md +2 -2
  40. package/assets/docs/help/core-service/how-to-use/shopify-available-list.md +4 -4
  41. package/assets/docs/help/core-service/how-to-use/test-mode-cancel.md +3 -3
  42. package/assets/docs/help/core-service/how-to-use/tosspayments-contract.md +4 -4
  43. package/assets/docs/help/core-service/payment-type/content200007.md +8 -7
  44. package/assets/docs/help/core-service/payment-type/content200036.md +17 -18
  45. package/assets/docs/help/core-service/payment-type/content200042.md +3 -3
  46. package/assets/docs/help/core-service/payment-type/content200052.md +2 -2
  47. package/assets/docs/help/core-service/payment-type/content200053.md +7 -3
  48. package/assets/docs/help/core-service/payment-type/hub-service-fee.md +19 -17
  49. package/assets/docs/help/core-service/payment-type/inicis-easypay-hub-fee.md +5 -6
  50. package/assets/docs/help/core-service/payment-type/inicis-international.md +10 -10
  51. package/assets/docs/help/core-service/payment-type/internationl-pg.md +7 -3
  52. package/assets/docs/help/core-service/payment-type/kcp-easypay-hub-apply.md +4 -5
  53. package/assets/docs/help/core-service/payment-type/kcp-international.md +2 -3
  54. package/assets/docs/help/core-service/payment-type/nice-easypay-hub-fee.md +8 -8
  55. package/assets/docs/help/core-service/payment-type/nice-international.md +14 -14
  56. package/assets/docs/help/core-service/payment-type/payletter-international.md +104 -0
  57. package/assets/docs/help/core-service/payment-type/schedule-requirement.md +2 -2
  58. package/assets/docs/help/core-service/payment-type/tosspayments-easypay-hub-fee.md +6 -6
  59. package/assets/docs/help/faq/general-inquiry/confirm-process.md +16 -16
  60. package/assets/docs/help/faq/general-inquiry/identity-verification-suspended-ip.md +35 -0
  61. package/assets/docs/help/faq/general-inquiry/kcp-business-number-error.md +29 -0
  62. package/assets/docs/help/faq/general-inquiry/platform-contract-method.md +4 -5
  63. package/assets/docs/help/faq/general-inquiry/platform-contract-pg.md +2 -2
  64. package/assets/docs/help/faq/general-inquiry/real-channel-info.md +1 -1
  65. package/assets/docs/help/faq/payment-faq/cash-receipt-guide.md +2 -2
  66. package/assets/docs/help/faq/payment-faq/kcp-cash-receipt.md +34 -0
  67. package/assets/docs/help/faq/payment-faq/payment-failure-danal-insufficient-funds.md +29 -0
  68. package/assets/docs/help/faq/payment-faq/payment-failure-kcp-insufficient-funds.md +35 -0
  69. package/assets/docs/help/faq/payment-faq/payment-failure-kiwoompay-insufficient-funds.md +25 -0
  70. package/assets/docs/help/faq/payment-faq/payment-failure-nice-insufficient-funds.md +28 -0
  71. package/assets/docs/help/faq/payment-faq/pg-max-min-amount.md +3 -3
  72. package/assets/docs/help/faq/payment-faq/vbank-service-detail.md +10 -10
  73. package/assets/docs/help/faq/payment-faq/wordpress-woocommerce-taxation.md +67 -0
  74. package/assets/docs/help/faq/platform-faq/platform_additional_fee_setting.md +28 -0
  75. package/assets/docs/help/faq/platform-faq/platform_api_docs.md +24 -0
  76. package/assets/docs/help/faq/platform-faq/platform_definition_partner.md +34 -0
  77. package/assets/docs/help/faq/platform-faq/platform_definition_payout_agency.md +23 -0
  78. package/assets/docs/help/faq/platform-faq/platform_definition_platform.md +17 -0
  79. package/assets/docs/help/faq/platform-faq/platform_definition_settlement.md +29 -0
  80. package/assets/docs/help/faq/platform-faq/platform_difference_settlement_payout.md +29 -0
  81. package/assets/docs/help/faq/platform-faq/platform_ecommerce_discount_policy.md +19 -0
  82. package/assets/docs/help/faq/platform-faq/platform_introduction.md +15 -0
  83. package/assets/docs/help/faq/platform-faq/platform_introduction_conditions.md +16 -0
  84. package/assets/docs/help/faq/platform-faq/platform_nocode_guide.md +5 -5
  85. package/assets/docs/help/faq/platform-faq/platform_nocode_hosting.md +20 -0
  86. package/assets/docs/help/faq/platform-faq/platform_nocode_use.md +28 -0
  87. package/assets/docs/help/faq/platform-faq/platform_partner_bulk_registration.md +31 -0
  88. package/assets/docs/help/faq/platform-faq/platform_partner_info_guide.md +49 -0
  89. package/assets/docs/help/faq/platform-faq/platform_partner_management_tags.md +14 -0
  90. package/assets/docs/help/faq/platform-faq/platform_partner_tax_type.md +18 -0
  91. package/assets/docs/help/faq/platform-faq/platform_partnerships.md +16 -0
  92. package/assets/docs/help/faq/platform-faq/platform_payment_formula_setting.md +20 -0
  93. package/assets/docs/help/faq/platform-faq/platform_paymentdetails_definition.md +11 -0
  94. package/assets/docs/help/faq/platform-faq/platform_paymentdetails_view_features.md +18 -0
  95. package/assets/docs/help/faq/platform-faq/platform_payoutagency_realtime_payment.md +22 -0
  96. package/assets/docs/help/faq/platform-faq/platform_payoutagency_safety_legality.md +22 -0
  97. package/assets/docs/help/faq/platform-faq/platform_payoutagency_scheduled_payment.md +18 -0
  98. package/assets/docs/help/faq/platform-faq/platform_pg_fee_handling.md +18 -0
  99. package/assets/docs/help/faq/platform-faq/platform_policymanagement_calculator.md +1 -1
  100. package/assets/docs/help/faq/platform-faq/platform_privacypolicy_creation_guide.md +24 -0
  101. package/assets/docs/help/faq/platform-faq/platform_privacypolicy_definition.md +19 -0
  102. package/assets/docs/help/faq/platform-faq/platform_privacypolicy_service_compliance.md +28 -0
  103. package/assets/docs/help/faq/platform-faq/platform_settlement_auto_calculation_setting.md +39 -0
  104. package/assets/docs/help/faq/platform-faq/platform_settlement_cancellation_data.md +21 -0
  105. package/assets/docs/help/faq/platform-faq/platform_settlement_custom_attributes.md +18 -0
  106. package/assets/docs/help/faq/platform-faq/platform_settlement_custom_formula_request.md +20 -0
  107. package/assets/docs/help/faq/platform-faq/platform_settlement_cycle_setting.md +42 -0
  108. package/assets/docs/help/faq/platform-faq/platform_settlement_decimal_rounding.md +23 -0
  109. package/assets/docs/help/faq/platform-faq/platform_settlement_hold_date_setting.md +35 -0
  110. package/assets/docs/help/faq/platform-faq/platform_settlement_holidays.md +9 -0
  111. package/assets/docs/help/faq/platform-faq/platform_settlement_manual_registration.md +32 -0
  112. package/assets/docs/help/faq/platform-faq/platform_settlementdetails_view_features.md +26 -0
  113. package/assets/docs/help/faq/platform-faq/platform_settlmentandpayout_guide.md +4 -4
  114. package/assets/docs/help/faq/platform-faq/platform_supported_bank_codes.md +85 -0
  115. package/assets/docs/help/faq/platform-faq/platform_supported_currencies.md +33 -0
  116. package/assets/docs/help/faq/platform-faq/platform_tax_calculation.md +17 -0
  117. package/assets/docs/help/faq/platform-faq/platform_tax_setting_guide.md +1 -1
  118. package/assets/docs/help/faq/platform-faq/platform_tax_withholding_tax_definition.md +14 -0
  119. package/assets/docs/help/faq/platform-faq/platform_virtual_account_withdrawal.md +16 -0
  120. package/assets/docs/help/faq/platform-faq/platform_webhook_definition.md +24 -0
  121. package/assets/docs/help/faq/platform-faq/recommended_withdrawal.md +16 -0
  122. package/assets/docs/help/faq/platform-faq/system_test_environment.md +13 -0
  123. package/assets/docs/help/faq/platform-faq/taxinvoice_bulk_issuance.md +25 -0
  124. package/assets/docs/help/faq/platform-faq/taxinvoice_cancel.md +12 -0
  125. package/assets/docs/help/faq/platform-faq/taxinvoice_delayed.md +18 -0
  126. package/assets/docs/help/faq/platform-faq/taxinvoice_forward_issuance.md +23 -0
  127. package/assets/docs/help/faq/platform-faq/taxinvoice_guide_atoz.md +202 -0
  128. package/assets/docs/help/faq/platform-faq/taxinvoice_partner_peristalsis.md +60 -0
  129. package/assets/docs/help/faq/platform-faq/taxinvoice_reverse_issuance_buyer_process.md +52 -0
  130. package/assets/docs/help/faq/platform-faq/taxinvoice_reverse_issuance_definition.md +46 -0
  131. package/assets/docs/help/faq/platform-faq/taxinvoice_reverse_issuance_partner_signup.md +23 -0
  132. package/assets/docs/help/faq/platform-faq/taxinvoice_reverse_issuance_supplier_process.md +47 -0
  133. package/assets/docs/help/notice-payletter-2025-10-21.md +29 -0
  134. package/assets/docs/help/notice-payletter-2025-10-24.md +46 -0
  135. package/assets/docs/help/platform-2025-07-02.md +73 -0
  136. package/assets/docs/help/platform-2025-07-07.md +56 -0
  137. package/assets/docs/help/pricing/pg/domestic-and-oversea-fees.md +2 -2
  138. package/assets/docs/help/procedure/payment-integration/test-integration.md +2 -2
  139. package/assets/docs/help/procedure/pg-application/content59.md +1 -1
  140. package/assets/docs/help/procedure/pg-application/start.md +1 -1
  141. package/assets/docs/help/procedure/recommendation/package.md +5 -5
  142. package/assets/docs/help/service/identity-verification/identity-verification.md +6 -6
  143. package/assets/docs/help/service/paymethod/paymethod.md +2 -2
  144. package/assets/docs/help/service/pg/pg-service-list.md +25 -13
  145. package/assets/docs/help/service/version/portone-version.md +1 -1
  146. package/assets/docs/opi/ko/console/guide/billing-payments.md +1 -1
  147. package/assets/docs/opi/ko/console/guide/reg.md +1 -1
  148. package/assets/docs/opi/ko/console/guide/smartrouting.md +0 -2
  149. package/assets/docs/opi/ko/console/pg.md +7 -7
  150. package/assets/docs/opi/ko/etc/recon.md +1 -1
  151. package/assets/docs/opi/ko/extra/confirm-process/readme-v1.md +2 -2
  152. package/assets/docs/opi/ko/extra/confirm-process/readme-v2.md +11 -4
  153. package/assets/docs/opi/ko/extra/identity-verification/readme-v2.md +2 -2
  154. package/assets/docs/opi/ko/extra/identity-verification/v1/all/3.md +3 -3
  155. package/assets/docs/opi/ko/extra/identity-verification/v1/all/readme.md +1 -1
  156. package/assets/docs/opi/ko/extra/identity-verification/v1/credit-auth/4.md +3 -3
  157. package/assets/docs/opi/ko/extra/identity-verification/v1/phone/4.md +3 -3
  158. package/assets/docs/opi/ko/extra/manual-confirm/readme-v2.md +74 -0
  159. package/assets/docs/opi/ko/extra/plugins/wordpress/button.md +1 -1
  160. package/assets/docs/opi/ko/extra/plugins/wordpress/edd.md +1 -1
  161. package/assets/docs/opi/ko/extra/plugins/wordpress/woocommerce/subscription.md +1 -1
  162. package/assets/docs/opi/ko/extra/promotion/intro.md +1 -1
  163. package/assets/docs/opi/ko/extra/smart-routing/console-guide.md +1 -1
  164. package/assets/docs/opi/ko/extra/smart-routing/integration.md +2 -2
  165. package/assets/docs/opi/ko/extra/smart-routing/intro.md +9 -9
  166. package/assets/docs/opi/ko/integration/pg/v1/danal.md +5 -0
  167. package/assets/docs/opi/ko/integration/pg/v1/daou/readme.md +9 -0
  168. package/assets/docs/opi/ko/integration/pg/v1/daou/undefined.md +8 -0
  169. package/assets/docs/opi/ko/integration/pg/v1/eximbay.md +0 -14
  170. package/assets/docs/opi/ko/integration/pg/v1/inicis.md +58 -0
  171. package/assets/docs/opi/ko/integration/pg/v1/kakaopay.md +12 -1
  172. package/assets/docs/opi/ko/integration/pg/v1/kicc.md +3 -1
  173. package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp/kcp-quickpay.md +710 -0
  174. package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp/readme.md +661 -0
  175. package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp.md +10 -71
  176. package/assets/docs/opi/ko/integration/pg/v1/nice-v2/billing-api-caution.md +11 -11
  177. package/assets/docs/opi/ko/integration/pg/v1/nice-v2/payment-caution.md +16 -16
  178. package/assets/docs/opi/ko/integration/pg/v1/nice-v2/readme.md +10 -8
  179. package/assets/docs/opi/ko/integration/pg/v1/nice.md +6 -6
  180. package/assets/docs/opi/ko/integration/pg/v1/payletter-global.md +86 -0
  181. package/assets/docs/opi/ko/integration/pg/v1/paypal.md +1 -1
  182. package/assets/docs/opi/ko/integration/pg/v1/readme.md +5 -3
  183. package/assets/docs/opi/ko/integration/pg/v1/settle/readme.md +80 -0
  184. package/assets/docs/opi/ko/integration/pg/v1/spb/readme.md +10 -9
  185. package/assets/docs/opi/ko/integration/pg/v1/welcome/readme.md +10 -7
  186. package/assets/docs/opi/ko/integration/pg/v2/eximbay-v2.md +138 -22
  187. package/assets/docs/opi/ko/integration/pg/v2/inicis-unified-identity-verification.md +0 -1
  188. package/assets/docs/opi/ko/integration/pg/v2/inicis-v2.md +13 -1
  189. package/assets/docs/opi/ko/integration/pg/v2/kcp-v2.md +4 -2
  190. package/assets/docs/opi/ko/integration/pg/v2/naverpay.md +1 -1
  191. package/assets/docs/opi/ko/integration/pg/v2/nice-v2.md +40 -40
  192. package/assets/docs/opi/ko/integration/pg/v2/payletter-global.md +9 -2
  193. package/assets/docs/opi/ko/integration/pg/v2/paypal-v2.md +13 -12
  194. package/assets/docs/opi/ko/integration/pg/v2/readme.md +1 -1
  195. package/assets/docs/opi/ko/integration/pg/v2/smartro-v2.md +1 -1
  196. package/assets/docs/opi/ko/integration/pg/v2/welcome.md +8 -7
  197. package/assets/docs/opi/ko/integration/ready/_components/integration-guide/hyphen.md +27 -0
  198. package/assets/docs/opi/ko/integration/ready/_components/integration-guide/inicis.md +64 -0
  199. package/assets/docs/opi/ko/integration/ready/_components/integration-guide/kcp-v2.md +70 -0
  200. package/assets/docs/opi/ko/integration/ready/_components/integration-guide/paypal-v2.md +25 -0
  201. package/assets/docs/opi/ko/integration/ready/_components/integration-guide/tosspayments.md +15 -0
  202. package/assets/docs/opi/ko/integration/ready/readme.md +26 -10
  203. package/assets/docs/opi/ko/integration/start/_components/sdk-installation.md +71 -0
  204. package/assets/docs/opi/ko/integration/start/v1/non-auth.md +2 -4
  205. package/assets/docs/opi/ko/integration/start/v2/billing/issue.md +1 -1
  206. package/assets/docs/opi/ko/integration/start/v2/checkout.md +4 -2
  207. package/assets/docs/opi/ko/integration/start/v2/readme.md +2 -2
  208. package/assets/docs/opi/ko/integration/using-ai-tools.md +33 -57
  209. package/assets/docs/opi/ko/integration/virtual-account/readme.md +9 -9
  210. package/assets/docs/opi/ko/integration/webhook/readme-v1.md +2 -4
  211. package/assets/docs/opi/ko/integration/webhook/readme-v2.md +1 -3
  212. package/assets/docs/opi/ko/quick-guide/payment.md +16 -16
  213. package/assets/docs/opi/ko/support/code-info/pg-1.md +1 -1
  214. package/assets/docs/opi/ko/support/code-info/pg-2.md +2 -2
  215. package/assets/docs/opi/ko/support/code-info/pg.md +2 -2
  216. package/assets/docs/opi/ko/support/contact.md +1 -13
  217. package/assets/docs/opi/ko/support/pg-terms.md +233 -0
  218. package/assets/docs/platform/ko/guides/dictionary.md +136 -16
  219. package/assets/docs/platform/ko/guides/process.md +1 -1
  220. package/assets/docs/platform/ko/guides/webhook.md +1 -1
  221. package/assets/docs/platform/ko/using-ai-tools.md +33 -57
  222. package/assets/docs/release-notes/api-sdk/2023-07-10.md +7 -7
  223. package/assets/docs/release-notes/api-sdk/2023-07-31.md +1 -1
  224. package/assets/docs/release-notes/api-sdk/2023-08-31.md +2 -2
  225. package/assets/docs/release-notes/api-sdk/2024-01-08.md +4 -4
  226. package/assets/docs/release-notes/api-sdk/2024-06-03.md +1 -1
  227. package/assets/docs/release-notes/api-sdk/2024-09-05.md +0 -1
  228. package/assets/docs/release-notes/api-sdk/2024-09-27.md +1 -1
  229. package/assets/docs/release-notes/console/2025-10-17.md +47 -0
  230. package/assets/docs/release-notes/platform/2025-03-17.md +1 -1
  231. package/assets/docs/release-notes/platform/2025-07-07.md +1 -1
  232. package/assets/docs/release-notes/platform/2025-07-23.md +85 -0
  233. package/assets/docs/release-notes/platform/2025-08-13.md +95 -0
  234. package/assets/docs/release-notes/platform/2025-08-21.md +53 -0
  235. package/assets/docs/release-notes/platform/2025-08-28.md +53 -0
  236. package/assets/docs/release-notes/platform/2025-10-02.md +152 -0
  237. package/assets/docs/schema/browser-sdk.yml +196 -69
  238. package/assets/docs/schema/v1.openapi.json +164 -217
  239. package/assets/docs/schema/v1.openapi.yml +148 -213
  240. package/assets/docs/schema/v2.openapi.json +18056 -11790
  241. package/assets/docs/schema/v2.openapi.yml +4801 -191
  242. package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrq.md +3 -3
  243. package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrt.md +3 -3
  244. package/assets/docs/sdk/ko/v2-sdk/_components/sdk-installation.md +71 -0
  245. package/assets/docs/sdk/ko/v2-server-sdk/jvm.md +12 -5
  246. package/assets/docs/sdk/ko/v2-server-sdk/python.md +12 -3
  247. package/assets/docs/v1-docs-full.md +2298 -1026
  248. package/assets/docs/v2-docs-full.md +1412 -362
  249. package/assets/docs/website-links.md +23 -13
  250. package/assets/instructions.md +4 -2
  251. package/manifest.json +1 -1
  252. package/package.json +17 -20
  253. package/server/index.js +135 -97
  254. package/assets/docs/help/admin-console/platform-settlement/content33-1.md +0 -201
  255. package/assets/docs/help/core-service/payment-type/schedule-logic-guide.md +0 -49
  256. package/assets/docs/help/faq/platform-faq/taxinvoice_guide.md +0 -107
  257. package/assets/docs/help/faq/platform-faq/taxinvoice_signupemail.md +0 -67
package/server/index.js CHANGED
@@ -15,7 +15,7 @@ import { GraphQLClient } from "graphql-request";
15
15
  // package.json
16
16
  var package_default = {
17
17
  name: "@portone/mcp-server",
18
- version: "0.14.0",
18
+ version: "0.15.0-alpha.0",
19
19
  description: "\uD3EC\uD2B8\uC6D0 \uC0AC\uC6A9\uC790\uB97C \uC704\uD55C MCP (Model Context Protocol) \uC11C\uBC84\uC785\uB2C8\uB2E4. \uD3EC\uD2B8\uC6D0 \uAC1C\uBC1C\uC790\uC13C\uD130, \uD5EC\uD504\uC13C\uD130 \uB4F1 \uACF5\uC2DD \uBB38\uC11C \uB0B4\uC6A9\uC744 LLM(Large Language Model)\uC5D0 \uC81C\uACF5\uD574 \uC815\uD655\uD55C \uC815\uBCF4\uB97C \uBC14\uD0D5\uC73C\uB85C \uC0AC\uC6A9\uC790\uC758 \uC5F0\uB3D9 \uBC0F \uC9C8\uC758\uB97C \uB3D5\uB3C4\uB85D \uD569\uB2C8\uB2E4.",
20
20
  main: "server/index.js",
21
21
  type: "module",
@@ -24,10 +24,10 @@ var package_default = {
24
24
  },
25
25
  scripts: {
26
26
  test: "vitest",
27
- "update-docs": "node --experimental-strip-types update-docs.ts",
27
+ "update-docs": "node update-docs.ts",
28
28
  build: "tsup src/index.ts --outDir server --format esm",
29
- "build:dxt": "node --experimental-strip-types scripts/build-dxt.ts",
30
- dev: "node --experimental-strip-types src/index.ts",
29
+ "build:dxt": "node scripts/build-dxt.ts",
30
+ dev: "node src/index.ts",
31
31
  start: "node server/index.js",
32
32
  lint: "biome check .",
33
33
  format: "biome format --write .",
@@ -45,31 +45,31 @@ var package_default = {
45
45
  },
46
46
  license: "MIT OR Apache-2.0",
47
47
  dependencies: {
48
- "@modelcontextprotocol/sdk": "^1.15.0",
49
- "@portone/server-sdk": "^0.15.0",
50
- axios: "^1.7.2",
48
+ "@modelcontextprotocol/sdk": "^1.20.0",
49
+ "@portone/server-sdk": "^0.17.0",
50
+ axios: "^1.12.2",
51
51
  graphql: "^16.11.0",
52
52
  "graphql-request": "^7.2.0",
53
53
  "gray-matter": "^4.0.3",
54
- h3: "2.0.0-beta.1",
54
+ h3: "2.0.1-rc.2",
55
55
  "js-yaml": "^4.1.0",
56
56
  open: "^10.2.0",
57
- "ts-pattern": "^5.7.1",
57
+ "ts-pattern": "^5.8.0",
58
58
  zod: "^3.25.75"
59
59
  },
60
- packageManager: "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad",
60
+ packageManager: "pnpm@10.20.0+sha512.cf9998222162dd85864d0a8102e7892e7ba4ceadebbf5a31f9c2fce48dfce317a9c53b9f6464d1ef9042cba2e02ae02a9f7c143a2b438cd93c91840f0192b9dd",
61
61
  devDependencies: {
62
- "@biomejs/biome": "2.0.6",
63
- "@changesets/cli": "^2.29.5",
62
+ "@biomejs/biome": "2.2.6",
63
+ "@changesets/cli": "^2.29.7",
64
64
  "@types/js-yaml": "^4.0.9",
65
- "@types/node": "^24.0.10",
65
+ "@types/node": "^22.18.10",
66
66
  tsup: "^8.5.0",
67
- "type-fest": "^4.41.0",
68
- typescript: "^5.8.3",
69
- vitest: "^1.6.0"
67
+ "type-fest": "^5.1.0",
68
+ typescript: "^5.9.3",
69
+ vitest: "^3.2.4"
70
70
  },
71
71
  engines: {
72
- node: ">=22.6.0"
72
+ node: ">=22.18.0"
73
73
  },
74
74
  files: [
75
75
  "server",
@@ -79,10 +79,7 @@ var package_default = {
79
79
  "LICENSE-MIT",
80
80
  "README.md"
81
81
  ],
82
- repository: {
83
- type: "git",
84
- url: "https://github.com/portone-io/portone-mcp-server.git"
85
- }
82
+ repository: "github:portone-io/mcp-server"
86
83
  };
87
84
 
88
85
  // src/loader/index.ts
@@ -1732,7 +1729,6 @@ import z11 from "zod";
1732
1729
  // src/tools/utils/markdown.ts
1733
1730
  function formatDocumentMetadata(doc) {
1734
1731
  const lines = [];
1735
- lines.push(`\uD30C\uC77C: ${doc.path}`);
1736
1732
  if (doc.frontmatter) {
1737
1733
  if (doc.frontmatter.title) {
1738
1734
  lines.push(`\uC81C\uBAA9: ${doc.frontmatter.title}`);
@@ -1751,40 +1747,44 @@ function formatDocumentMetadata(doc) {
1751
1747
  var name5 = "listPortoneDocs";
1752
1748
  var config5 = {
1753
1749
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D \uC870\uD68C",
1754
- description: `\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D\uC744 \uCE74\uD14C\uACE0\uB9AC\uBCC4\uB85C \uD544\uD130\uB9C1\uD558\uC5EC \uC870\uD68C\uD569\uB2C8\uB2E4.
1750
+ description: `\uD2B9\uC815 \uACBD\uB85C \uD558\uC704\uC5D0 \uC788\uB294 \uBAA8\uB4E0 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D\uC744 \uD2B8\uB9AC \uD615\uD0DC\uB85C \uC870\uD68C\uD569\uB2C8\uB2E4.
1755
1751
  \uBAA9\uB85D\uC5D0\uB294 \uBB38\uC11C \uACBD\uB85C, \uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804 \uB4F1 \uCD95\uC57D\uB41C \uBB38\uC11C \uC815\uBCF4\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
1756
1752
 
1757
1753
  Returns:
1758
- \uD544\uD130\uB9C1\uB41C \uBB38\uC11C \uBAA9\uB85D (\uAC01 \uBB38\uC758 \uACBD\uB85C, \uAE38\uC774, \uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804 \uB4F1)`,
1754
+ \uD544\uD130\uB9C1\uB41C \uBB38\uC11C \uBAA9\uB85D (\uAC01 \uBB38\uC11C\uC758 \uD30C\uC77C\uBA85, \uAE38\uC774, \uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804 \uB4F1)
1755
+
1756
+ Note:
1757
+ \uBB38\uC11C \uBAA9\uB85D\uC740 \uB300\uB7C9\uC758 \uB370\uC774\uD130\uC774\uBBC0\uB85C \uC0C1\uC704 \uB514\uB809\uD1A0\uB9AC\uB97C \uC870\uD68C\uD560 \uACBD\uC6B0 omitFiles\uB97C true\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.`,
1759
1758
  inputSchema: {
1760
- dev_docs: z11.boolean().default(true).describe(
1761
- "\uAC1C\uBC1C\uC790\uB97C \uC704\uD55C \uBB38\uC11C \uD3EC\uD568 \uC5EC\uBD80 (blog/, release-notes/, help/\uB85C \uC2DC\uC791\uD558\uC9C0 \uC54A\uB294 \uBAA8\uB4E0 \uBB38\uC11C)"
1759
+ paths: z11.string().array().default([]).describe(
1760
+ "\uD558\uC704 \uBAA9\uB85D\uC744 \uC870\uD68C\uD560 \uACBD\uB85C\uB4E4\uC785\uB2C8\uB2E4. \uBBF8\uC785\uB825 \uC2DC \uC804\uCCB4 \uBAA9\uB85D\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4."
1762
1761
  ),
1763
- tech_blog: z11.boolean().default(false).describe("\uAE30\uC220 \uBE14\uB85C\uADF8 \uD3EC\uC2A4\uD2B8 (blog/) \uD3EC\uD568 \uC5EC\uBD80"),
1764
- release_notes: z11.boolean().default(false).describe("\uAC1C\uBC1C\uC790\uC13C\uD130 \uB9B4\uB9AC\uC988 \uB178\uD2B8 (release-notes/) \uD3EC\uD568 \uC5EC\uBD80"),
1765
- help_docs: z11.boolean().default(true).describe(
1766
- "\uAC1C\uBC1C\uACFC \uBB34\uAD00\uD558\uAC8C \uC11C\uBE44\uC2A4 \uAD00\uB828 \uB0B4\uC6A9\uC744 \uC77C\uBC18\uC801\uC73C\uB85C \uB2F4\uB294 \uD5EC\uD504\uC13C\uD130 \uBB38\uC11C (help/) \uD3EC\uD568 \uC5EC\uBD80"
1762
+ onlyPaths: z11.boolean().default(false).describe(
1763
+ "true\uC778 \uACBD\uC6B0 \uBB38\uC11C\uB97C \uC81C\uC678\uD55C \uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D\uB9CC \uD45C\uC2DC\uD558\uACE0, \uB514\uB809\uD1A0\uB9AC \uD558\uC704\uC5D0 readme.md\uAC00 \uC788\uB294 \uACBD\uC6B0 \uD574\uB2F9 \uD30C\uC77C\uC758 \uC124\uBA85\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4."
1767
1764
  )
1768
1765
  }
1769
1766
  };
1770
1767
  function init5(documents) {
1771
- return ({ dev_docs, help_docs, tech_blog, release_notes }) => {
1768
+ return ({ paths, onlyPaths }) => {
1772
1769
  const { markdownDocs } = documents;
1773
1770
  const filteredDocs = [];
1771
+ const docTree = /* @__PURE__ */ new Map();
1774
1772
  for (const [path, doc] of Object.entries(markdownDocs)) {
1775
- if (tech_blog && path.startsWith("blog/")) {
1776
- filteredDocs.push(doc);
1777
- }
1778
- if (release_notes && path.startsWith("release-notes/")) {
1779
- filteredDocs.push(doc);
1780
- }
1781
- if (help_docs && path.startsWith("help/")) {
1782
- filteredDocs.push(doc);
1783
- }
1784
- if (dev_docs && !["blog/", "release-notes/", "help/"].some(
1785
- (prefix) => path.startsWith(prefix)
1786
- )) {
1787
- filteredDocs.push(doc);
1773
+ const isSubpath = paths.length === 0 || paths.some((searchPath) => path.startsWith(searchPath));
1774
+ if (!isSubpath) continue;
1775
+ filteredDocs.push(doc);
1776
+ let treeNode = docTree;
1777
+ const components = path.split("/");
1778
+ if (onlyPaths) components.pop();
1779
+ for (const pathComp of components) {
1780
+ const child = treeNode.get(pathComp);
1781
+ if (child) {
1782
+ treeNode = child;
1783
+ } else {
1784
+ const newChild = /* @__PURE__ */ new Map();
1785
+ treeNode.set(pathComp, newChild);
1786
+ treeNode = newChild;
1787
+ }
1788
1788
  }
1789
1789
  }
1790
1790
  if (filteredDocs.length === 0) {
@@ -1797,12 +1797,41 @@ function init5(documents) {
1797
1797
  ]
1798
1798
  };
1799
1799
  }
1800
- const formattedResult = filteredDocs.map((doc) => formatDocumentMetadata(doc)).join("\n---\n");
1800
+ const treeLines = [];
1801
+ for (const rootPath of Array.from(docTree.keys()).sort()) {
1802
+ const rootNode = docTree.get(rootPath);
1803
+ if (rootNode) formatTree(0, rootPath, rootPath, rootNode);
1804
+ }
1805
+ function formatTree(level, path, filename, node) {
1806
+ const indent = " ".repeat(level);
1807
+ treeLines.push(`${indent}${filename}`);
1808
+ const docs = markdownDocs[path];
1809
+ if (docs) {
1810
+ const metadata = formatDocumentMetadata(docs).trim();
1811
+ if (metadata.length > 0) {
1812
+ treeLines.push(metadata);
1813
+ }
1814
+ }
1815
+ if (onlyPaths) {
1816
+ const readme = markdownDocs[`${path}/readme.md`];
1817
+ if (readme) {
1818
+ const metadata = formatDocumentMetadata(readme).trim();
1819
+ if (metadata.length > 0) {
1820
+ treeLines.push(metadata);
1821
+ }
1822
+ }
1823
+ }
1824
+ for (const child of Array.from(node.keys()).sort()) {
1825
+ const childNode = node.get(child);
1826
+ if (childNode)
1827
+ formatTree(level + 1, `${path}/${child}`, child, childNode);
1828
+ }
1829
+ }
1801
1830
  return {
1802
1831
  content: [
1803
1832
  {
1804
1833
  type: "text",
1805
- text: formattedResult
1834
+ text: treeLines.join("\n")
1806
1835
  }
1807
1836
  ]
1808
1837
  };
@@ -1955,10 +1984,10 @@ __export(readDoc_exports, {
1955
1984
  import z14 from "zod";
1956
1985
  var name8 = "readPortoneDoc";
1957
1986
  var OutputSchema7 = z14.object({
1958
- content: z14.string().optional().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9"),
1959
- metadata: z14.string().optional().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uBA54\uD0C0 \uC815\uBCF4"),
1960
- url: z14.string().optional().describe("\uBB38\uC11C\uB97C \uC6F9\uC73C\uB85C \uC811\uADFC \uAC00\uB2A5\uD55C \uB9C1\uD06C")
1961
- });
1987
+ content: z14.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9"),
1988
+ metadata: z14.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uBA54\uD0C0 \uC815\uBCF4"),
1989
+ url: z14.string().describe("\uBB38\uC11C\uB97C \uC6F9\uC73C\uB85C \uC811\uADFC \uAC00\uB2A5\uD55C \uB9C1\uD06C")
1990
+ }).partial();
1962
1991
  var config8 = {
1963
1992
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uC77D\uAE30",
1964
1993
  description: `\uD3EC\uD2B8\uC6D0 \uAC1C\uBCC4 \uBB38\uC11C\uC758 \uACBD\uB85C\uB97C \uD1B5\uD574 \uD574\uB2F9 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9, \uBA54\uD0C0 \uC815\uBCF4(\uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804 \uB4F1), \uC6F9\uC73C\uB85C \uC811\uADFC \uAC00\uB2A5\uD55C \uB9C1\uD06C\uB97C \uAC00\uC838\uC635\uB2C8\uB2E4.
@@ -1968,12 +1997,14 @@ Note:
1968
1997
  \uADF8 \uC911 \uC6D0\uD558\uB294 \uBB38\uC11C\uC758 path\uB97C readPortoneDoc\uC5D0 \uC804\uB2EC\uD558\uC5EC \uB0B4\uC6A9\uC744 \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
1969
1998
  inputSchema: {
1970
1999
  path: z14.string().describe("\uC77D\uC744 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uACBD\uB85C"),
1971
- fields: OutputSchema7.keyof().array().describe("\uBC1B\uC744 \uD544\uB4DC \uBAA9\uB85D")
2000
+ fields: OutputSchema7.keyof().array().describe("\uBC1B\uC744 \uD544\uB4DC \uBAA9\uB85D"),
2001
+ startIndex: z14.number().optional().describe("\uC77D\uC5B4\uC62C \uBC94\uC704 \uC2DC\uC791 \uC778\uB371\uC2A4. \uBBF8\uC124\uC815 \uC2DC \uCC98\uC74C\uBD80\uD130 \uC77D\uC5B4\uC635\uB2C8\uB2E4."),
2002
+ endIndex: z14.number().optional().describe("\uC77D\uC5B4\uC62C \uBC94\uC704 \uB05D \uC778\uB371\uC2A4. \uBBF8\uC124\uC815 \uC2DC \uB05D\uAE4C\uC9C0 \uC77D\uC5B4\uC635\uB2C8\uB2E4.")
1972
2003
  },
1973
2004
  outputSchema: OutputSchema7.shape
1974
2005
  };
1975
2006
  function init8(documents) {
1976
- return ({ path, fields }) => {
2007
+ return ({ path, fields, startIndex, endIndex }) => {
1977
2008
  const { markdownDocs } = documents;
1978
2009
  const doc = markdownDocs[path];
1979
2010
  if (!doc) {
@@ -1990,7 +2021,7 @@ function init8(documents) {
1990
2021
  const structuredContent = filterFields(
1991
2022
  fields,
1992
2023
  {
1993
- content: doc.content,
2024
+ content: doc.content.slice(startIndex, endIndex),
1994
2025
  metadata: formatDocumentMetadata(doc),
1995
2026
  url: docPathToUrl(doc.path)
1996
2027
  }
@@ -2207,17 +2238,13 @@ function init10(schema) {
2207
2238
  try {
2208
2239
  const pruned_data = pruneYaml(schemaData, 3);
2209
2240
  const yamlOutput = stringifyYaml(pruned_data);
2210
- const structuredContent = {
2211
- result: yamlOutput
2212
- };
2213
2241
  return {
2214
2242
  content: [
2215
2243
  {
2216
2244
  type: "text",
2217
- text: JSON.stringify(structuredContent, null, 2)
2245
+ text: yamlOutput
2218
2246
  }
2219
- ],
2220
- structuredContent
2247
+ ]
2221
2248
  };
2222
2249
  } catch (error) {
2223
2250
  return {
@@ -2509,56 +2536,71 @@ ${searchableText}`;
2509
2536
  }
2510
2537
 
2511
2538
  // src/tools/regexSearch.ts
2512
- var name13 = "regex_search_portone_docs";
2539
+ var name13 = "regexSearchPortoneDocs";
2513
2540
  var config13 = {
2514
2541
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uC815\uADDC\uD45C\uD604\uC2DD \uAC80\uC0C9",
2515
- description: `\uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9 \uC911 Node.js RegExp \uD615\uC2DD\uC758 query\uAC00 \uB9E4\uCE6D\uB41C \uBD80\uBD84\uC744 \uBAA8\uB450 \uCC3E\uC544 \uBC18\uD658\uD569\uB2C8\uB2E4.
2542
+ description: `\uD2B9\uC815 \uACBD\uB85C \uD558\uC704\uC758 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9 \uC911 Node.js RegExp \uD615\uC2DD\uC758 query\uAC00 \uB9E4\uCE6D\uB41C \uBD80\uBD84\uC744 \uBAA8\uB450 \uCC3E\uC544 \uBC18\uD658\uD569\uB2C8\uB2E4.
2516
2543
  \uC815\uADDC\uC2DD \uAE30\uBC18\uC73C\uB85C \uAD00\uB828 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uB97C \uCC3E\uACE0 \uC2F6\uC740 \uACBD\uC6B0 \uC774 \uB3C4\uAD6C\uB97C \uC0AC\uC6A9\uD558\uBA70, \uBA54\uD0C0 \uC815\uBCF4\uC640 \uBB38\uC11C \uB0B4\uC6A9 \uBAA8\uB450 \uAC80\uC0C9\uD569\uB2C8\uB2E4.`,
2517
2544
  inputSchema: {
2545
+ paths: z19.string().array().optional().describe(
2546
+ "\uC124\uC815 \uC2DC \uC774 \uACBD\uB85C\uB97C \uC811\uB450\uC0AC\uB85C \uAC00\uC9C0\uB294 \uBB38\uC11C\uC5D0\uC11C\uB9CC \uAC80\uC0C9\uC744 \uC218\uD589\uD569\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4 OPI \uBB38\uC11C\uC758 \uACBD\uC6B0 opi/\uB97C \uC785\uB825\uD569\uB2C8\uB2E4."
2547
+ ),
2518
2548
  query: z19.string().describe(`Node.js RegExp \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4\uC744 \uC785\uB825\uD574\uC57C \uD558\uBA70, \uC601\uC5B4 \uC54C\uD30C\uBCB3 \uB300\uC18C\uBB38\uC790\uB294 \uAD6C\uBD84 \uC5C6\uC774 \uB9E4\uCE6D\uB429\uB2C8\uB2E4.
2519
2549
  \uC808\uB300 query\uC5D0 \uACF5\uBC31\uC744 \uD3EC\uD568\uC2DC\uD0A4\uC9C0 \uB9C8\uC138\uC694. \uC5EC\uB7EC \uD0A4\uC6CC\uB4DC\uB97C \uD55C \uBC88\uC5D0 \uAC80\uC0C9\uD558\uACE0 \uC2F6\uB2E4\uBA74, \uACF5\uBC31 \uB300\uC2E0 | \uC5F0\uC0B0\uC790\uB97C \uC0AC\uC6A9\uD558\uC5EC \uAD6C\uBD84\uD569\uB2C8\uB2E4.
2520
2550
  \uB2E8\uC5B4 \uAE00\uC790 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uC788\uB294 \uACBD\uC6B0\uB3C4 \uB9E4\uCE6D\uD558\uACE0 \uC2F6\uB2E4\uBA74, \uACF5\uBC31 \uB300\uC2E0 \\s*\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.`),
2521
- context_size: z19.number().describe(`\uAC80\uC0C9 \uACB0\uACFC\uC758 \uCEE8\uD14D\uC2A4\uD2B8 \uD06C\uAE30\uB85C, \uBB38\uC790 \uC218\uB97C \uAE30\uC900\uC73C\uB85C \uD569\uB2C8\uB2E4.
2551
+ contextSize: z19.number().default(0).describe(`0\uBCF4\uB2E4 \uD070 \uAC12\uC744 \uC124\uC815\uD560 \uACBD\uC6B0, \uAC80\uC0C9 \uACB0\uACFC\uC758 \uCEE8\uD14D\uC2A4\uD2B8 \uD06C\uAE30\uB85C, \uBB38\uC790 \uC218\uB97C \uAE30\uC900\uC73C\uB85C \uD569\uB2C8\uB2E4. 0 \uB610\uB294 50 \uC815\uB3C4\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4.
2522
2552
  query \uB9E4\uCE58\uAC00 \uBC1C\uACAC\uB41C \uC2DC\uC791 \uC778\uB371\uC2A4\uB97C idx\uB77C\uACE0 \uD560 \uB54C,
2523
- max(0, idx - context_size)\uBD80\uD130 min(contentLength, idx + len(query) + context_size) - 1\uAE4C\uC9C0\uC758 \uB0B4\uC6A9\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.
2553
+ max(0, idx - contextSize)\uBD80\uD130 min(contentLength, idx + len(query) + contextSize) - 1\uAE4C\uC9C0\uC758 \uB0B4\uC6A9\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.
2524
2554
  \uB2E8, \uC774\uC804 \uAC80\uC0C9\uACB0\uACFC\uC640 \uACB9\uCE58\uB294 \uCEE8\uD14D\uC2A4\uD2B8\uB294 \uBCD1\uD569\uB418\uC5B4 \uBC18\uD658\uB429\uB2C8\uB2E4.`),
2525
- limit: z19.number().default(5e4).describe(`\uBC18\uD658\uD560 \uCD5C\uB300 \uBB38\uC790\uC5F4 \uAE38\uC774\uC785\uB2C8\uB2E4. \uAE30\uBCF8\uAC12\uC740 50000\uC785\uB2C8\uB2E4.
2526
- \uCD9C\uB825\uC774 \uC774 \uAE38\uC774\uB97C \uCD08\uACFC\uD558\uBA74 \uC798\uB9AC\uACE0 truncation \uBA54\uC2DC\uC9C0\uAC00 \uCD94\uAC00\uB429\uB2C8\uB2E4.`),
2527
- start_index: z19.number().default(0).describe(`\uACB0\uACFC \uBB38\uC790\uC5F4\uC758 \uD398\uC774\uC9C0\uB124\uC774\uC158\uC744 \uC704\uD55C \uC2DC\uC791 \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uAE30\uBCF8\uAC12\uC740 0\uC785\uB2C8\uB2E4.
2528
- \uC804\uCCB4 \uACB0\uACFC \uBB38\uC790\uC5F4\uC5D0\uC11C start_index \uC704\uCE58\uBD80\uD130 limit \uAE38\uC774\uB9CC\uD07C\uC758 \uBD80\uBD84 \uBB38\uC790\uC5F4\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.
2529
- \uB3D9\uC77C\uD55C query, context_size\uB85C \uB2E4\uB978 start_index\uB97C \uC0AC\uC6A9\uD574 \uB2E4\uC74C \uACB0\uACFC\uB97C \uC5BB\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`)
2555
+ limit: z19.number().default(1e3).describe(
2556
+ `\uBC18\uD658\uD560 \uCD5C\uB300 \uBB38\uC790\uC5F4 \uAE38\uC774\uC785\uB2C8\uB2E4. \uCD9C\uB825\uC774 \uC774 \uAE38\uC774\uB97C \uCD08\uACFC\uD558\uBA74 \uC798\uB9AC\uACE0 truncation \uBA54\uC2DC\uC9C0\uAC00 \uCD94\uAC00\uB429\uB2C8\uB2E4.`
2557
+ ),
2558
+ page: z19.number().default(0).describe(
2559
+ `\uACB0\uACFC \uBB38\uC790\uC5F4\uC758 \uD398\uC774\uC9C0\uB124\uC774\uC158\uC744 \uC704\uD55C \uC2DC\uC791 \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uD55C \uD398\uC774\uC9C0\uC758 \uAE00\uC790 \uC218\uB294 limit \uC785\uB2C8\uB2E4.`
2560
+ ),
2561
+ showMetadata: z19.boolean().default(false).describe(
2562
+ "true\uC774\uBA74 \uBB38\uC11C\uC758 \uBA54\uD0C0\uB370\uC774\uD130(\uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804)\uC744 \uACB0\uACFC\uC5D0 \uD3EC\uD568\uD569\uB2C8\uB2E4."
2563
+ )
2530
2564
  },
2531
2565
  outputSchema: {
2532
2566
  result: z19.string().describe(
2533
- `\uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uB97C \uCC3E\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC11C\uC758 \uACBD\uB85C\uC640 \uAE38\uC774, \uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804\uACFC \uD568\uAED8, query\uAC00 \uB9E4\uCE6D\uB41C \uC8FC\uBCC0 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.`
2567
+ `\uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uB97C \uCC3E\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC11C\uC758 \uACBD\uB85C\uC640 \uAE38\uC774, \uBA54\uD0C0\uB370\uC774\uD130, query\uAC00 \uB9E4\uCE6D\uB41C \uC8FC\uBCC0 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.`
2534
2568
  )
2535
2569
  }
2536
2570
  };
2537
2571
  function formatOccurrence(occurrence) {
2572
+ if (occurrence.context.length === 0)
2573
+ return `\`\`\`txt startIndex=${occurrence.startIndex} endIndex=${occurrence.endIndex}\`\`\`
2574
+ `;
2538
2575
  return `\`\`\`txt startIndex=${occurrence.startIndex} endIndex=${occurrence.endIndex}
2539
2576
  ${occurrence.context}
2540
2577
  \`\`\`
2541
2578
  `;
2542
2579
  }
2543
2580
  function init13(documents) {
2544
- return ({ query, context_size, start_index, limit }) => {
2581
+ return ({ paths, query, contextSize, page, limit, showMetadata }) => {
2545
2582
  const { markdownDocs } = documents;
2546
2583
  let occurrenceCount = 0;
2547
2584
  let docCount = 0;
2548
2585
  let result = "";
2586
+ const filteredDocs = paths == null ? markdownDocs : Object.fromEntries(
2587
+ Object.entries(markdownDocs).filter(
2588
+ ([path]) => paths.some((searchPath) => path.startsWith(searchPath))
2589
+ )
2590
+ );
2549
2591
  try {
2550
- const bm25Scores = calculateBm25Scores(query, markdownDocs);
2592
+ const bm25Scores = calculateBm25Scores(query, filteredDocs);
2551
2593
  for (const [path, _score] of bm25Scores) {
2552
2594
  const doc = markdownDocs[path];
2553
2595
  const contentLen = doc.content.length;
2554
2596
  const occurrences = [];
2555
2597
  let lastContextEnd = 0;
2556
2598
  if (doc.frontmatter && JSON.stringify(doc.frontmatter).match(new RegExp(query, "i"))) {
2557
- lastContextEnd = Math.min(contentLen, context_size);
2599
+ lastContextEnd = Math.min(contentLen, contextSize);
2558
2600
  occurrences.push({
2559
2601
  startIndex: 0,
2560
2602
  endIndex: lastContextEnd,
2561
- context: doc.content.substring(0, lastContextEnd)
2603
+ context: contextSize === 0 ? "" : doc.content.substring(0, lastContextEnd)
2562
2604
  });
2563
2605
  }
2564
2606
  const regex = new RegExp(query, "gi");
@@ -2570,23 +2612,20 @@ function init13(documents) {
2570
2612
  }
2571
2613
  const idx = match7.index;
2572
2614
  const matchLen = match7[0].length;
2573
- const contextStart = Math.max(0, idx - context_size);
2574
- const contextEnd = Math.min(
2575
- contentLen,
2576
- idx + matchLen + context_size
2577
- );
2615
+ const contextStart = Math.max(0, idx - contextSize);
2616
+ const contextEnd = Math.min(contentLen, idx + matchLen + contextSize);
2578
2617
  if (contextStart < lastContextEnd) {
2579
2618
  const newOccurrence = {
2580
2619
  startIndex: occurrences[occurrences.length - 1].startIndex,
2581
2620
  endIndex: contextEnd,
2582
- context: doc.content.substring(
2621
+ context: contextSize === 0 ? "" : doc.content.substring(
2583
2622
  occurrences[occurrences.length - 1].startIndex,
2584
2623
  contextEnd
2585
2624
  )
2586
2625
  };
2587
2626
  occurrences[occurrences.length - 1] = newOccurrence;
2588
2627
  } else {
2589
- const context = doc.content.substring(contextStart, contextEnd);
2628
+ const context = contextSize === 0 ? "" : doc.content.substring(contextStart, contextEnd);
2590
2629
  occurrences.push({
2591
2630
  startIndex: contextStart,
2592
2631
  endIndex: contextEnd,
@@ -2598,9 +2637,11 @@ function init13(documents) {
2598
2637
  if (occurrences.length > 0) {
2599
2638
  docCount++;
2600
2639
  occurrenceCount += occurrences.length;
2601
- result += "---\n";
2602
- result += formatDocumentMetadata(doc);
2603
- result += "---\n";
2640
+ result += doc.path;
2641
+ result += "\n";
2642
+ if (showMetadata) {
2643
+ result += formatDocumentMetadata(doc);
2644
+ }
2604
2645
  for (const occurrence of occurrences) {
2605
2646
  result += formatOccurrence(occurrence);
2606
2647
  }
@@ -2621,48 +2662,45 @@ function init13(documents) {
2621
2662
  let fullResult = `${docCount} documents and ${occurrenceCount} occurrences found with query '${query}'
2622
2663
 
2623
2664
  ${result}`;
2624
- if (start_index > 0) {
2625
- if (start_index >= fullResult.length) {
2665
+ if (page > 0) {
2666
+ const offset = page * limit;
2667
+ if (offset >= fullResult.length) {
2626
2668
  return {
2627
2669
  content: [
2628
2670
  {
2629
2671
  type: "text",
2630
- text: `No more results. Total result length: ${fullResult.length}`
2672
+ text: `No more results. Total page count: ${Math.ceil(fullResult.length / limit)}`
2631
2673
  }
2632
2674
  ],
2633
2675
  isError: true
2634
2676
  };
2635
2677
  }
2636
- fullResult = fullResult.substring(start_index);
2678
+ fullResult = fullResult.substring(offset);
2637
2679
  }
2638
2680
  if (fullResult.length > limit) {
2639
2681
  const truncationMsg = `
2640
2682
 
2641
- ... (output truncated due to length limit. Use start_index=${start_index + limit} for next page)`;
2642
- const structuredContent2 = {
2683
+ ... (output truncated due to length limit. Use page: ${page + 1} for next page)`;
2684
+ const structuredContent = {
2643
2685
  result: fullResult.substring(0, limit) + truncationMsg
2644
2686
  };
2645
2687
  return {
2646
2688
  content: [
2647
2689
  {
2648
2690
  type: "text",
2649
- text: JSON.stringify(structuredContent2, null, 2)
2691
+ text: JSON.stringify(structuredContent, null, 2)
2650
2692
  }
2651
2693
  ],
2652
- structuredContent: structuredContent2
2694
+ structuredContent
2653
2695
  };
2654
2696
  }
2655
- const structuredContent = {
2656
- result: fullResult
2657
- };
2658
2697
  return {
2659
2698
  content: [
2660
2699
  {
2661
2700
  type: "text",
2662
- text: JSON.stringify(structuredContent, null, 2)
2701
+ text: fullResult
2663
2702
  }
2664
- ],
2665
- structuredContent
2703
+ ]
2666
2704
  };
2667
2705
  }
2668
2706
  } catch (error) {
@@ -1,201 +0,0 @@
1
- ---
2
- title: 파트너 정산 자동화 서비스 가이드 2
3
- category: 관리자콘솔 (관리자콘솔 사용 가이드) > 파트너 정산 자동화 > 파트너 정산 자동화
4
- seo:
5
- title: 파트너 정산 자동화 가이드
6
- description: >-
7
- 재무, 개발 공수를 획기적으로 줄여주는 포트원의 파트너정산 자동화 서비스를 소개합니다. 간단한 API 연동과 관리자 콘솔을 통해 고객사
8
- 자체 개발에 드는 많은 비용과 시간의 절감이 가능합니다.
9
- keywords:
10
- - 관리자콘솔
11
- - 파트너정산자동화
12
- - 파트너정산
13
- tags:
14
- - 공통
15
- - 파트너 정산 자동화
16
- pgCompanies:
17
- - 공통
18
- searchTags:
19
- - 파트너계약
20
- - 정산정책
21
- - 할인수수료정책
22
- - 할인수수료
23
- - 수수료등록
24
- - 추가수수료정책
25
- - 수식관리
26
- - 파트너관리
27
- - 파트너추가
28
- - 정산내역
29
- - 할인분담금
30
- - 할인정책
31
- - 파트너분담률
32
- - 하위정산
33
- - 정산자동화
34
- - pg지급이체
35
- - 지급이체
36
- - 매출정산자동화
37
- - 파트너정산
38
- - 파트너 정산
39
- - 정산
40
- - 파트너 정산 자동화
41
- datetime: 2025-06-18T07:47:13.455Z
42
- ---
43
-
44
- ### **서비스 소개**
45
-
46
- #### **1. 요약**
47
-
48
- 파트너 정산 자동화 서비스는 플랫폼, 마켓 플레이스, 커머스 사업을 위한 포트원만의 재무 서비스 모듈로 국내 최초로 개발되었습니다. 파트너에게 지급되어야 하는 정산 금액을 자동으로 계산하고 세금계산서, 송금(지급이체)까지 자동화함으로써 재무팀과, 운영팀, 개발팀 모두의 리소스를 획기적으로 절감할 수 있습니다. API 연동 및 포트원 관리자 콘솔을 통한 노코드 연동 모두 지원됩니다.
49
-
50
- #### **2. 핵심 기능**
51
-
52
- 1. 개인 및 사업자 유형에 따라 다양한 정산 정책을 등록하고 관리할 수 있습니다.
53
- 2. 파트너를 대량으로 등록하고 손쉽게 관리할 수 있습니다.
54
- 3. 파트너별 정산 정책을 자동으로 매칭시켜서 정산 주기에 맞게 정산금을 자동으로 계산합니다.
55
- 4. 사업자 대상 세금계산서 역발행 요청 기능을 제공합니다.
56
- 5. 계산된 정산금을 클릭 한 번으로 송금 및 이체 처리할 수 있습니다.
57
- 6. 가상계좌의 입출금 내역을 실시간으로 확인할 수 있습니다.
58
-
59
- #### **3. 용어 설명**
60
-
61
- - 정산 서비스 이용에 참고하실 수 있는 [용어별 설명 가이드 보러가기↗](https://developers.portone.io/platform/guides/dictionary)를 안내드립니다.
62
-
63
- ### 상세 이용 가이드
64
-
65
-
66
-
67
- #### 1. 정산정책관리
68
-
69
- <Tag text="계약관리" />
70
-
71
- **자동으로 정산데이터가 생성될 수 있도록 계약을 추가해주세요.**
72
-
73
- - **중개수수료 설정**
74
- - 정률 (%) / 정액 (₩) 선택하여 설정가능
75
- - 부가세를 파트너에서 부담할지 설정가능
76
- - **정산주기 설정**
77
- - 지체일 : 매출 1일, 정산 2일
78
- - 매출(결제)이 발생된 이후 홀드하고 있어야 하는 기간
79
- - 정산일 주기 설정
80
- - 매월 / 매주 / 매일 / 매년
81
- - N일 정산
82
- - **기준일 설정**
83
- - 전 영업일 / 후 영업일 / 달력일 중 선택가능
84
- - **아이디 생성 및 메모**
85
- - 아이디 생성 : 설정하신 계약에 대한 아이디를 부여합니다. 원하는 아이디로 설정하거나, 난수의 식별번호로 생성하실 수도 있습니다.
86
- - 메모 : 계약에 대한 메모 설정
87
-
88
- <Tag text="할인 분담 정책" />
89
-
90
- 정산 처리 시 진행하고 있는 프로모션 할인 비율을 적용할 수 있습니다.
91
-
92
- - 할인 정책 아이디 : 설정할 할인정책을 구분할 아이디를 설정해주세요.
93
- - 파트너 분담률 : 포인트 및 쿠폰으로 인한 할인금액에 대해서 파트너가 부담하기로 한 비율입니다.
94
- - 메모 등록
95
-
96
- <Tag text="추가 수수료 정책" />
97
-
98
- **정산 건에 추가 수수료가 적용될 경우 등록하신 아이디를 전달해주셔야 합니다**
99
-
100
- - 추가 수수료 아이디 : 추가하실 수수료 정책을 구분할 아이디를 설정해주세요.
101
- - 추가 수수료 정보 : 정률(%) / 정액(₩)
102
- - 부가세 분담 주체 : 파트너 부담 or 우리 회사 부담
103
- - 메모 등록
104
-
105
- <Tag text="계산관리" />
106
-
107
- **아래 수식은 API 호출을 통해서 사용이 가능합니다.**
108
-
109
- - 플랫폼 중개 수수료 수식
110
- - 사용가능 변수: 주문금액, 결제금액, 결제금액부가세, 결제금액부가세 부담금, 할인금액, 할인부담금, 정액(정액 플랫폼 중개 수수료), 정률(정률 플랫폼 중개 수수료)
111
- - 할인 분담금 수식
112
- - 사용가능 변수: 할인금액, 정률(할인 분담률)
113
- - 추가 수수료 수식
114
- - 사용가능 변수: 주문금액, 결제금액, 결제금액부가세, 결제금액부가세 부담금, 할인금액, 할인부담금, 플랫폼중개수수료, 플랫폼중개수수료부가세 부담금, 정액(정액 추가 수수료), 정률(정률 추가 수수료)
115
- - 사용자 정의 수식
116
- - 플랫폼 정책에 맞는 맞춤형 정산 수식 작성 가능
117
- - 수식 테스트
118
- - 실제 적용 전 예상 정산금액 미리 검증 가능
119
- - 전체 수식 계산식
120
- - 정산 금액 = 주문 금액 - 결제금액부가세 부담금 -중개 수수료- 중개수수료부가세 부담금 -추가 수수료 - 추가수수료부가세 부담금 - 할인 부담금
121
-
122
- #### 2. 파트너 관리
123
-
124
- **정산이 이루어질 파트너를 등록합니다.**
125
-
126
-
127
-
128
- <Tag text="파트너 추가" />
129
-
130
- 파트너 추가 기능은 포트원 관리자콘솔에서 수동처리 및 API 호출로 가능합니다.
131
-
132
- - 정산 대상 설정
133
- - 사업자 정보 및 이름을 입력합니다.
134
- - 원천징수 대상자/비대상자 유형을 선택합니다.
135
- - 과세 유형을 설정합니다. (일반과세, 간이과세, 면세사업자)
136
- - 계좌정보
137
- - 정산데이터가 생성될 정산받을 대상의 계좌정보를 설정합니다.
138
- - 이 때 1번에 등록한 계약 건과 연동합니다.
139
- - 예금주 조회를 통한 계좌 유효성을 자동 검증합니다.
140
- - 사업자 검증
141
- - 휴폐업 상태를 자동 조회 할 수 있습니다.
142
- - 국세청 연동
143
- - 세금계산서 발행을 위한 국세청 연동 상태 관리 기능을 지원합니다.
144
- - 국세청 연동 시 세금계산서 발행을 위해 파트너사 \[팝빌] 자동 회원가입을 진행합니다.
145
- - 메모등록
146
- - 파트너에 대한 메모를 입력합니다.
147
- - 태그등록
148
- - 우리 회사 내부적으로 쓰고 있는 규칙이 있다면 자유롭게 태그를 등록 그룹으로 만들어보세요. 이후에 필터 / 검색 시 활용할 수 있습니다.
149
- - 아이디 생성
150
- - 정산 api에 사용될 아이디를 발급합니다. 원하는 아이디로 설정하거나, 난수의 식별번호로 생성하실 수 있습니다.
151
- - 일괄 등록 기능
152
- - CSV 파일로 파트너를 대량등록 하실 수 있습니다.
153
- - 사용자 정의 속성 관리
154
-
155
- #### 3. 정산 상세 조회
156
-
157
- - 정산 API를 호출하여 정산일에 맞게 생성된 주문 정산, 주문 취소 정산 내역을 조회할 수 있습니다.
158
- - 수기로 정산 내역 조정이 필요한 경우 음수 정산 / 양수 정산 건을 생성하여 예외적인 정산 케이스를 관리할 수 있습니다.
159
- - 정산 상세 내역을 CSV 파일로 다운로드하여 정산 명세서를 손쉽게 작성하고 관리할 수 있습니다.
160
- - 수기 정산건 등록 시 즉시 정산내역 관리에 반영되어 실시간 확인이 가능합니다.
161
-
162
-
163
-
164
- #### 4. **정산 내역 관리하기**
165
-
166
- - 정산 내역 관리는 1시간마다 배치를 통해 동기화됩니다. 등록한 정산 상세 내역 중 \[정산일]이 도래한 정산 건은 자동 취합되며, 정산 내역 관리 페이지에서 조회할 수 있습니다.
167
- - 이미 생성된 정산 내역이 있더라도 API 혹은 콘솔의 수기 정산 기능으로 해당 정산일에 추가 정산 내역을 등록하면, 정산 금액은 합산됩니다.
168
- - 다만 기존의 정산 건이 지급실패/지급보류 상태로 변경된 경우, 추가 정산 내역을 등록하더라도 정산 금액은 합산되지 않고 새로운 정산 건이 별도로 생성됩니다.
169
- - 송금대행 일괄지급은 기존에 즉시 지급만 가능하였으나, 이번 업데이트로 즉시 지급과 예약지급을 선택 하여 지급을 실행할 수 있습니다. 내부 정책에 맞게 지급 일시를 유연하게 관리해보세요. 
170
- - 기본 통장메모를 일괄 설정하면 송금대행 일괄지급 시 자동으로 적용되어 반복 기입할 필요가 없습니다.
171
-
172
-
173
-
174
- #### 5. **송금대행 일괄지급**
175
-
176
- - \[정산내역 관리] 페이지에서 총 10개의 정산일자를 선택하여 원하는 정산내역을 선택하여 \[송금대행 일괄지급] 을 실행할 수 있습니다.
177
- - 송금대행 일괄지급 서비스를 신청하는 경우, 전용 가상계좌가 부여됩니다.
178
- - 예약지급과 즉시지급이 가능하며 즉시지급 선택 시 실시간으로 지급이 실행됩니다.
179
-
180
-
181
-
182
- #### 6. **일괄지급 내역 관리**
183
-
184
- - \[일괄지급 내역 관리]에서 일괄 지급 현황을 실시간으로 확인할 수 있습니다. 지급 오류를 방지하기 위해 지급은 시스템에서 차례로 진행되며, 2개 이상의 일괄지급을 동시에 진행할 수 없습니다.
185
- - 정보 오기입 등의 사유로 송금대행 일괄 지급 중단이 필요하신 경우 \[중단] 버튼을 이용하여 즉시 지급을 중단할 수 있습니다. 지급중단 처리는 준비완료, 진행 중 상태일 때 가능합니다.
186
-
187
-
188
-
189
- #### 7. **지급내역 관리**
190
-
191
- - 지급 내역 관리 페이지에서 진행 중인 지급 현황을 확인할 수 있습니다.
192
- - 지급이 실패한 경우, 실패 사유를 확인할 수 있습니다. 지급 실패 건에 대해 지급을 재시도하고자 하는 경우, \[정산 내역 관리] 페이지의 ‘지급실패’ 상태 탭에서 해당 지급 건을 확인한 뒤 새롭게 일괄지급을 실행할 수 있습니다.
193
-
194
-
195
-
196
- #### **8. 세금계산서 역발행**
197
-
198
- - 세금계산서 역발행 페이지에서 공급받는자가 공급자 대신 세금계산서를 작성하여 발행 요청할 수 있습니다.
199
- - 공급자는 이메일로 발행 요청을 받은 후 세금계산서 내용을 확인하고 승인 또는 거부할 수 있습니다.
200
- - 세금계산서를 단건으로 작성하거나 CSV 파일을 통해 일괄 등록할 수 있습니다. 이메일 재발송 기능을 통해 공급자가 이메일을 놓친 경우에도 다시 발행 요청을 보낼 수 있습니다.
201
-