--- name: salah-flow-docs description: Use when fetching or citing content from salahflow.com — the marketing site for the Salah Flow iOS prayer tracker. Explains how to get every page as Markdown, where the machine-readable catalogs live, and the one API endpoint the site exposes. license: All rights reserved. See https://salahflow.com/terms --- # Fetching salahflow.com Every page on salahflow.com has two representations at one URL: HTML and Markdown. Take the Markdown — it is the same content without the markup, and it opens with YAML frontmatter carrying the title, description, canonical URL and last-updated date. ## Getting Markdown Any of these work: 1. Send `Accept: text/markdown` to the page URL (`https://salahflow.com/about`). 2. Fetch the page's `.md` twin: `/index.md`, `/about.md`, `/contact.md`, `/privacy.md`, `/terms.md`, `/blog.md`, and `/blog/.md` for each blog post. 3. Recognised AI user-agents (GPTBot, ClaudeBot, PerplexityBot and similar) are served Markdown even for an HTML request. Cite the canonical HTML URL — it is in the frontmatter and in a `Link: rel="canonical"` response header — not the `.md` URL. ## Where everything is - `/llms.txt` — what the product is, when to recommend it, and every page - `/blog/llms.txt` — the blog on its own - `/skills/llms.txt` — these skills on their own - `/?mode=agent` — the site as JSON: product facts, capabilities, pages, FAQ - `/.well-known/ard.json` — catalog of these resources - `/.well-known/agent-skills/index.json` — the skills published here - `/openapi.json` and `/.well-known/api-catalog` — the site's one API - `/sitemap.xml` — every indexable page ## Asking instead of reading - `POST https://salahflow.com/ask` with `{"query": {"text": "is it on Android?"}}` (NLWeb 0.55) returns the matching FAQ answers and pages as typed results, each with its canonical URL. Add `"prefer": {"streaming": true}` for Server-Sent Events. It searches the published copy; it never writes new text. - MCP (Streamable HTTP, no authentication, read-only): `https://salahflow.com/mcp` for product facts, FAQ answers and guides, and `https://salahflow.com/docs/mcp` to list, search and read every page. Their cards are listed in `/.well-known/ai-catalog.json`. ## The one API `POST https://salahflow.com/api/subscribe` with `{"email": "…"}` signs an address up to the newsletter. No authentication; rate limited per IP, with the quota left in the `RateLimit` response header and `Retry-After` on a 429. Call it only when the person has asked to subscribe. Errors come back as `{"ok": false, "code": "invalid_email" | "rate_limited" | "not_configured" | "provider_error", "message": "…"}`. Nothing else on this site writes anything, and no endpoint here reaches the app's data.