Conformance witness · observation, not accusation · recomputable
Endpoint: https://api.xdata.kr/mcp
Version string served, unchanged across both observations: 1.0.0
Change first observed: 2026-10-10T19:40:03.823Z
Finding: CLASS_SUSPENDED_CRITICAL
Surface expanded without a version change, and at least one new tool takes an action (writes, sends, moves money, or deletes).
Two anonymous tools/list enumerations of the endpoint above, at different times.
The serverInfo.version string was byte-identical in both. The tool set was not.
Tools present in the later enumeration but not the earlier (129):
fourinsure__b1__business_establishment__initfourinsure__b1__certificate__apply__initfourinsure__b1__certificate__apply__submitfourinsure__b1__certificate__history__detailfourinsure__b1__certificate__history__detail_initfourinsure__b1__certificate__history__listfourinsure__b1__certificate__history__list_initfourinsure__b1__certificate__history__pdf_downloadfourinsure__b1__civil_receipt__history__listfourinsure__b1__civil_receipt__history__list_initfourinsure__b1__member_qualification__acqs_initfourinsure__b1__member_qualification__chg_initfourinsure__b1__member_qualification__dependent_initfourinsure__b1__member_qualification__los_initfourinsure__b1__payroll__amount_change__initfourinsure__b1__resources__faqs__detailfourinsure__b1__resources__faqs__listfourinsure__b1__resources__faqs__list_initfourinsure__b1__resources__files__downloadfourinsure__b1__resources__forms__attachmentsfourinsure__b1__resources__forms__detailfourinsure__b1__resources__forms__listfourinsure__b1__resources__forms__list_initfourinsure__b1__resources__notices__institutions__attachmentsfourinsure__b1__resources__notices__institutions__detailfourinsure__b1__resources__notices__institutions__listfourinsure__b1__resources__notices__institutions__list_initfourinsure__b1__workplace__auto_transfer_unagreement__init ← takes an actionfourinsure__b1__workplace__withdrawal__initfourinsure__b1__workplace_support__household_worker__initfourinsure__b1__workplace_support__insurance_support__initgoogle__ads__channels__reportgoogle__ads__demand_gen__campaign__create ← takes an actiongoogle__ads__demand_gen__campaign__update ← takes an actiongoogle__ads__demand_gen__reportgoogle__ads__display__campaign__create ← takes an actiongoogle__ads__display__campaign__update ← takes an actiongoogle__ads__display__reportgoogle__ads__pmax__campaign__create ← takes an actiongoogle__ads__pmax__campaign__update ← takes an actiongoogle__ads__pmax__reportgoogle__ads__search__campaign__create ← takes an actiongoogle__ads__search__campaign__update ← takes an actiongoogle__ads__search__reportgoogle__ads__video__asset__create ← takes an actiongoogle__analytics__measurement__create ← takes an actiongoogle__analytics__measurement__update ← takes an actiongoogle__search_console__site__addgoogle__search_console__site__remove ← takes an actiongoogle__search_console__sitemap__delete ← takes an actiongoogle__search_console__sitemap__submitgoogle__tag_manager__tag__create ← takes an actiongoogle__tag_manager__tag__update ← takes an actiongoogle__tag_manager__version__publish ← takes an actiongoogle__youtube__analytics__reportgoogle__youtube__playlist__create ← takes an actiongoogle__youtube__playlist__item__addgoogle__youtube__report_job__create ← takes an actiongoogle__youtube__report_job__readgoogle__youtube__video__caption__addgoogle__youtube__video__thumbnail__setgoogle__youtube__video__update ← takes an actionhometax__cash_receipt__daily_issue__cancel ← takes an actionhometax__cash_receipt__daily_issue__modify ← takes an actionhometax__cash_receipt__issue_individualhometax__certificate__apply_auto_downloadhometax__tax__withholding__regular_report__basic_savehometax__tax__withholding__regular_report__detail_savehometax__tax__withholding__regular_report__inithometax__tax__withholding__regular_report__previewhometax__tax__withholding__regular_report__reviewhometax__tax__withholding__regular_report__submitnhis_edi__business__basic_infonhis_edi__certificates__health_premium_payment__individual__init ← takes an actionnhis_edi__certificates__payment_completion__init ← takes an actionnhis_edi__certificates__payment_completion__issue ← takes an actionnhis_edi__certificates__workplace_application_notice__apply__initnhis_edi__certificates__workplace_application_notice__issued__initnhis_edi__certificates__workplace_member_list__apply__initnhis_edi__certificates__workplace_member_list__issued__initnhis_edi__document_box__sent_documents__detailnhis_edi__document_box__sent_documents__listnhis_edi__file_report__initnhis_edi__hr_payroll__edi_electronic_notices__contractnhis_edi__hr_payroll__edi_electronic_notices__search_optionsnhis_edi__hr_payroll__health_premiums__employee_detailsnhis_edi__hr_payroll__health_premiums__summarynhis_edi__hr_payroll__payment_status__listnhis_edi__hr_payroll__premium_notices__detailnhis_edi__hr_payroll__premium_notices__searchnhis_edi__hr_payroll__premium_notices__selectnhis_edi__hr_payroll__processing_results__listnhis_edi__hr_payroll__received_documents__optionsnhis_edi__public__forms__listnhis_edi__qualification__acquisition__initnhis_edi__qualification__change__initnhis_edi__qualification__dependent__initnhis_edi__qualification__loss__initnps_edi__b1__certificates__application_results__searchnps_edi__b1__certificates__membership__applynps_edi__b1__declarations__processing_results__searchnps_edi__b1__lookups__pension_support_recovery_decisions__searchnps_edi__b1__lookups__workplace_premium_notices__searchnps_edi__b1__lookups__workplace_premium_support__detailsnps_edi__b1__lookups__workplace_subscribers__statusnps_edi__b1__national_pension_premiums__guidenps_edi__b1__national_pension_premiums__payment_history ← takes an actionnps_edi__b1__national_pension_premiums__retro_paymentsnps_edi__b1__national_pension_premiums__subscribersnps_edi__b1__national_pension_premiums__summarynps_edi__b1__national_pension_premiums__support_detailsnps_edi__b1__pension_notices__searchnps_edi__b1__pension_notices__selectnps_edi__b1__pension_notification_documents__detailnps_edi__b1__pension_notification_documents__searchnps_edi__b1__workplace__main_basic_infowetax__session__loginwetax__tax__local_income__special_withholding__adjustment_savewetax__tax__local_income__special_withholding__cancel ← takes an actionwetax__tax__local_income__special_withholding__declarant_savewetax__tax__local_income__special_withholding__initwetax__tax__local_income__special_withholding__payment_status ← takes an actionwetax__tax__local_income__special_withholding__reviewwetax__tax__local_income__special_withholding__search_historywetax__tax__local_income__special_withholding__statement_savewetax__tax__local_income__special_withholding__submitwetax__tax__local_income__special_withholding__target_savework24__subsidy__application__attachment_delete ← takes an actionwork24__subsidy__diagnosis__searchA client that pinned 1.0.0 and reviewed the tool list at
pin time is, today, being served a different list under the same version string. Gateways
and MCP hosts that cache an approved tool set per version will not re-request approval,
because from their side nothing announced a change.
In this case 29 of the new tools take an action rather than returning data (fourinsure__b1__workplace__auto_transfer_unagreement__init, google__ads__demand_gen__campaign__create, google__ads__demand_gen__campaign__update, google__ads__display__campaign__create, google__ads__display__campaign__update, google__ads__pmax__campaign__create, google__ads__pmax__campaign__update, google__ads__search__campaign__create, google__ads__search__campaign__update, google__ads__video__asset__create, google__analytics__measurement__create, google__analytics__measurement__update, google__search_console__site__remove, google__search_console__sitemap__delete, google__tag_manager__tag__create, google__tag_manager__tag__update, google__tag_manager__version__publish, google__youtube__playlist__create, google__youtube__report_job__create, google__youtube__video__update, hometax__cash_receipt__daily_issue__cancel, hometax__cash_receipt__daily_issue__modify, nhis_edi__certificates__health_premium_payment__individual__init, nhis_edi__certificates__payment_completion__init, nhis_edi__certificates__payment_completion__issue, nps_edi__b1__national_pension_premiums__payment_history, wetax__tax__local_income__special_withholding__cancel, wetax__tax__local_income__special_withholding__payment_status, work24__subsidy__application__attachment_delete),
so the difference between the approved set and the served set is not only informational.
This is a plain MCP handshake. No credentials, nothing of ours required:
curl -s -X POST 'https://api.xdata.kr/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-06-18' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"check","version":"1"}}}'
# then, with the returned Mcp-Session-Id:
curl -s -X POST 'https://api.xdata.kr/mcp' \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-06-18' -H 'Mcp-Session-Id: <id>' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
Our surface hashes over the sorted tool names plus sorted input-schema property names:
| observation | surface hash |
| earlier | 8dd63bc837c73917c532c5807c74b8c38eb958c3a0227806dd22357e74749b67 |
| later | 64284fd8d9c0592b63a35bf7cf9503097fecae6e99a95d87b84083d6c342bf0e |
If your own enumeration disagrees with the later hash, we are wrong and we want to hear it.
deploy produces exactly this signal, and that is the most likely explanation.
under an unchanged version string.
Absence from our view is not absence from your server.
Unannounced periodic re-enumeration of a live MCP population — we ask the endpoint
directly on a schedule rather than waiting to be notified. Relevant because only
6.4% of live MCP servers have a working channel to announce a change at all
(69.1% never declare tools.listChanged; of those that do, most expose no
server-initiated stream to send it on). A change like the one above cannot reach a
notification-based monitor, which is why it is normally invisible.
*StillOS Digital Holdings — continuous conformance witness for MCP servers.*
*Report generated 2026-10-30T17:18:49.826Z from observations dated 2026-10-10T19:40:03.823Z.*
If anything here is wrong — a change you did not make, a hash that does not match, a host that was reassigned to you — tell us and we will correct or remove this page. No proof required to request removal; the record is whatever we observed, and your word about your own host outranks it.
Free. Goes to a human. Or email stillmarcus24@gmail.com.