# SMI Aware Assistant

> Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.

- name: com.smiaware.mcp/smi-aware-assistant
- version: 0.1.1
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 80/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.smiaware.mcp%2Fsmi-aware-assistant
- tools: https://api.protogrid.dev/v1/servers/com.smiaware.mcp%2Fsmi-aware-assistant/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "smi-aware-assistant": {
      "type": "http",
      "url": "https://mcp.smiaware.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 100
- drivers: +repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-100% ~updated-78d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 80/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 40 of 40 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 38 of 40 tools declare all four hints; missing: search (idempotentHint); fetch (idempotentHint)
- warn `tools.token_cost`: about 14,354 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 17 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 40, about 14,354 tokens to load them all
- tool set hash: d932bee40e142d82ad7ed475dceb307d
- tools last changed: 2026-09-25T22:51:22.918Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.smiaware.mcp/smi-aware-assistant.svg)](https://protogrid.dev/servers/com.smiaware.mcp/smi-aware-assistant)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-25 `smi_get_subject` changed (annotations)
- 2026-09-25 `fetch` changed (annotations)
- 2026-09-25 `search` changed (annotations)
- 2026-09-25 `smi_check_order_complete` changed (annotations)
- 2026-09-25 `smi_get_export_releases` changed (annotations)
- 2026-09-25 `smi_get_deep_report_releases` changed (annotations)
- 2026-09-25 `smi_get_report_findings` changed (annotations)
- 2026-09-25 `smi_list_relationships` changed (annotations)
- 2026-09-25 `smi_list_statuses` changed (annotations)
- 2026-09-25 `smi_list_platforms` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/com.smiaware.mcp%2Fsmi-aware-assistant/changes

## Remotes

- https://mcp.smiaware.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (40)

- `fetch`: Fetches the full SMI record for a typed reference ("<type>:<id>") that search returned. Pass only an id that appeared in a search result; do not construct one. If you already have a plain SMI record id, use smi_get_deep_report or smi_get_export to read it, or smi_check_order_complete for its readiness.
- `onboarding_next_step`: Pre-connection onboarding helper, callable before any SMI token is set. With no input, returns the fork question "Do you already have an SMI token?" — call again with hasToken: "yes" for connect guidance (then verify_access), or hasToken: "no" for prospect-intake guidance. Runs locally; makes no network calls and never reads or requires credentials.
- `search`: Open-ended discovery across SMI deep reports, research bundles, and exports when you do not already have a record id — finds candidates by subject name, url, or keyword and returns typed references to pass to fetch. If you already have a record id from the conversation rather than from a search result, call the specific tool instead: smi_get_deep_report or smi_get_export to read one record, smi_check_order_complete for order readiness, smi_list_deep_reports or smi_list_exports for filtered listings, smi_get_report_findings for findings within a report. Deep reports and research bundles are filtered server-side by subject first/last name, broadening to an unfiltered fetch ranked client-side (across id, name, url, summary) when the filtered fetch finds nothing; exports match on url.
- `smi_add_subject_address`: Attaches a postal address to an SMI subject.
- `smi_add_subject_alias`: Attaches an alias to an SMI subject.
- `smi_add_subject_education`: Attaches an educational institution to an SMI subject.
- `smi_add_subject_email`: Attaches an email address to an SMI subject.
- `smi_add_subject_employee`: Attaches an employee to an SMI subject (for COMPANY-type subjects).
- `smi_add_subject_employee_url`: Attaches a url to an SMI subject employee, referenced by the subjectEmployeeId returned from smi_add_subject_employee.
- `smi_add_subject_employer`: Attaches an employer to an SMI subject.
- `smi_add_subject_phone`: Attaches a phone number to an SMI subject.
- `smi_add_subject_relationship`: Attaches a relationship to an SMI subject, using a relationshipId from smi_list_relationships.
- `smi_add_subject_relationship_url`: Attaches a url to an SMI subject relationship, referenced by the subjectRelationshipId returned from smi_add_subject_relationship.
- `smi_add_subject_surname`: Attaches a surname to an SMI subject.
- `smi_add_subject_url`: Attaches a url to an SMI subject.
- `smi_analyze`: Scores free-text case notes against 5 weighted gap-analysis signals (no prior SMI order, high-relevance case type, known online presence, date of loss, social media mentioned) and returns a RECOMMEND/REVIEW/NO ACTION verdict, a confidence rating, which signals were/were not detected, a suggested product, and a best-effort orderData prefill (subject, matter id, case type, date of loss, handles/urls, suggested scope) for smi_create_deep_report. Runs entirely locally; makes no network calls.
- `smi_check_order_complete`: Checks the status of a deep report or export record (by its record id, e.g. from smi_create_deep_report draftIds). Returns state = ready | in_progress | draft | failed | unknown and a terminal flag. Poll with bounded attempts and backoff while in_progress; stop as soon as terminal is true (ready or failed) — a failed record will never become ready. Also stop when state is draft: the record was never submitted, so it will not progress until smi_submit_deep_reports or smi_submit_exports is called on it.
- `smi_confirm_upload`: Confirms a file already PUT to a presigned URL returned by smi_request_upload_url and persists the deep report upload record. Requires the version (the x-amz-version-id response header captured during the PUT).
- `smi_create_deep_report`: Creates one or more SMI deep report drafts from subject orders. Returns the draft ids for review before submission. All orders in one call are filed under a single project; call once per project.
- `smi_create_export`: Creates one or more SMI export drafts from profile-url orders. Returns the draft ids for review before submission. All orders in one call are filed under a single project; call once per project.
- `smi_get_cowork_instructions`: Returns a consolidated, copy-paste-ready Markdown system prompt of SMI Aware house rules and a when-to-call-which-tool routing guide, plus exact paste-in locations for Claude Projects/Cowork/Desktop, Cursor, and other clients, so the assistant calls the right smi_* tools automatically. Runs locally; makes no network calls and takes no case data.
- `smi_get_deep_report`: Fetches a single SMI deep report by id. Research Bundles are deep-report products, so use this tool for a Research Bundle id too rather than constructing a research_bundle: reference for the generic fetch tool. Accepts product-prefixed ids: RB-11751 (Research Bundle) and DR-11751 (Deep Report) both resolve here.
- `smi_get_deep_report_releases`: Lists releases for a given SMI deep report, with pagination. Each release links its downloadable deliverable files (report PDF, CSV, JSON) and the findings screenshot archive when available — use this tool to fetch the generated report PDF.
- `smi_get_export`: Fetches a single SMI export by id. Accepts product-prefixed ids: EX-30001 resolves here, while RB and DR ids belong to smi_get_deep_report.
- `smi_get_export_releases`: Lists releases for a given SMI export, with pagination.
- `smi_get_report_findings`: Lists SMI release findings with pagination and optional filtering by report, platform, scope, and confirmation status. Report filters accept the displayed identifier (RB-11751, DR-402) or a bare numeric id, and platform filters accept a platform name (Facebook) or its numeric id. Each finding includes its summary, profile URL, and screenshot/evidence links. Findings are grouped by report and ordered by ascending sequence, so sequence 1 is Finding #1 of that report; refer to a finding by that number rather than by its id, which is an internal record key the reader cannot see. The ordering covers the returned page: SMI decides which findings a page carries, so a report with more findings than take may not begin at Finding #1 on page 1.
- `smi_get_subject`: Reads a subject's full profile out of a deep report (no standalone GET /subjects/{id} exists upstream, so the input is a deepReportId, not a subject id). Returns the subject as structured JSON — any atomic field (e.g. date of birth via `subject.birthDate`) can be extracted from it directly.
- `smi_list_deep_reports`: Lists SMI deep reports with pagination and optional filtering.
- `smi_list_exports`: Lists SMI exports with pagination and optional filtering.
- `smi_list_platforms`: Lists the SMI reference set of platforms.
- `smi_list_products`: Lists the SMI reference set of products.
- `smi_list_projects`: Lists SMI projects with pagination.
- `smi_list_relationships`: Lists the SMI reference set of relationships.
- `smi_list_statuses`: Lists the SMI reference set of statuses.
- `smi_request_upload_url`: Requests a presigned URL for uploading a large deep-report reference file (csv, doc, docx, gif, jpg, jpeg, pdf, png, txt, webp, xls, xlsx) directly to storage. This server never proxies file bytes: the caller must PUT the file to the returned signedUrl, capture the x-amz-version-id response header from that PUT, and then call smi_confirm_upload with that version to persist the upload record.
- `smi_submit_deep_reports`: Submits previously created SMI deep report drafts (Draft status only) for processing.
- `smi_submit_exports`: Submits previously created SMI export drafts (Draft status only) for processing.
- `smi_update_subject`: Partially updates an SMI subject via PATCH /subjects/:id. type (PERSON or COMPANY) is required on every call — the SMI backend requires it as a discriminator on every subject PATCH. Editable fields match the API contract: firstName/lastName (or companyName for a COMPANY), birthYear/birthMonth/birthDay, and gender. At least one editable field must be provided.
- `submit_contact_request`: Submits a prospect contact request — first name, last name, email, and organization — to SMI so the sales team can follow up. For prospects who do not yet have an SMI Aware token.
- `verify_access`: Verifies the session Personal Access Token (PAT) against the SMI identity endpoint and returns the resolved account identity.
