ForthClear (app.forthclear.io) is a B2B marketplace for surplus, overstock, customer-return, shelf-pull, and salvage lots, operated by Forthcast, LLC (Delaware). The seller is the seller of record. ForthClear runs the marketplace and Stripe processes payments. Sellers pay a 5% commission on the goods subtotal. Buyers pay no platform fee. ForthClear is for business users only.
| Item | Value |
|---|---|
| Endpoint | https://app.forthclear.io/mcp |
| Transport | MCP Streamable HTTP (POST). GET /mcp returns 405 unless a session stream is open. |
| Protocol | 2025-03-26 by default. The server also accepts 2025-06-18 when the client requests it. |
| Descriptor | https://app.forthclear.io/.well-known/mcp.json |
| Tool schema | https://app.forthclear.io/api/mcp/schema.json |
Catalogue tools work without an account. Account tools use OAuth 2.1 with PKCE (S256) as the primary sign-in for hosted assistants.
https://app.forthclear.io/.well-known/oauth-protected-resourcehttps://app.forthclear.io/.well-known/oauth-authorization-server/oauth/authorize, token /oauth/token, revoke /oauth/revokePOST /oauth/register (public client, token_endpoint_auth_method: none)https://app.forthclear.io/oauth/connections| Scope | Tools |
|---|---|
buyer:read | get_order_status, get_quote_status, list_my_orders, list_my_quotes, get_dispute_status, preview_checkout |
buyer:write | open_dispute, subscribe_to_query, request_quote (when attached to the account), mark_order_received, confirm_order |
buyer:purchase | quick_buy, confirm_purchase, accept_quote_and_pay, cancel_order |
seller:read | get_quote_requests, bulk_export_orders, seller_inbox_summarise, list_seller_orders |
seller:write | create_listing, bulk_update_listings, respond_to_quote, bulk_mark_shipped |
API keys (X-MCP-API-Key, X-Agent-Token) remain for direct developer use. Hosted assistants should use OAuth.
1. preview_checkout returns the seller of record, unit price, subtotal, shipping, tax (not collected on this path), total, a checkout id, and an expiry. It does not charge a card.
2. confirm_purchase charges that preview. Pass payment.shared_payment_token when the connected Stripe SDK exposes the shared-payment-token API, or payment.saved_card: true to charge the card stored on the account. The same idempotency_key is sent to Stripe.
3. The status is quoted, pending, requires_action, confirmed, failed, or cancelled. confirmed is returned only after the PaymentIntent succeeds and the order row exists. Charges of US$1,000 or more return requires_action and a URL for 3-D Secure. Call confirm_purchase again with the same key after the customer finishes that step.
4. If the price, quantity, or shipping changed, the tool returns PRICE_CHANGED and does not charge. Preview again.
quick_buy still creates a checkout session and does not charge the card.
accept_quote_and_pay accepts a seller's responded quote and charges that price.
idempotency_key is required on preview_checkout, confirm_purchase, quick_buy, accept_quote_and_pay, request_quote, create_listing, open_dispute, cancel_order, mark_order_received, and confirm_order. The same caller and key returns the original result for 24 hours.
list_my_orders and get_order_status for buyers. list_seller_orders for sellers.mark_order_received starts the 3-day inspection window.confirm_order ends that window. A sandbox order is not paid out. A live order starts the seller payout.cancel_order refunds an unshipped order whose ship-by date has passed (Seller Agreement ยง5.4).open_dispute with reason not_received is allowed while the order is shipped. Other reasons require delivered_pending_confirmation. Opening a claim pauses the seller payout.get_dispute_status reads that claim.list_my_quotes lists the buyer's quotes.Money fields are integer cents unless a tool says otherwise. bulk_update_listings price_set takes price_cents. value_usd is an explicit dollar amount and is deprecated. value is only for percent and MOQ modes.
Tool errors use isError: true and { error: { code, message, retryable, retry_after_s?, next_action? } }.
Stable codes include NOT_FOUND, AUTH_REQUIRED, INSUFFICIENT_SCOPE, RATE_LIMITED, QUOTE_REQUIRED, NOT_INSTANT_CHECKOUT, NO_SHIPPING_PRICE, PRICE_CHANGED, SELLER_NOT_PAYABLE, VALIDATION_ERROR, DUPLICATE, PAYMENT_METHOD_REQUIRED, SHARED_PAYMENT_TOKEN_UNAVAILABLE, SANDBOX_UNAVAILABLE, NOT_CANCELLABLE, and CONFLICT.
Arguments are checked against the tool's input schema. A wrong type, such as "limit": "abc", is VALIDATION_ERROR.
Responses include RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset when the limiter reports a remaining count. A refusal uses RATE_LIMITED and retry_after_s.
| Tool | Limit |
|---|---|
| Catalogue reads | 120 per minute per IP or token |
| Semantic search | 20 per minute per IP or token |
Anonymous request_quote | 5 per hour per IP |
| Other writes | 30 per minute per IP and 60 per minute per token |
| Purchase tools | 10 per minute per token, in addition to the write limit |
ForthClear can flag a reviewer account, or an OAuth client, as sandbox. Those purchases use Stripe test mode, orders are stored as test orders, and they are left out of seller payouts, marketplace metrics, and emails to real sellers. Sandbox lots are not in the public catalogue or sitemaps. The test card is 4242 4242 4242 4242. A sandbox account cannot buy a live seller's listing.
subscribe_to_query can email, poll, or POST listing matches to a public https webhook. Private and link-local addresses are rejected. Webhooks are signed with X-ForthClear-Signature (HMAC-SHA256) and retried up to 3 times. The payload is public listing data.
bulk_export_orders returns a CSV of the caller's own orders: order id, product, buyer company, quantity, total, status, and date.
See the Privacy Policy, section 9, "AI Assistants and Connected Apps". Connector data is not used to train models and is not sold or used for third-party marketing.
Support: info@forthclear.io. Terms: https://app.forthclear.io/terms. Claims: https://app.forthclear.io/claims-policy. Seller Agreement: https://app.forthclear.io/seller-agreement.