# MCP for coding agents | Ora

ora mcp·for coding agents

# Agents keep bouncing off your site

Connect the free, public MCP server. Your coding agent scans, fixes, and rescans until agents can actually use and recommend you.

https://ora.ai/api/mcpcopy[Read the docs →](/docs)

01the problem

## Your site works fine. For people.

Agents read the raw response: no JavaScript, no rendered page. When it comes back blocked or empty, they guess, get things wrong, or leave.

What a person seesyour-site.com

### San Francisco to Miami

Sat Aug 8, 1 adult

-   08:40 - 17:15Non-stop, 5h 35m$214
-   11:20 - 20:05Non-stop, 5h 45m$268
-   14:05 - 00:401 stop, 7h 35m$189

Select flight

What an agent getsyour-site.com

$ curl -A "ClaudeBot" https://your-site.com

HTTP/2 403text/html

```
# San Francisco to Miami
Sat Aug 8, 3 flights, from $189

- 08:40-17:15  non-stop  $214  /book/sfo-mia/0840
- 11:20-20:05  non-stop  $268  /book/sfo-mia/1120
- 14:05-00:40  1 stop    $189  /book/sfo-mia/1405

Book: POST /api/bookings, schema at /openapi.json
Tools: /mcp   Index: /llms.txt
```

```
<!doctype html>
<html>
  <head><title>React App</title></head>
  <body>
    <div id="root"></div>
  </body>
</html>
```

```
# San Francisco to Miami
Sat Aug 8, 3 flights, from $189

- 08:40-17:15  non-stop  $214  /book/sfo-mia/0840
- 11:20-20:05  non-stop  $268  /book/sfo-mia/1120
- 14:05-00:40  1 stop    $189  /book/sfo-mia/1405

Book: POST /api/bookings, schema at /openapi.json
Tools: /mcp   Index: /llms.txt
```

Nothing to read. Nothing to act on.

What a person seesyour-site.com

### San Francisco to Miami

Sat Aug 8, 1 adult

-   08:40 - 17:15Non-stop, 5h 35m$214
-   11:20 - 20:05Non-stop, 5h 45m$268
-   14:05 - 00:401 stop, 7h 35m$189

Select flight

What an agent getsas it is now

$ curl -A ClaudeBot your-site.com

HTTP/2 403text/html

```
# San Francisco to Miami
Sat Aug 8, 3 flights, from $189

- 08:40  $214  /book/sfo-mia/0840
- 11:20  $268  /book/sfo-mia/1120
- 14:05  $189  /book/sfo-mia/1405

Book: POST /api/bookings
Schema: /openapi.json
Tools: /mcp   Index: /llms.txt
```

```
<!doctype html>
<html>
  <head>
    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>
```

```
# San Francisco to Miami
Sat Aug 8, 3 flights, from $189

- 08:40  $214  /book/sfo-mia/0840
- 11:20  $268  /book/sfo-mia/1120
- 14:05  $189  /book/sfo-mia/1405

Book: POST /api/bookings
Schema: /openapi.json
Tools: /mcp   Index: /llms.txt
```

Nothing to read. Nothing to act on.

What an agent getswith ora connected

$ curl -A ClaudeBot your-site.com

HTTP/2 200text/markdown

```
# San Francisco to Miami
Sat Aug 8, 3 flights, from $189

- 08:40  $214  /book/sfo-mia/0840
- 11:20  $268  /book/sfo-mia/1120
- 14:05  $189  /book/sfo-mia/1405

Book: POST /api/bookings
Schema: /openapi.json
Tools: /mcp   Index: /llms.txt
```

```
<!doctype html>
<html>
  <head>
    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>
```

```
# San Francisco to Miami
Sat Aug 8, 3 flights, from $189

- 08:40  $214  /book/sfo-mia/0840
- 11:20  $268  /book/sfo-mia/1120
- 14:05  $189  /book/sfo-mia/1405

Book: POST /api/bookings
Schema: /openapi.json
Tools: /mcp   Index: /llms.txt
```

Readable, and it can book a flight.

as it is now

with ora connected

02connect it

## Connect in one step, no auth

Your agent gets the live score and every failing check with a fix recommendation. No account or key.

Paste this skill to your agent: https://ora.ai/skill.md copyOr add the MCP server:

Claude CodeCursorCodexREST

terminalCopy

```
claude mcp add --transport http ora https://ora.ai/api/mcp
```

scan\_domain

Fresh scan. Score, grade, and a fix recommendation per failing check.

get\_score

The cached score, no new scan.

get\_skill

The agent-ready-website skill: step-by-step fixes, refetched each run so it matches the current checks.

[All tools, params, and schemas →](/docs)

03go local

## Scan localhost through a tunnel

Ora fetches your site from outside, the way an agent would, so it can only reach public URLs. A tunnel gives your dev server one.

cloudflaredngrokTailscale

terminalCopy

```
cloudflared tunnel --url http://localhost:3000
# -> https://random-words.trycloudflare.com
```

1.  your machine
    
    ### localhost:3000
    
    The code in your editor, uncommitted.
2.  tunnel
    
    ### public URL
    
    Lives as long as the process.
3.  ora
    
    ### POST /api/scan
    
    Fetches it the way an agent would.

the score comes back, your agent edits, and again

the score comes back, your agent edits, and again

04the whole job

## Agents come to get something done

Finding and reading you is the first step. An agent that means to finish a task also authenticates, calls your product, and pays. The score covers all four layers.

Discovery

Can agents find and recommend you?citations · registries · brand presence

Access

Can agents access your data and understand you?llms.txt · json-ld · markdown

Usability

Can agents use you?oauth · mcp tools · openapi

Payments

Can agents pay you?x402 · ap2 · acp

ora score

0 / 100

[Every check and weight, layer by layer →](/methodology)

05a moving target

## Agent-readiness is a moving target

What agent-ready means keeps changing: new protocols ship, agents change where they look, and the checks move with them. Ora's MCP keeps the requirements current as the target moves.

Sep 2024

llms.txt

Nov 2024

MCP

May 2025

x402 payments

Aug 2025

agents.md

Sep 2025

AP2 checkout

2026

agents expect /docs

your copy

Jan 2025 · 4 changes behind

06faq

## Quick answers

What does it cost?

Nothing. No API key, no signup, no card. Scans and score reads are free.

What are the rate limits?

10 scans a minute per IP, and the same for score reads. The loop runs one scan per pass, so it does not get close.

What can ora see?

Public URLs only, fetched from outside the way an agent would. Code and anything behind a login are out of reach. A tunnel is public only while its process runs.

How is the score computed?

Four layers - discovery, access, usability, payments - normalized to 100. Checks that do not apply to your product are dropped from the denominator. Every check is public.[The full methodology →](/methodology)

Why did my score change when I deployed nothing?

The checks moved. New protocols get added and weights shift as agent behavior changes. Rescanning scores you against the current set.

Where do the checks come from?

We run real agents against live sites and measure what helps them finish the job. Checks earn their place by predicting success, and the data behind the score is public.[The research →](/research)[Watch an agent run →](/journey)

[Read the docs →Every tool, parameter, and schema.](/docs)[Get the skill →The whole loop in one file: tunnel, scan, fix playbook, rescan.](/skill.md)[Talk to us →A wrong check, a missing protocol, or a question.](/contact)
