primr-research · v1.1.0 · 2026-06-29 · sha256 46344003728a8bf1

primr-research v1.1.0A

Immutable. This exact content is served forever at /api/v1/blob/46344003728a8bf1.

---

name: primr-research

version: "1.1.0"

description: "Run and monitor company research through Primr MCP. Use when the user wants a new research run, asks for status, or needs mode selection help before starting."

metadata:

  openclaw:

    requires:

      bins:

        - primr-mcp

      env:

        - XAI_API_KEY

        - GEMINI_API_KEY

      os:

        - linux

        - darwin

        - win32

mcp_server: primr

tools:

  - estimate_run

  - research_company

  - check_jobs

  - cancel_job

  - wait_for_status_change

resources:

  - primr://research/modes

  - primr://research/status

  - primr://output/latest

  - primr://output/artifacts

  - primr://output/artifacts/by_job/{job_id}

  - primr://output/qa_summary/by_job/{job_id}

  - primr://output/usage_summary/by_job/{job_id}

  - primr://output/source_summary/by_job/{job_id}

  - primr://output/trace_summary/by_job/{job_id}

  - primr://output/verification_summary/by_job/{job_id}

  - primr://output/calibration_summary/by_job/{job_id}

---



# Primr Research Skill



## Conceptual Framework



This skill is a thin orchestrator over Primr MCP.



Use MCP resources to discover current behavior instead of assuming fixed costs, providers, or defaults from the skill text. `full` is the standard end-to-end workflow, `premium` is the higher-depth option, and `scrape` and `deep` are narrower research modes.



Research runs are async jobs. Start the run, then monitor status until terminal. Standard runs often take 35-50 minutes; premium multi-vendor runs can take 75-120 minutes.



## Operational Capabilities



### 1. Select a mode



- Read `primr://research/modes` before advising on mode selection.

- Use `scrape` for first-party reconnaissance.

- Use `deep` when the site is blocked or low-signal.

- Use `full` for the default strategic analysis workflow.

- Use `premium` when the user explicitly wants maximum depth.



### 2. Estimate before execution



Always call `estimate_run` before `research_company`, then state that the run incurs real API cost and wait for explicit user approval.



```text

estimate_run(company_url="https://example.com", mode="full")

```



### 3. Start and monitor the job



After user approval, call `research_company` and pass the approved `max_estimated_cost_usd` when available, then monitor with `wait_for_status_change`, `check_jobs`, or `primr://research/status`. Do not assume the client session will stay attached for the entire run.



```text

research_company(company_name="ExampleCo", company_url="https://example.com", mode="full")

```



### 4. Retrieve results



When the run completes, read `primr://output/artifacts/by_job/{job_id}` first
to inventory artifacts without report body content. Read
`primr://output/qa_summary/by_job/{job_id}` when QA artifacts are attached.
Read `primr://output/usage_summary/by_job/{job_id}` when cost, timing,
approval, or artifact-count metadata is needed.
Read `primr://output/source_summary/by_job/{job_id}` when citation/source
appendix metadata is needed.
Read `primr://output/trace_summary/by_job/{job_id}` when scrape trace health
metadata is needed.
Read `primr://output/verification_summary/by_job/{job_id}` when claim
verification trust score, claim counts, status counts, first-party downgrade
counts, or source-reference counts are needed without raw claims, source URLs,
search queries, explanations, or report body content.
Read `primr://output/calibration_summary/by_job/{job_id}` when
label-calibration counts, evidence-review count buckets, judge provenance, or
judge-agreement metadata is needed without raw claims, source URLs, evidence
reviews, rationales, or report body content.
MCP resource reads are audit-logged with hashed URI/result values and
normalized resource kind, without raw URI query values or resource bodies.
Read `primr://output/latest` only when the next step needs a report preview.



## Error Handling



- `job_in_progress`: report the existing run and monitor it instead of starting another.

- `invalid_url` or `ssrf_blocked`: require a valid public URL, or consider `deep` mode.

- `rate_limit_exceeded`: wait for the retry window.

- `api_error`: surface the provider error clearly and recommend retry or diagnostics.