---
title: "Discount Filter Shop Developer Resources: API, OpenAPI, MCP - Discount Filter Shop"
description: "Discount Filter Shop API and developer resources This page is the developer portal for discountfiltershop.com, the Discount Filter Shop online store for genuine OEM refrigerator water and air filters. It lists every machine-readable resource on this host, how to authenticate with the least privilege needed, the request quotas, the versioning policy, and the conventions that"
canonical: https://discountfiltershop.com/developers/
last-updated: 2026-10-27T12:53:25+00:00
site: "Discount Filter Shop"
format: text/markdown
---

# Discount Filter Shop Developer Resources: API, OpenAPI, MCP

[Home](https://discountfiltershop.com/) › Discount Filter Shop Developer Resources: API, OpenAPI, MCP

## Discount Filter Shop API and developer resources

This page is the developer portal for discountfiltershop.com, the Discount Filter Shop online store for genuine OEM refrigerator water and air filters. It lists every machine-readable resource on this host, how to authenticate with the least privilege needed, the request quotas, the versioning policy, and the conventions that make the site readable by AI agents.

### Quick links

- [OpenAPI 3.1 specification](https://discountfiltershop.com/openapi.json) (`/openapi.json`): the Discount Filter Shop API in one document, with security schemes, permission scopes, quota headers and the error format.
- [API catalog](https://discountfiltershop.com/.well-known/api-catalog) (`/.well-known/api-catalog`, RFC 9727): every API on this host as a linkset.
- [AI catalog](https://discountfiltershop.com/.well-known/ai-catalog.json) (`/.well-known/ai-catalog.json`, also served at `/.well-known/ard.json`): the agentic resources of this host (MCP server card, OpenAPI specification, API catalog, llms.txt) for discovery registries.
- [MCP server card](https://discountfiltershop.com/.well-known/mcp/server-card.json) (`/.well-known/mcp/server-card.json`): connection details of the MCP server.
- [Authentication guide](https://discountfiltershop.com/auth.md) (`/auth.md`): how to obtain credentials.
- [llms.txt](https://discountfiltershop.com/llms.txt): a plain-text overview of the store, its policies, products and guides, written for AI agents.
- [sitemap.xml](https://discountfiltershop.com/sitemap.xml): every indexable URL.

### Store API (public, no key)

The WooCommerce Store API at `https://discountfiltershop.com/wp-json/wc/store/v1` lets any client search the catalog, build a cart and check out. No credentials are required.

```
curl "https://discountfiltershop.com/wp-json/wc/store/v1/products?search=EDR1RXD1"
curl -i "https://discountfiltershop.com/wp-json/wc/store/v1/cart"
```

The cart response carries a `Cart-Token` header. Send it back as the `Cart-Token` request header on `POST /wc/store/v1/cart/add-item` and `POST /wc/store/v1/checkout`. Prices are returned in cents as strings (`"4699"` is $46.99). Shipping is free on every order and only US addresses are accepted. The full endpoint list, parameters and response schemas are in the OpenAPI specification; the upstream reference is the [WooCommerce Store API documentation](https://developer.woocommerce.com/docs/apis/store-api/).

### Filter identification from a photo

`POST https://discountfiltershop.com/wp-json/dfs/v1/water-match` with a JSON body `{"image": "<base64>", "media_type": "image/jpeg"}` returns the replacement filter model code, the brand, a confidence level and whether the model needs a chip-authenticated genuine filter. Limit: 10 requests per hour per IP address. This is the engine behind the [Water Match](https://discountfiltershop.com/water-match/) tool.

### Shop management API (WooCommerce REST API v3)

`https://discountfiltershop.com/wp-json/wc/v3` gives integrations access to orders, products and customers. Credentials are WooCommerce API keys (consumer key and secret, HTTP Basic over HTTPS). Each key is issued with exactly one permission scope:

| Scope | Grants |
| --- | --- |
| `read` | GET requests only |
| `write` | POST, PUT and DELETE only |
| `read_write` | Both |

Ask for `read` unless you need to change data. Keys can be issued by the store owner, or requested through the WooCommerce app authorization flow described in the [authentication guide](https://discountfiltershop.com/auth.md). The scope list is also published as RFC 9728 metadata at [/.well-known/oauth-protected-resource/wp-json/wc/v3](https://discountfiltershop.com/.well-known/oauth-protected-resource/wp-json/wc/v3).

### MCP server (site administration)

A Model Context Protocol server runs on this host: Streamable HTTP at `https://discountfiltershop.com/wp-json/stifli-flex-mcp/v1/messages` (MCP 2026-07-28) and legacy SSE at `https://discountfiltershop.com/wp-json/stifli-flex-mcp/v1/sse`. Connection details are published in the [server card](https://discountfiltershop.com/.well-known/mcp/server-card.json). The server is protected by an OAuth 2.1 authorization server on this host (authorization code flow with PKCE, refresh tokens, dynamic client registration) and is reserved for authorized staff accounts. Discovery documents: the RFC 9728 resource metadata named by the `WWW-Authenticate` header of a 401 response, and [/.well-known/oauth-authorization-server](https://discountfiltershop.com/.well-known/oauth-authorization-server) (RFC 8414).

### Markdown for agents

Every page on discountfiltershop.com is available as Markdown. Either send `Accept: text/markdown` to the page URL (the response is `text/markdown; charset=utf-8` with `Vary: Accept`), or replace the trailing slash with `.md`: the homepage is [/index.md](https://discountfiltershop.com/index.md), a guide at `/guides/example/` is `/guides/example.md`. Each Markdown document starts with a frontmatter block (title, description, canonical URL, last update). A 404 requested as Markdown returns a Markdown body with links back to the catalog, the sitemap and llms.txt.

```
curl -sS -i -H "Accept: text/markdown" https://discountfiltershop.com/
curl -sS https://discountfiltershop.com/index.md
```

### Errors

Every JSON endpoint returns `{"code": "...", "message": "...", "data": {"status": <http status>}, "hint": "...", "docs": "..."}` on failure: `hint` says how to recover and `docs` links to the OpenAPI specification. `401` means missing credentials, `403` means the key lacks the scope, `429` means the quota below is used up. A 404 or 406 on an HTML page is also answered in JSON when the request carries `Accept: application/json`.

### Rate limits

Every response of the REST API (`/wp-json/`, all namespaces) carries the quota headers of the IETF HTTPAPI draft [draft-ietf-httpapi-ratelimit-headers](https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/): `RateLimit-Policy` names the policy that applies to you, `RateLimit` tells how many requests remain in the current window and in how many seconds it resets. The same values are repeated as `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset` for older clients.

| Client | Quota | Counted per |
| --- | --- | --- |
| Without credentials | 600 requests per 60-second window | IP address |
| With credentials (API key, OAuth token) | 1200 requests per 60-second window | Account |

```
RateLimit-Policy: "anonymous";q=600;w=60
RateLimit: "anonymous";r=599;t=42
```

Over quota, the API answers `429` with a `Retry-After` header (seconds) and the JSON error `rest_too_many_requests`. Wait that long, then resume at a slower pace; a client that keeps one request in flight at a time never reaches the limit. The photo identification endpoint keeps its own limit of 10 requests per hour per IP address.

### Versioning and deprecation

Every API is versioned in its URL path (`/wc/store/v1`, `/wc/v3`, `/dfs/v1`) and a published version never receives breaking changes: fields and endpoints may be added, existing ones keep their meaning. When an endpoint or a version is retired, its responses announce it at least six months before it stops working, with the `Deprecation` header ([RFC 9745](https://www.rfc-editor.org/rfc/rfc9745), the date it was deprecated), the `Sunset` header ([RFC 8594](https://www.rfc-editor.org/rfc/rfc8594), the date after which it may stop responding) and a `Link` with `rel="deprecation"` pointing to this section. The legacy WooCommerce namespaces `/wc/v1` and `/wc/v2` are deprecated (superseded by `/wc/v3`) and already carry the `Deprecation` header; no sunset date is set for them. The `info.version` of the OpenAPI document changes whenever its content changes.

```
Deprecation: @1539734400
Link: <https://discountfiltershop.com/developers/#versioning>; rel="deprecation"; type="text/html"
```

### Contact

Questions about the Discount Filter Shop API: [support@discountfiltershop.com](mailto:support@discountfiltershop.com).

---

Discount Filter Shop · [Site overview for AI agents (llms.txt)](https://discountfiltershop.com/llms.txt) · [Developer resources](https://discountfiltershop.com/developers/) · [API catalog](https://discountfiltershop.com/.well-known/api-catalog) · [Sitemap](https://discountfiltershop.com/sitemap.xml)
