Use the public endpoint for connection and read-only discovery checks. A complete submission test
requires an explicit Hum test arrangement because create_order can reach fulfillment.
Do not place a production order with invented data. Hum does not publish deterministic test
addresses, reusable test credentials, or a self-service transactional sandbox. If Hum provides a
review arrangement, use only its designated address, customer data, expected outcome, and cleanup
procedure.
No API key is required. Record the client name and version, negotiated MCP protocol version, server
name and version, endpoint, and test time.Verify:
Initialization succeeds over Streamable HTTP.
tools/list returns exactly check_availability, validate_order, create_order, and
get_order with closed input schemas and the documented side-effect annotations.
The server card reports the same endpoint, identity, and version.
skills/list and skills/get expose both public skills.
resources/read returns the exact canonical bytes for:
skill://check-internet-availability/SKILL.md
skill://order-internet-service/SKILL.md
You can compare the HTTP skill responses with those resources:
The released contract contains the exact public schemas and
runtime input combinations. The scenario file contains synthetic
responses approved for documentation and client development.For each documented request:
Validate the arguments against the released tool input schema.
Check the argument keys against the tool’s accepted runtime shapes.
Confirm unknown keys are rejected.
For each documented response:
Match it to a named scenario and its release provenance.
Validate it against the released output schema.
Confirm the page does not add fields or stronger claims than the fixture supports.
The fixtures demonstrate shapes and client behavior. They do not guarantee that a public address
will produce a particular provider, offer, question, price, timing, or fulfillment result.
With approved test data or the released fixtures, exercise:
ambiguous address selection
a missing unit
FCC findings while the live source is still checking
FCC-only, live-only, and both-source matches
live completion, failure, and timeout
a current typed question set and its continuation
informational catalog plans with no executable offer
at least one executable offer with an exact offer ID
an expired or stale continuation
rate limiting and a retry delay
Verify that the client preserves partial results, labels FCC findings as area evidence, waits before
polling, sends no stale question answer, and never presents a catalog plan as orderable.
With an executable fixture or approved environment:
start validation from an exact lookup and offer
use field_errors for actual missing or invalid values while recognizing that required_fields
can include filled paths; reuse customer facts already supplied
send start, poll, and edit as separate exact input shapes; nest changed values inside details
poll only with checkout_id after the returned delay without restarting validation
retrieve the current checkout after a stale revision, then edit at its returned revision
distinguish root INVALID_PARAMS from a sanitized nested-details tool isError response
preserve returned equipment defaults when internet_addons is omitted
decline optional equipment with internet_addons: []
select returned equipment with exact option IDs and positive integer quantities
enforce radio choices, quantity limits, and dependent-option parent selections
preserve a customer-owned equipment request rather than substituting a free provider gateway
correct field-specific errors
reject a stale revision
poll a checking draft
handle changed equipment, included products, pricing, fees, discounts, or totals
handle an unavailable or expired offer
reach a ready review with included products, one-time fees, total amount, and any returned
bundle discount
compare the technically ready review with budget, speed, equipment, billing, and installation
intent; stop without submitting when it differs or authorization is unavailable
Confirm that validation creates no order and sends no fulfillment request. The client must present
the exact returned review and keep unknown facts unknown. Check that an unknown speed is not called
a failed speed check, that the cart total is not presented as a monthly bill or payment due now,
and that declined billing preferences do not produce an invented discount adjustment. Do not
repeat a service PIN, full birth date, or opaque capability in customer-facing prose.
Run these only under Hum’s explicit transactional test arrangement:
authorization for the exact current review and terms hash
one queued submission with a stable idempotency key
an identical replay that resolves to the same intended order
an idempotency conflict with changed input
a lost or interrupted create response followed by get_order
recorded accepted, rejected, unknown, and not-submitted outcomes when the arrangement supports
them
The client must retrieve before retrying after an uncertain create call. It must not describe any
fulfillment state as ISP acceptance or installation confirmation.
The earlier transactional release was exercised through the public MCP endpoint under an approved
test arrangement. One Xfinity order with a selected equipment item reached
accepted_by_fulfillment; an earlier approved AT&T exercise also completed successfully. These
checks verify the released ordering path for those cases. The September 24 checkout-guidance update
was verified through public discovery, skill-byte parity, schemas, and internal synthetic tests;
it did not place another live order. None of these checks proves every provider or address will
qualify, and fulfillment acceptance is still not ISP acceptance or installation confirmation.The shared ordering flow is available across Hum’s supported provider scope. Use the approved
fixtures for cases that cannot be produced safely or deterministically in production.
Hum’s repository tests cover schema validation, result rendering, skill and metadata parity, and
mocked workflow states. These tests are release checks for Hum’s implementation. They are not a
public sandbox, do not prove that a provider will return the same result, and do not authorize a
live fulfillment submission.Contact support@letshum.com for an approved end-to-end review
arrangement.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Hum Documentation","colors":{"primary":"#2a77fa","light":"#F1F5F9","dark":"#0c76f9"},"logo":{"light":"https://mintcdn.com/hum/EGVZNDogcsGNqYtL/logo/hum.svg?fit=max\u0026auto=format\u0026n=EGVZNDogcsGNqYtL\u0026q=85\u0026s=8bd29d065c4bb046f4c7c7f49da36bbb","dark":"https://mintcdn.com/hum/EO5jHcOxNKbOuoxY/logo/hum_white.png?fit=max\u0026auto=format\u0026n=EO5jHcOxNKbOuoxY\u0026q=85\u0026s=3827bdfbb39a028c883c7893813b1b64"},"favicon":"https://mintcdn.com/hum/EGVZNDogcsGNqYtL/favicon.svg?fit=max\u0026auto=format\u0026n=EGVZNDogcsGNqYtL\u0026q=85\u0026s=dff27db0a310e983c60e337475bafbc7","background":{"image":{"light":"https://mintcdn.com/hum/EO5jHcOxNKbOuoxY/images/main-bg_home.svg?fit=max\u0026auto=format\u0026n=EO5jHcOxNKbOuoxY\u0026q=85\u0026s=4f5502fc6992ad9135f88385a79089a8","dark":"https://mintcdn.com/hum/EO5jHcOxNKbOuoxY/images/main-bg_home.svg?fit=max\u0026auto=format\u0026n=EO5jHcOxNKbOuoxY\u0026q=85\u0026s=4f5502fc6992ad9135f88385a79089a8"},"color":{"light":"#ffffff","dark":"#000000"}},"navbar":{"links":[{"href":"mailto:support@letshum.com","label":"Support"}],"primary":{"type":"button","label":"Get Started","href":"https://letshum.com/contact"}},"footer":{"socials":{"github":"https://github.com/letshum","linkedin":"https://www.linkedin.com/company/letshum"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://letshum.com"},{"anchor":"Support","icon":"envelope","href":"mailto:support@letshum.com"},{"anchor":"Operational Status","icon":"chart-simple","href":"https://status.letshum.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hum","hasAudioNarration":false,"actualSubdomain":"hum","customDomains":["docs.letshum.com"],"gitSource":{"type":"github","owner":"letshum","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb9475493b8713a73230e4","collectionId":"064e8e0b-75cf-4b83-a7e1-203839e9fc80","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb9475493b8713a73230e4"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{},"buildId":"6aee062c556a44a2a47f7d27","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Guides","count":9},{"language":"default","tag":"API Reference","count":8},{"language":"default","tag":"MCP","count":7},{"language":"default","tag":"Hum Broadband MCP","count":7},{"language":"default","tag":"Integration","count":6},{"language":"default","tag":"Widget Integration","count":4},{"language":"default","tag":"Get Started","count":3},{"language":"default","tag":"Sessions","count":3},{"language":"default","tag":"Analytics","count":2},{"language":"default","tag":"Health Check","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"mcp/testing","slug":"/mcp/testing","pageMetadata":{"title":"Testing","description":"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits","icon":"flask","iconType":"solid","href":"/mcp/testing"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`testing`,children:`Testing`}),`\n`,_jsxs(_components.p,{children:[`Use the public endpoint for connection and read-only discovery checks. A complete submission test\nrequires an explicit Hum test arrangement because `,_jsx(_components.code,{children:`create_order`}),` can reach fulfillment.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Do not place a production order with invented data. Hum does not publish deterministic test\naddresses, reusable test credentials, or a self-service transactional sandbox. If Hum provides a\nreview arrangement, use only its designated address, customer data, expected outcome, and cleanup\nprocedure.`})}),`\n`,_jsx(Heading,{level:`2`,id:`public-connection-smoke-test`,children:`Public connection smoke test`}),`\n`,_jsx(_components.p,{children:`Connect a generic MCP client to:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://mcp.letshum.com/mcp`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`No API key is required. Record the client name and version, negotiated MCP protocol version, server\nname and version, endpoint, and test time.`}),`\n`,_jsx(_components.p,{children:`Verify:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Initialization succeeds over Streamable HTTP.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`tools/list`}),` returns exactly `,_jsx(_components.code,{children:`check_availability`}),`, `,_jsx(_components.code,{children:`validate_order`}),`, `,_jsx(_components.code,{children:`create_order`}),`, and\n`,_jsx(_components.code,{children:`get_order`}),` with closed input schemas and the documented side-effect annotations.`]}),`\n`,_jsx(_components.li,{children:`The server card reports the same endpoint, identity, and version.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`skills/list`}),` and `,_jsx(_components.code,{children:`skills/get`}),` expose both public skills.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`resources/read`}),` returns the exact canonical bytes for:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`skill://check-internet-availability/SKILL.md`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`skill://order-internet-service/SKILL.md`})}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`You can compare the HTTP skill responses with those resources:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://mcp.letshum.com/skills/check-internet-availability/SKILL.md`,children:`Availability skill`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://mcp.letshum.com/skills/order-internet-service/SKILL.md`,children:`Ordering skill`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`Their byte counts and SHA-256 digests must match the corresponding skill discovery entries.`}),`\n`,_jsx(Heading,{level:`2`,id:`contract-and-fixture-checks`,children:`Contract and fixture checks`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/mcp/contracts/released-contract.json`,children:`released contract`}),` contains the exact public schemas and\nruntime input combinations. The `,_jsx(_components.a,{href:`/mcp/examples/scenarios.json`,children:`scenario file`}),` contains synthetic\nresponses approved for documentation and client development.`]}),`\n`,_jsx(_components.p,{children:`For each documented request:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Validate the arguments against the released tool input schema.`}),`\n`,_jsx(_components.li,{children:`Check the argument keys against the tool’s accepted runtime shapes.`}),`\n`,_jsx(_components.li,{children:`Confirm unknown keys are rejected.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`For each documented response:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Match it to a named scenario and its release provenance.`}),`\n`,_jsx(_components.li,{children:`Validate it against the released output schema.`}),`\n`,_jsx(_components.li,{children:`Confirm the page does not add fields or stronger claims than the fixture supports.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The fixtures demonstrate shapes and client behavior. They do not guarantee that a public address\nwill produce a particular provider, offer, question, price, timing, or fulfillment result.`}),`\n`,_jsx(Heading,{level:`2`,id:`availability-exercises`,children:`Availability exercises`}),`\n`,_jsx(_components.p,{children:`With approved test data or the released fixtures, exercise:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`ambiguous address selection`}),`\n`,_jsx(_components.li,{children:`a missing unit`}),`\n`,_jsx(_components.li,{children:`FCC findings while the live source is still checking`}),`\n`,_jsx(_components.li,{children:`FCC-only, live-only, and both-source matches`}),`\n`,_jsx(_components.li,{children:`live completion, failure, and timeout`}),`\n`,_jsx(_components.li,{children:`a current typed question set and its continuation`}),`\n`,_jsx(_components.li,{children:`informational catalog plans with no executable offer`}),`\n`,_jsx(_components.li,{children:`at least one executable offer with an exact offer ID`}),`\n`,_jsx(_components.li,{children:`an expired or stale continuation`}),`\n`,_jsx(_components.li,{children:`rate limiting and a retry delay`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Verify that the client preserves partial results, labels FCC findings as area evidence, waits before\npolling, sends no stale question answer, and never presents a catalog plan as orderable.`}),`\n`,_jsx(Heading,{level:`2`,id:`validation-exercises`,children:`Validation exercises`}),`\n`,_jsx(_components.p,{children:`With an executable fixture or approved environment:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`start validation from an exact lookup and offer`}),`\n`,_jsxs(_components.li,{children:[`use `,_jsx(_components.code,{children:`field_errors`}),` for actual missing or invalid values while recognizing that `,_jsx(_components.code,{children:`required_fields`}),`\ncan include filled paths; reuse customer facts already supplied`]}),`\n`,_jsxs(_components.li,{children:[`send start, poll, and edit as separate exact input shapes; nest changed values inside `,_jsx(_components.code,{children:`details`})]}),`\n`,_jsxs(_components.li,{children:[`poll only with `,_jsx(_components.code,{children:`checkout_id`}),` after the returned delay without restarting validation`]}),`\n`,_jsx(_components.li,{children:`retrieve the current checkout after a stale revision, then edit at its returned revision`}),`\n`,_jsxs(_components.li,{children:[`distinguish root `,_jsx(_components.code,{children:`INVALID_PARAMS`}),` from a sanitized nested-details tool `,_jsx(_components.code,{children:`isError`}),` response`]}),`\n`,_jsxs(_components.li,{children:[`preserve returned equipment defaults when `,_jsx(_components.code,{children:`internet_addons`}),` is omitted`]}),`\n`,_jsxs(_components.li,{children:[`decline optional equipment with `,_jsx(_components.code,{children:`internet_addons: []`})]}),`\n`,_jsx(_components.li,{children:`select returned equipment with exact option IDs and positive integer quantities`}),`\n`,_jsx(_components.li,{children:`enforce radio choices, quantity limits, and dependent-option parent selections`}),`\n`,_jsx(_components.li,{children:`preserve a customer-owned equipment request rather than substituting a free provider gateway`}),`\n`,_jsx(_components.li,{children:`correct field-specific errors`}),`\n`,_jsx(_components.li,{children:`reject a stale revision`}),`\n`,_jsx(_components.li,{children:`poll a checking draft`}),`\n`,_jsx(_components.li,{children:`handle changed equipment, included products, pricing, fees, discounts, or totals`}),`\n`,_jsx(_components.li,{children:`handle an unavailable or expired offer`}),`\n`,_jsx(_components.li,{children:`reach a ready review with included products, one-time fees, total amount, and any returned\nbundle discount`}),`\n`,_jsx(_components.li,{children:`compare the technically ready review with budget, speed, equipment, billing, and installation\nintent; stop without submitting when it differs or authorization is unavailable`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Confirm that validation creates no order and sends no fulfillment request. The client must present\nthe exact returned review and keep unknown facts unknown. Check that an unknown speed is not called\na failed speed check, that the cart total is not presented as a monthly bill or payment due now,\nand that declined billing preferences do not produce an invented discount adjustment. Do not\nrepeat a service PIN, full birth date, or opaque capability in customer-facing prose.`}),`\n`,_jsx(Heading,{level:`2`,id:`submission-and-recovery-exercises`,children:`Submission and recovery exercises`}),`\n`,_jsx(_components.p,{children:`Run these only under Hum’s explicit transactional test arrangement:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`authorization for the exact current review and terms hash`}),`\n`,_jsx(_components.li,{children:`one queued submission with a stable idempotency key`}),`\n`,_jsx(_components.li,{children:`an identical replay that resolves to the same intended order`}),`\n`,_jsx(_components.li,{children:`an idempotency conflict with changed input`}),`\n`,_jsxs(_components.li,{children:[`a lost or interrupted create response followed by `,_jsx(_components.code,{children:`get_order`})]}),`\n`,_jsx(_components.li,{children:`recorded accepted, rejected, unknown, and not-submitted outcomes when the arrangement supports\nthem`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The client must retrieve before retrying after an uncertain create call. It must not describe any\nfulfillment state as ISP acceptance or installation confirmation.`}),`\n`,_jsx(Heading,{level:`2`,id:`released-workflow-verification`,children:`Released workflow verification`}),`\n`,_jsxs(_components.p,{children:[`The earlier transactional release was exercised through the public MCP endpoint under an approved\ntest arrangement. One Xfinity order with a selected equipment item reached\n`,_jsx(_components.code,{children:`accepted_by_fulfillment`}),`; an earlier approved AT\u0026T exercise also completed successfully. These\nchecks verify the released ordering path for those cases. The September 24 checkout-guidance update\nwas verified through public discovery, skill-byte parity, schemas, and internal synthetic tests;\nit did not place another live order. None of these checks proves every provider or address will\nqualify, and fulfillment acceptance is still not ISP acceptance or installation confirmation.`]}),`\n`,_jsx(_components.p,{children:`The shared ordering flow is available across Hum’s supported provider scope. Use the approved\nfixtures for cases that cannot be produced safely or deterministically in production.`}),`\n`,_jsx(Heading,{level:`2`,id:`test-with-and-without-the-skill`,children:`Test with and without the skill`}),`\n`,_jsx(_components.p,{children:`Run the supported workflow twice through a generic MCP client:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Load `,_jsx(_components.code,{children:`skill://order-internet-service/SKILL.md`}),` before beginning.`]}),`\n`,_jsx(_components.li,{children:`Start a new client context and rely only on server instructions, tool descriptions, schemas, and\ntool results.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Record whether each client correctly handled clarification, partial evidence, executable offers,\nnon-committing validation, exact-review authorization, retrieval-first recovery, and fulfillment\nstatus language.`}),`\n`,_jsx(Heading,{level:`2`,id:`internal-mocked-tests`,children:`Internal mocked tests`}),`\n`,_jsx(_components.p,{children:`Hum’s repository tests cover schema validation, result rendering, skill and metadata parity, and\nmocked workflow states. These tests are release checks for Hum’s implementation. They are not a\npublic sandbox, do not prove that a provider will return the same result, and do not authorize a\nlive fulfillment submission.`}),`\n`,_jsxs(_components.p,{children:[`Contact `,_jsx(_components.a,{href:`mailto:support@letshum.com`,children:`support@letshum.com`}),` for an approved end-to-end review\narrangement.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Testing","description":"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits","icon":"flask","iconType":"solid","href":"/mcp/testing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Testing","slug":"testing","depth":1,"children":[]},{"title":"Public connection smoke test","slug":"public-connection-smoke-test","depth":2,"children":[]},{"title":"Contract and fixture checks","slug":"contract-and-fixture-checks","depth":2,"children":[]},{"title":"Availability exercises","slug":"availability-exercises","depth":2,"children":[]},{"title":"Validation exercises","slug":"validation-exercises","depth":2,"children":[]},{"title":"Submission and recovery exercises","slug":"submission-and-recovery-exercises","depth":2,"children":[]},{"title":"Released workflow verification","slug":"released-workflow-verification","depth":2,"children":[]},{"title":"Test with and without the skill","slug":"test-with-and-without-the-skill","depth":2,"children":[]},{"title":"Internal mocked tests","slug":"internal-mocked-tests","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"hum","siteName":"Hum Documentation","title":"Testing - Hum Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-24T16:00:47.344Z","originalFileLocation":"mcp/testing.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hum Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Testing - Hum Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hum Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.letshum.com/mcp/testing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hum.mintlify.site/_mintlify/api/og/v2?division=Hum+Broadband+MCP\u0026amp;title=Testing\u0026amp;description=Verify+Hum+MCP+discovery%2C+availability%2C+validation%2C+authorization%2C+submission+recovery%2C+and+environment+limits\u0026amp;theme=681961f9c74f9e589caf8b82\u0026amp;signature=f717d50592855a82b8dbcd3b369aefcc75991292f9788faa88062b0df4a62f87\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Testing - Hum Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hum.mintlify.site/_mintlify/api/og/v2?division=Hum+Broadband+MCP\u0026amp;title=Testing\u0026amp;description=Verify+Hum+MCP+discovery%2C+availability%2C+validation%2C+authorization%2C+submission+recovery%2C+and+environment+limits\u0026amp;theme=681961f9c74f9e589caf8b82\u0026amp;signature=f717d50592855a82b8dbcd3b369aefcc75991292f9788faa88062b0df4a62f87\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hum/MQJGe1qKygFPeCex/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hum Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2a77fa\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.letshum.com/mcp/testing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/mcp/testing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.letshum.com/#organization\",\"name\":\"Hum Documentation\",\"url\":\"https://docs.letshum.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hum/EGVZNDogcsGNqYtL/logo/hum.svg?fit=max\u0026auto=format\u0026n=EGVZNDogcsGNqYtL\u0026q=85\u0026s=8bd29d065c4bb046f4c7c7f49da36bbb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.letshum.com#website\",\"name\":\"Hum Documentation\",\"url\":\"https://docs.letshum.com\",\"publisher\":{\"@id\":\"https://docs.letshum.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.letshum.com/mcp/testing#webpage\",\"url\":\"https://docs.letshum.com/mcp/testing\",\"name\":\"Testing\",\"description\":\"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits\",\"dateModified\":\"2026-09-24T16:00:47.344Z\",\"isPartOf\":{\"@id\":\"https://docs.letshum.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.letshum.com/mcp/testing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.letshum.com/mcp/testing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Hum Broadband MCP\",\"item\":\"https://docs.letshum.com/mcp/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Testing\",\"item\":\"https://docs.letshum.com/mcp/testing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.letshum.com/mcp/testing#article\",\"headline\":\"Testing\",\"name\":\"Testing\",\"description\":\"Verify Hum MCP discovery, availability, validation, authorization, submission recovery, and environment limits\",\"url\":\"https://docs.letshum.com/mcp/testing\",\"mainEntityOfPage\":{\"@id\":\"https://docs.letshum.com/mcp/testing#webpage\"},\"dateModified\":\"2026-09-24T16:00:47.344Z\",\"publisher\":{\"@id\":\"https://docs.letshum.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.letshum.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hum Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hum Documentation","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://letshum.com"},{"anchor":"Support","icon":"envelope","href":"mailto:support@letshum.com"},{"anchor":"Operational Status","icon":"chart-simple","href":"https://status.letshum.com"}]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"MCP","groups":[{"group":"Hum Broadband MCP","pages":[{"title":"Hum Broadband MCP","icon":"robot","iconType":"solid","href":"/mcp/overview"},{"title":"Quickstart","icon":"rocket","iconType":"solid","href":"/mcp/quickstart"},{"title":"Tool reference","icon":"brackets-curly","iconType":"solid","href":"/mcp/tool-reference"},{"title":"Availability and offers","icon":"signal-stream","iconType":"solid","href":"/mcp/availability-and-offers"},{"title":"Ordering and recovery","description":"Validate an exact broadband offer, obtain authorization, submit once, and recover lost or uncertain responses","icon":"receipt","iconType":"solid","href":"/mcp/ordering-and-recovery"},{"title":"Testing","icon":"flask","iconType":"solid","href":"/mcp/testing"},{"title":"Releases and migration","description":"Migrate from Hum's availability-only MCP to the schema-version 4 broadband workflow","icon":"arrow-right-arrow-left","iconType":"solid","href":"/mcp/releases-and-migration"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/sessions/create-new-session"}]}]},"basePath":"","title":"Testing - Hum Documentation","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}