MCPサーバー

OriginGrid

net.origingrid/origingrid-mcp

このMCPでできること

Indexes and discovers curated first-hand information sources, resolves queries to source URLs, fetches content, and executes multi-step research plans.

origingrid_approve_contribution
Approve Contribution
Approve a pending source-card contribution (admin only; requires admin_token when ORIGINGRID_ADMIN_TOKEN is set)
入力スキーマ
{'type': 'object', 'required': ['contribution_id'], 'properties': {'admin_token': {'type': 'string'}, 'contribution_id': {'type': 'integer'}}}
origingrid_contribute
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.]
入力スキーマ
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'category': {'type': 'string'}}}
origingrid_discover
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.]
入力スキーマ
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 8}, 'query': {'type': 'string', 'description': 'Topic or theme to discover sources for'}, 'topic': {'type': 'string', 'description': 'Optional topic/category filter (e.g. programming, finance)'}, 'region': {'type': 'string', 'description': 'Optional region filter (e.g. cn, global, academic)'}}}
origingrid_execute_batch
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.]
入力スキーマ
{'type': 'object', 'required': ['steps'], 'properties': {'steps': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL to fetch'}, 'source_id': {'type': 'string', 'description': 'Source identifier from plan'}, 'difficulty': {'enum': ['green', 'yellow', 'red'], 'type': 'string', 'description': 'Fetch difficulty'}}}, 'description': 'Array of step objects (from origingrid_plan steps)'}, 'retry_count': {'type': 'integer', 'default': 1, 'description': 'Number of retry attempts per step'}, 'step_timeout': {'type': 'integer', 'default': 30, 'description': 'Per-step timeout in seconds'}, 'batch_timeout': {'type': 'integer', 'default': 90, 'description': 'Total batch timeout in seconds (max 90)'}, 'parallel_groups': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'integer'}}, 'description': 'Optional: groups of step indices to run in parallel. Each group waits for the previous to finish. Default: one step per group (serial).'}}}
出力スキーマ
{'type': 'object', 'properties': {'failed': {'type': 'integer'}, 'results': {'type': 'array'}, 'completed': {'type': 'integer'}, 'total_elapsed_ms': {'type': 'integer'}, 'concurrency_limit': {'type': 'integer'}}}
origingrid_feedback
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.
入力スキーマ
{'type': 'object', 'required': ['search_id', 'source_id', 'rating'], 'properties': {'rating': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': '1=bad, 2=poor, 3=neutral, 4=good, 5=excellent'}, 'comment': {'type': 'string', 'description': 'optional context'}, 'search_id': {'type': 'integer', 'description': 'search_id from a previous origingrid_search response'}, 'source_id': {'type': 'string', 'description': 'source_id from the search results'}}}
origingrid_fetch
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.]
入力スキーマ
{'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Direct URL to fetch live (first-hand content, cached locally)'}, 'query': {'type': 'string'}, 'timeout': {'type': 'integer', 'description': 'Fetch timeout in seconds (default: 20)'}, 'selector': {'type': 'string', 'description': 'CSS selector to extract (default: body)'}, 'source_id': {'type': 'string', 'description': 'Registered source id (local-index fallback)'}, 'delivery_level': {'enum': ['full', 'excerpt', 'title'], 'type': 'string', 'default': 'full', 'description': 'Content delivery level: full=complete, excerpt=~300 chars, title=only title'}}}
origingrid_get_source
Get Source
Get details for a single information source by its source_id
入力スキーマ
{'type': 'object', 'required': ['source_id'], 'properties': {'source_id': {'type': 'string'}}}
origingrid_list
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.]
入力スキーマ
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 10}, 'topic': {'type': 'string'}, 'offset': {'type': 'integer', 'default': 0, 'description': 'Skip the first N results for pagination'}, 'region': {'type': 'string'}}}
origingrid_pending_contributions
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)
入力スキーマ
{'type': 'object', 'properties': {'admin_token': {'type': 'string', 'description': 'Admin token (required only if ORIGINGRID_ADMIN_TOKEN is configured)'}}}
origingrid_plan
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.]
入力スキーマ
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search query'}, 'intent': {'type': 'string', 'description': 'Explicit intent override (auto/about/products/docs/pricing/news/contact/search/academic/code). Default: auto-detect'}, 'max_sources': {'type': 'integer', 'default': 5, 'description': 'Maximum number of plan steps to return (max 20)'}, 'timeout_hint': {'type': 'integer', 'default': 30, 'description': "Agent's max acceptable wait in seconds"}}}
出力スキーマ
{'type': 'object', 'properties': {'query': {'type': 'string'}, 'steps': {'type': 'array'}, 'plan_id': {'type': 'string'}, 'parallel_groups': {'type': 'array'}, 'resolved_intent': {'type': 'string'}}}
origingrid_reject_contribution
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)
入力スキーマ
{'type': 'object', 'required': ['contribution_id'], 'properties': {'reason': {'type': 'string', 'description': 'Optional rejection reason (stored for the contributor)'}, 'admin_token': {'type': 'string'}, 'contribution_id': {'type': 'integer'}}}
origingrid_resolve
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.]
入力スキーマ
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 5, 'description': 'Max results'}, 'query': {'type': 'string', 'description': 'Natural language query'}, 'topic': {'type': 'string', 'description': 'Optional topic/category filter'}, 'intent': {'type': 'string', 'description': 'Explicit intent override (auto/about/products/docs/pricing/news/contact/search/academic/code). Default: auto-detect'}, 'region': {'type': 'string', 'description': 'Optional region filter'}}}
出力スキーマ
{'type': 'object', 'properties': {'query': {'type': 'string'}, 'results': {'type': 'array'}, 'resolved_intent': {'type': 'string'}}}
origingrid_search
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.]
入力スキーマ
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 5}, 'query': {'type': 'string'}, 'offset': {'type': 'integer', 'default': 0, 'description': 'Skip the first N results for pagination'}}}
origingrid_search_by_region
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.]
入力スキーマ
{'type': 'object', 'required': ['region'], 'properties': {'limit': {'type': 'integer', 'default': 10}, 'query': {'type': 'string'}, 'region': {'type': 'string'}}}
origingrid_search_session_create
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.]
入力スキーマ
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search query'}, 'intent': {'type': 'string', 'description': 'Explicit intent override (auto/about/products/docs/pricing/news/contact/search/academic/code). Default: auto-detect'}, 'max_sources': {'type': 'integer', 'default': 5, 'description': 'Maximum number of sources (max 20)'}}}
origingrid_search_session_execute
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.]
入力スキーマ
{'type': 'object', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID from origingrid_search_session_create'}, 'retry_count': {'type': 'integer', 'default': 1, 'description': 'Number of retry attempts per step'}, 'step_timeout': {'type': 'integer', 'default': 30, 'description': 'Per-step timeout in seconds'}, 'batch_timeout': {'type': 'integer', 'default': 90, 'description': 'Total batch timeout in seconds (max 90)'}}}
origingrid_search_session_status
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.]
入力スキーマ
{'type': 'object', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Session ID from origingrid_search_session_create'}}}
origingrid_search_similar
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.]
入力スキーマ
{'type': 'object', 'required': ['source_id'], 'properties': {'limit': {'type': 'integer', 'default': 5}, 'source_id': {'type': 'string'}}}
origingrid_stats
Registry Stats
Get OriginGrid registry statistics
入力スキーマ
{'type': 'object', 'properties': {}}
出力スキーマ
{'type': 'object', 'properties': {'total_users': {'type': 'integer'}, 'total_sources': {'type': 'integer'}, 'total_searches': {'type': 'integer'}, 'total_contributions': {'type': 'integer'}}}
追加
origingrid_feedback
2026年9月17日12:54
追加
origingrid_search_session_status
2026年9月17日12:54
追加
origingrid_search_session_execute
2026年9月17日12:54
追加
origingrid_search_session_create
2026年9月17日12:54
追加
origingrid_execute_batch
2026年9月17日12:54
追加
origingrid_plan
2026年9月17日12:54
追加
origingrid_resolve
2026年9月17日12:54
追加
origingrid_discover
2026年9月17日12:54
追加
origingrid_pending_contributions
2026年9月17日12:54
追加
origingrid_reject_contribution
2026年9月17日12:54
追加
origingrid_approve_contribution
2026年9月17日12:54
追加
origingrid_search_by_region
2026年9月17日12:54
追加
origingrid_search_similar
2026年9月17日12:54
追加
origingrid_stats
2026年9月17日12:54
追加
origingrid_fetch
2026年9月17日12:54
追加
origingrid_contribute
2026年9月17日12:54
追加
origingrid_list
2026年9月17日12:54
追加
origingrid_get_source
2026年9月17日12:54
追加
origingrid_search
2026年9月17日12:54