# OriginGrid (remote · www.origingrid.net)

AI Agent Source Registry. 288K+ curated sources for agentic search and discovery.

- Trust score: 60/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `www.origingrid.net`: 60/100 (this document), [markdown](https://verifymcp.io/servers/net-origingrid-origingrid-mcp/www.md), [page](https://verifymcp.io/servers/net-origingrid-origingrid-mcp/www)

## Channel facts

- Endpoint: `https://www.origingrid.net/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 19 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 52/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3433 tokens (~180/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 90/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 66% of tool parameters carry a description.
  - Structured output schemas are declared (21% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### Claude

```bash
claude mcp add --transport http net-origingrid-origingrid-mcp https://www.origingrid.net/mcp
```

### Codex

```toml
[mcp_servers.net-origingrid-origingrid-mcp]
url = "https://www.origingrid.net/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "net-origingrid-origingrid-mcp": {
      "type": "remote",
      "url": "https://www.origingrid.net/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add net-origingrid-origingrid-mcp --url https://www.origingrid.net/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  net-origingrid-origingrid-mcp:
    url: "https://www.origingrid.net/mcp"
```

### Other

```json
{
  "mcpServers": {
    "net-origingrid-origingrid-mcp": {
      "type": "http",
      "url": "https://www.origingrid.net/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 59, −1)

- [security regression] HSTS header: unverified → fail
- [security improvement] TLS certificate: unverified → pass
- [security improvement] Transport: fail → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 19 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “origingrid_fetch” rewrote its description, which is the text the model reads
- [security] Tool “origingrid_search” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 109 → 180
- [functional improvement] Endpoint reachability: unreachable → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.13
- [functional improvement] MCP protocol: unverified → pass
- [functional] MCP protocol version: 2025-11-25 → 2026-07-28
- [functional] New tool “origingrid_feedback”

### 2026-08-01 (score 60, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 60, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 60, 0)

- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] HSTS header: fail → unverified
- [security regression] TLS certificate: pass → unverified
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-29 (score 60)

First indexed and scored.

## MCP tools (19)

### `origingrid_search` (~108 tokens)

Search Sources

Search for AI agent information sources. Returns `structuredContent.sources[]` with {source_id, name, url, region, difficulty, score}. Read the array directly — no Markdown parsing. Then call origingrid_fetch for each source's URL to get actual content. [ASRP: Use FIRST to find sources. Then fetch each source.url.]

Input parameters:

- `limit` (integer)
- `offset` (integer): Skip the first N results for pagination
- `query` (string, required)

### `origingrid_get_source` (~31 tokens)

Get Source

Get details for a single information source by its source_id

Input parameters:

- `source_id` (string, required)

### `origingrid_list` (~102 tokens)

List Sources

List available information sources, optionally filtered by topic and/or region. Supports `limit`/`offset` pagination; the response reports the **total** number of matches so you can page through all results. [ASRP: Browse available sources by category. Use for exploration before planning.]

Input parameters:

- `limit` (integer)
- `offset` (integer): Skip the first N results for pagination
- `region` (string)
- `topic` (string)

### `origingrid_contribute` (~66 tokens)

Contribute URL

Submit a new URL as a source-card candidate (anonymous, pending review). [ASRP: Use AFTER finding a URL that is useful but not yet in the registry.]

Input parameters:

- `category` (string)
- `title` (string)
- `url` (string, required)

### `origingrid_fetch` (~193 tokens)

Fetch Content

Fetch first-hand content from a URL. Returns `structuredContent.data` with {title, content, url, cache_hit, fetched_at}. Read `.data.content` directly — the metadata and content are separated. Pass `delivery_level=excerpt` (default) for ~300 chars, `full` for complete content. [ASRP: Call AFTER origingrid_search. Loop over sources[] and fetch each source.url.]

Input parameters:

- `delivery_level` (string): Content delivery level: full=complete, excerpt=~300 chars, title=only title
- `query` (string)
- `selector` (string): CSS selector to extract (default: body)
- `source_id` (string): Registered source id (local-index fallback)
- `timeout` (integer): Fetch timeout in seconds (default: 20)
- `url` (string): Direct URL to fetch live (first-hand content, cached locally)

### `origingrid_stats` (~16 tokens)

Registry Stats

Get OriginGrid registry statistics

Output parameters:

- `total_contributions` (integer)
- `total_searches` (integer)
- `total_sources` (integer)
- `total_users` (integer)

### `origingrid_search_similar` (~57 tokens)

Similar Sources

Find sources similar to a known source. [ASRP: Use AFTER finding a relevant source to expand your search scope before calling origingrid_plan.]

Input parameters:

- `limit` (integer)
- `source_id` (string, required)

### `origingrid_search_by_region` (~76 tokens)

Search by Region

Search sources filtered by region (cn/global/academic/etc) and optionally by query. [ASRP: Use for region-specific discovery. Narrower than origingrid_search, use when you know the target region.]

Input parameters:

- `limit` (integer)
- `query` (string)
- `region` (string, required)

### `origingrid_approve_contribution` (~53 tokens)

Approve Contribution

Approve a pending source-card contribution (admin only; requires admin_token when ORIGINGRID_ADMIN_TOKEN is set)

Input parameters:

- `admin_token` (string)
- `contribution_id` (integer, required)

### `origingrid_reject_contribution` (~98 tokens)

Reject Contribution

Reject a pending source-card contribution (admin only; requires admin_token when ORIGINGRID_ADMIN_TOKEN is set). Optionally pass `reason`. Review loop: list pending → origingrid_approve_contribution(id) / origingrid_reject_contribution(id)

Input parameters:

- `admin_token` (string)
- `contribution_id` (integer, required)
- `reason` (string): Optional rejection reason (stored for the contributor)

### `origingrid_pending_contributions` (~74 tokens)

Pending Contributions

List pending source-card contributions awaiting admin review (admin only; requires admin_token when ORIGINGRID_ADMIN_TOKEN is set). Review loop: list pending → origingrid_approve_contribution(id)

Input parameters:

- `admin_token` (string): Admin token (required only if ORIGINGRID_ADMIN_TOKEN is configured)

### `origingrid_discover` (~150 tokens)

Discover Sources

Discover first-hand information sources for a topic from the OriginGrid local registry — no external search engine involved. Optionally narrow by topic and/or region. Follow up with origingrid_fetch(url) for live content or origingrid_get_source for details. [ASRP: Use FIRST for broad topic discovery. Follow with origingrid_plan for multi-step fetch or origingrid_fetch for single URL.]

Input parameters:

- `limit` (integer)
- `query` (string, required): Topic or theme to discover sources for
- `region` (string): Optional region filter (e.g. cn, global, academic)
- `topic` (string): Optional topic/category filter (e.g. programming, finance)

### `origingrid_resolve` (~176 tokens)

Resolve Query

Resolve a natural-language query into directly executable first-hand source URLs. Returns structured JSON with executable_url that the agent opens locally. Supports searchable sources (API/search URLs with query parameters) and navigable sources (key pages like about/products/docs/pricing). Does NOT proxy-fetch or submit URLs to general-purpose search engines. [ASRP: Lightweight alternative to plan+execute_batch. Use for direct URL resolution without multi-step plans. For complex queries, use origingrid_plan instead.]

Input parameters:

- `intent` (string): Explicit intent override (auto/about/products/docs/pricing/news/contact/search/academic/code). Default: auto-detect
- `limit` (integer): Max results
- `query` (string, required): Natural language query
- `region` (string): Optional region filter
- `topic` (string): Optional topic/category filter

Output parameters:

- `query` (string)
- `resolved_intent` (string)
- `results` (array)

### `origingrid_plan` (~172 tokens)

Search Plan

Generate an executable search plan for an AI agent. Returns a structured JSON plan with ordered steps, each containing an executable URL with method, expected latency, difficulty, and priority. The agent executes the steps itself — no search-engine caching. Steps within the same parallel_group can be fetched concurrently. Requires browser for yellow-difficulty sources. [ASRP: Call AFTER search/discover. Pass the returned steps to origingrid_execute_batch for concurrent execution.]

Input parameters:

- `intent` (string): Explicit intent override (auto/about/products/docs/pricing/news/contact/search/academic/code). Default: auto-detect
- `max_sources` (integer): Maximum number of plan steps to return (max 20)
- `query` (string, required): Search query
- `timeout_hint` (integer): Agent's max acceptable wait in seconds

Output parameters:

- `parallel_groups` (array)
- `plan_id` (string)
- `query` (string)
- `resolved_intent` (string)
- `steps` (array)

### `origingrid_execute_batch` (~249 tokens)

Execute Batch

Execute multiple search plan steps in batch. Accepts `steps` (array of step objects from origingrid_plan) and optional `parallel_groups` (array of arrays of step indices). Steps within the same parallel_group run concurrently on the server — the agent doesn't need to manage concurrency. Supports per-step timeout, automatic retry (default 1), and error isolation (one step failing doesn't affect others). Concurrency is limited to 8 by default for VPS memory safety. Returns structured results with elapsed timing per step. Combine with origingrid_plan: plan → execute_batch → agent reads the results. [ASRP: Call AFTER origingrid_plan. Steps in same parallel_group run concurrently.]

Input parameters:

- `batch_timeout` (integer): Total batch timeout in seconds (max 90)
- `parallel_groups` (array): Optional: groups of step indices to run in parallel. Each group waits for the previous to finish. Default: one step per group (serial).
- `retry_count` (integer): Number of retry attempts per step
- `step_timeout` (integer): Per-step timeout in seconds
- `steps` (array, required): Array of step objects (from origingrid_plan steps)

Output parameters:

- `completed` (integer)
- `concurrency_limit` (integer)
- `failed` (integer)
- `results` (array)
- `total_elapsed_ms` (integer)

### `origingrid_search_session_create` (~129 tokens)

Create Search Session

Create a search session that persists across multiple tool calls. Generates a plan and returns a session_id. Call origingrid_search_session_execute with this session_id to execute steps group by group. [ASRP: Use INSTEAD of origingrid_plan+execute_batch when you need persistent session state across calls.]

Input parameters:

- `intent` (string): Explicit intent override (auto/about/products/docs/pricing/news/contact/search/academic/code). Default: auto-detect
- `max_sources` (integer): Maximum number of sources (max 20)
- `query` (string, required): Search query

### `origingrid_search_session_execute` (~130 tokens)

Execute Session Step

Execute the next unexecuted step group in a search session. Pass the session_id from origingrid_search_session_create. Returns results for the current group and reports remaining groups. [ASRP: Call AFTER origingrid_search_session_create. Repeat until remaining_groups is 0.]

Input parameters:

- `batch_timeout` (integer): Total batch timeout in seconds (max 90)
- `retry_count` (integer): Number of retry attempts per step
- `session_id` (string, required): Session ID from origingrid_search_session_create
- `step_timeout` (integer): Per-step timeout in seconds

### `origingrid_search_session_status` (~67 tokens)

Session Status

Get the current status of a search session. Returns query, depth, completed/total groups, progress percentage, and timestamps. [ASRP: Use to check session progress between execute calls.]

Input parameters:

- `session_id` (string, required): Session ID from origingrid_search_session_create

### `origingrid_feedback` (~134 tokens)

Submit Feedback

Submit feedback (rating 1-5) for a source returned in a previous search, using that search's `search_id` (from origingrid_search response). Feeds source quality signals; rating 3 = neutral, no positive/negative bias.

Input parameters:

- `comment` (string): optional context
- `rating` (integer, required): 1=bad, 2=poor, 3=neutral, 4=good, 5=excellent
- `search_id` (integer, required): search_id from a previous origingrid_search response
- `source_id` (string, required): source_id from the search results

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/net-origingrid-origingrid-mcp/www#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 59
- 2026-08-01: 60
- 2026-07-31: 60
- 2026-07-30: 60
- 2026-07-29: 60

## Links

- Remote endpoint: https://www.origingrid.net/mcp
- Repository: https://github.com/ZHIJAC/origingrid
- Changelog RSS feed: https://verifymcp.io/servers/net-origingrid-origingrid-mcp/www/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/net-origingrid-origingrid-mcp/www/changelog.json
- HTML version of this page: https://verifymcp.io/servers/net-origingrid-origingrid-mcp/www
