# ai.flyvolo/knowledge

> Sourced, task-level facts on how AI changes jobs, for agents answering 'what should I do?'

- name: ai.flyvolo/knowledge
- version: 0.1.2
- connection class: R0 (autonomous)
- trust: 95/100
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.flyvolo%2Fknowledge
- tools: https://api.protogrid.dev/v1/servers/ai.flyvolo%2Fknowledge/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "knowledge": {
      "type": "http",
      "url": "https://mcp.flyvolo.ai/mcp"
    }
  }
}
```


## Trust

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

## Quality 79/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: 71 (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
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_occupation (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_ontology (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); query_ontology (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,034 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 5 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: 19, about 2,034 tokens to load them all
- tool set hash: cca65d694703539bd22bdd06e9b81a55
- tools last changed: 2026-10-18T16:59:35.858Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.flyvolo/knowledge.svg)](https://protogrid.dev/servers/ai.flyvolo/knowledge)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-18 `describe_coverage` changed (description)
  - before: What VOLO covers and what it does not, including which occupations have no evidence yet. Call this when someone asks whether their job is covered, so the answer is a fact about this site rather than a guess about their job.
  - after: What VOLO covers and what it does not: the full list of covered occupations and degrees (slug and name), which occupations have no evidence yet, and the counts. Call this when someone asks whether their job is covered, and whenever resolve_occupation_or_major returns null — then decide from the list which entry, if any, the person means. The answer is a fact about this site rather than a guess about their job.
- 2026-10-18 `resolve_occupation_or_major` changed (description)
  - before: Resolve a job title, a company's internal name for a role, a nickname or a degree name to a canonical VOLO entity. Call this FIRST whenever a person names their job. Returns a match field of exact or approximate — when it is approximate, say which entity you read the question as. Returns null when VOLO does not cover it, which is a gap in this site and not a statement about the job.
  - after: Resolve a job title, a company's internal name for a role, a nickname or a degree name to a canonical VOLO entity. Call this FIRST whenever a person names their job. It matches names; it does not read sentences — so work out yourself which job the person means and pass only that title, in the singular ("taxi driver", not "Will robotaxis replace taxi drivers?"). Returns a match field of exact or approximate — when it is approximate, say which entity you read the question as. Null means this name did not match, not yet that VOLO lacks the job: before saying VOLO does not cover it, call describe_coverage and read its list of covered occupations and degrees — if one of them is what the person means (a synonym, a broader or narrower name), use that one and say which you chose. Only if none fits is it a gap in this site, which is not a statement about the job.
- 2026-10-13 `get_action_brief` added
  - Use this when a person asks what they should do about AI or automation in their job ("I'm an accountant, how do I stay employable?"). One call returns, task by task: where the task is heading and how strong the evidence is; which laws, regulators, courts or collective agreements keep that task (or its signature) with a person; which employers or regulators have already moved it; and transition paths, each with its real constraints and one thing to check this week. Pass the job title as the person said it (any language) or a slug; optionally the task ids they actually do. Build your advice on these facts, keep each record's scope and each task's limits, and never turn it into a probability, a score or a number of years.
- 2026-09-25 `query_ontology` added
  - Walk the VOLO Ontology directly. No arguments: the object types and link types. `type`: the objects of that type. `type` + `id`: one object's properties and everything it links to, grouped by link. Add `link` (and `direction`: out|in) to follow one link. Types include Occupation, Task, TaskJudgement, Evidence, Regulation, WorkActivity and ClassificationConcept. Read-only; judgements keep their basis and limits, evidence its scope — carry them into the answer. No aggregate score exists.
- 2026-09-25 `get_ontology` added
  - Where an occupation or a degree sits in the official classifications (U.S. Department of Labor O*NET 31.0; U.S. Department of Education CIP–SOC crosswalk; the EU's ESCO, the ILO's ISCO-08 and Singapore's SSOC 2024): the matching codes with how well each fits, the skills, knowledge and work activities O*NET rates highest (as O*NET's own importance words, no numbers), related occupations and which degrees lead to it; each of this site's tasks aligned to O*NET detailed work activities (or why none fits); and the rules this site's verified records read, with the verb that matters and whom it binds. For a degree: where the official crosswalk and this site's paths agree and disagree. Every block names its source. O*NET says what a job demands, not what automation is doing to it; never combine it with the impact index.

Full history: https://api.protogrid.dev/v1/servers/ai.flyvolo%2Fknowledge/changes

## Remotes

- https://mcp.flyvolo.ai/mcp (streamable-http, auth none, reachable true, uptime30d 0.95614034)

## Packages

_none_

## Tools (19)

- `describe_coverage`: What VOLO covers and what it does not: the full list of covered occupations and degrees (slug and name), which occupations have no evidence yet, and the counts. Call this when someone asks whether their job is covered, and whenever resolve_occupation_or_major returns null — then decide from the list which entry, if any, the person means. The answer is a fact about this site rather than a guess about their job.
- `find_affected`: Which occupation and which specific tasks a change record bears on.
- `find_evidence`: Verified evidence records for an occupation, optionally for one task. Each record carries its scope (where it applies), its stage, whether that stage can move a task judgement at all, and its source tier. Repeat the scope rather than smoothing it away.
- `find_majors_for_occupation`: Which degrees lead into this occupation.
- `find_notes`: VOLO's long-form answers to the big questions — how many jobs AI has actually taken, what actually gets automated, how long someone has, what AI law already changed, where AI lands in a company. Call this FIRST for any question that is about the whole picture rather than one occupation: those are exactly the questions you can answer fluently without evidence, and these notes are the evidence. Each result carries the note's own limits.
- `find_notes_for_occupation`: Which notes argue from this occupation's own records or task judgements. Use it to point someone from their own page to the wider answer.
- `find_transition_paths`: Options for someone in this occupation. Every path carries its real constraints (time, pay cut, seniority) and one action they can take this week that produces information. Never present a path without its constraint.
- `get_action_brief`: Use this when a person asks what they should do about AI or automation in their job ("I'm an accountant, how do I stay employable?"). One call returns, task by task: where the task is heading and how strong the evidence is; which laws, regulators, courts or collective agreements keep that task (or its signature) with a person; which employers or regulators have already moved it; and transition paths, each with its real constraints and one thing to check this week. Pass the job title as the person said it (any language) or a slug; optionally the task ids they actually do. Build your advice on these facts, keep each record's scope and each task's limits, and never turn it into a probability, a score or a number of years.
- `get_change`: One verified change record by id, with VOLO's reading: what it means, what it does not yet establish, and what a reader can verify themselves.
- `get_change_history`: The verified change timeline for an occupation, oldest first.
- `get_major`: A degree and the occupations it feeds. There is no score for a major and never will be — answer 'should I switch majors' by pointing at where it leads and what transfers.
- `get_note`: The full text of one note, section by section, each section with the verified records it rests on. Use it when you need to quote or cite rather than summarise.
- `get_occupation`: Full task-level assessment of one occupation. Every task carries direction, basis (evidenced vs inferred) and limits — what that judgement does NOT establish. The impact index is not a probability of job loss and never appears without its confidence and assessment date.
- `get_ontology`: Where an occupation or a degree sits in the official classifications (U.S. Department of Labor O*NET 31.0; U.S. Department of Education CIP–SOC crosswalk; the EU's ESCO, the ILO's ISCO-08 and Singapore's SSOC 2024): the matching codes with how well each fits, the skills, knowledge and work activities O*NET rates highest (as O*NET's own importance words, no numbers), related occupations and which degrees lead to it; each of this site's tasks aligned to O*NET detailed work activities (or why none fits); and the rules this site's verified records read, with the verb that matters and whom it binds. For a degree: where the official crosswalk and this site's paths agree and disagree. Every block names its source. O*NET says what a job demands, not what automation is doing to it; never combine it with the impact index.
- `get_role_tasks`: The task breakdown for one occupation. The unit of assessment is the task, never the job title.
- `list_business_functions`: For the business side: the functions a company is organised into, and which occupations sit in each. Use this when someone describes a company rather than themselves.
- `query_ontology`: Walk the VOLO Ontology directly. No arguments: the object types and link types. `type`: the objects of that type. `type` + `id`: one object's properties and everything it links to, grouped by link. Add `link` (and `direction`: out|in) to follow one link. Types include Occupation, Task, TaskJudgement, Evidence, Regulation, WorkActivity and ClassificationConcept. Read-only; judgements keep their basis and limits, evidence its scope — carry them into the answer. No aggregate score exists.
- `resolve_occupation_or_major`: Resolve a job title, a company's internal name for a role, a nickname or a degree name to a canonical VOLO entity. Call this FIRST whenever a person names their job. It matches names; it does not read sentences — so work out yourself which job the person means and pass only that title, in the singular ("taxi driver", not "Will robotaxis replace taxi drivers?"). Returns a match field of exact or approximate — when it is approximate, say which entity you read the question as. Null means this name did not match, not yet that VOLO lacks the job: before saying VOLO does not cover it, call describe_coverage and read its list of covered occupations and degrees — if one of them is what the person means (a synonym, a broader or narrower name), use that one and say which you chose. Only if none fits is it a gap in this site, which is not a statement about the job.
- `search`: Search occupations, majors and verified change records by keyword. Returns entries, not judgements.
