New64 developer platforms, traced by hand: how long it takes an agent to get an API keySee the benchmark →
AgentsReady
Readiness index · #1101 of 1846

noorahealth.org

Run the agent liveReport a change
31Readiness score / 100
L1 Agent-readableBeats 37% of 1,846 companies
Access20/20
Context11/20
Interfaces0/32
Onboarding0/19
Trust0/9
llms.txt · root

Biggest gains

  1. +12 Remote MCP server for the product. Host a remote MCP server (e.g. mcp.<domain>/mcp, Streamable HTTP) for your core actions.
  2. +8 Machine-readable API spec. Publish an OpenAPI spec at a stable URL like /openapi.json and link it from llms.txt.
  3. +6 Docs available as markdown. Serve every docs page as .md, or honour Accept: text/markdown.
All 20 checks
  • PASSAgents get the real page, not a bot wall10
  • PASSrobots.txt lets user-triggered agents in6
  • PASSContent is server-rendered4
  • PASSllms.txt exists8
  • FAILllms-full.txt exists3
  • FAILDocs available as markdown6
  • PASSSitemap2
  • PASSStructured metadata1
  • FAILPublic developer docs4
  • FAILMachine-readable API spec8
  • FAILRemote MCP server for the product12
  • FAILDocs MCP or searchable docs4
  • FAILSDKs and a CLI4
  • FAILOAuth discovery metadata5
  • FAILAgents can self-register OAuth clients6
  • FAILSelf-serve API keys5
  • FAILFree tier or test mode3
  • FAILAgent manifests4
  • FAILsecurity.txt2
  • FAILPublic status page3

Your fix pack: 15 changes, up to +69 points

Each change is ready to paste, filled in for noorahealth.org, with a command to check it worked. Or hand the whole list to your coding agent.

We didn't find developer docs, an API spec or an MCP server for noorahealth.org. If you don't offer an API, the Access and Context fixes still help AI assistants read and recommend your site; you can skip the API and sign-in ones.

A remote MCP server lets Claude, ChatGPT and Cursor act on your product in one click, with no glue code.

Where: https://mcp.noorahealth.org/mcp (Streamable HTTP)
// npm i @modelcontextprotocol/sdk zod  — minimal remote MCP server (Streamable HTTP, stateless)
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import express from "express";
import { z } from "zod";

const app = express();
app.use(express.json());

app.post("/mcp", async (req, res) => {
  const server = new McpServer({ name: "noorahealth.org", version: "1.0.0" });
  // One tool per core job. Clear verbs, typed inputs, small outputs.
  server.tool("create_<thing>", "Create a <thing> for the signed-in user.", { name: z.string() },
    async ({ name }) => {
      const key = req.headers.authorization?.replace("Bearer ", ""); // scoped API key or OAuth token
      const r = await fetch("https://noorahealth.org/v1/<things>", { method: "POST", headers: { Authorization: `Bearer ${key}` }, body: JSON.stringify({ name }) });
      return { content: [{ type: "text", text: await r.text() }] };
    });
  const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
  res.on("close", () => transport.close());
  await server.connect(transport);
  await transport.handleRequest(req, res, req.body);
});
app.listen(3000);
Check it worked:curl -s -X POST https://mcp.noorahealth.org/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' -i | head -15

Want the full treatment, not just these fixes? Get the prompt that takes your coding agent through every phase.

Add the badge to your README

AgentsReady badge for noorahealth.org
[![AgentsReady](https://agentsready.dev/badge/noorahealth.org)](https://agentsready.dev/c/noorahealth.org)