Read-only Bicycle Guide registry: published guides, homes, taxonomy, capability spine. No auth.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get one Answer — question, grounded answer, visible citations — by id or slug, in the Answer contract v0 shape (ANSWERS-PROGRAM.md). Read-only. Returns null if not found.
The Answer's stable id or slug.
Get one Answer — question, grounded answer, visible citations — by id or slug, in the Answer contract v0 shape (ANSWERS-PROGRAM.md). Read-only. Returns null if not found.
| Argument | Type | Description |
|---|---|---|
| id* | string | The Answer's stable id or slug. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The Answer's stable id or slug."
}
}
}Get one guide's registry row by slug, with its artifact + routing-surface status.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The guide slug, e.g. start-a-company. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The guide slug, e.g. start-a-company."
}
}
}List Answers (contract v0), paginated with an opaque cursor. Read-only.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max answers to return (default: loader's choice, capped 200). |
| cursor | string | Opaque pagination cursor from a previous list_answers call's nextCursor. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"description": "Max answers to return (default: loader's choice, capped 200).",
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous list_answers call's nextCursor."
}
}
}Traverse the capability spine joining books, guides (capability packages), KSAO-grade elements and jobs. Use min_guides=2 for the cross-cutting capabilities that span many guides, role=<role> for what a job requires, capability_detail=<slug> for one package with its elements and books hydrated. ksao_type/canon_component_id are null by design where unresolved — treat null as 'not yet joined', never as 'no link'.
| Argument | Type | Description |
|---|---|---|
| q | string | Substring match on the element label. |
| role | string | Elements required by this job role, e.g. compensation-analyst. |
| limit | number | Cap the rows returned (default 200). `total` always reports the true count. |
| has_job | boolean | Only elements that some job requires (via a career guide). |
| ksao_type | string | knowledge | skill | ability | other — from a panel validated at 95.1% on gold O*NET labels. 'other' is UNVALIDATED (no gold labels existed for it). |
| capability | string | Elements taught by this capability (guide slug). |
| min_guides | number | Only elements taught by >= N capabilities. 2 gives the cross-cutting spine. |
List organizational conditions (identity, label, guide count, causal-role counts). Filter by draft domain, subdomain, or causal_role (driver|mediator|outcome). Names and counts only — no addresses, no passages.
| Argument | Type | Description |
|---|---|---|
| q | string | Substring match on the condition label. |
| id | string | Exact condition_identity_id. When set, other filters are ignored. |
| limit | number | Cap rows returned. Default 100, max 500. |
| domain | string | Draft domain slug, e.g. organizational-structure-and-culture. |
| subdomain | string | Draft sub-domain slug, e.g. organizational-learning-and-improvement. |
| causal_role | string | driver | mediator | outcome. Unknown values match nothing. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"q": {
"type": "string",
"description": "Substring match on the condition label."
},
"id": {
"type": "string",
"description": "Exact condition_identity_id. When set, other filters are ignored."
},
"limit": {
"type": "number",
"description": "Cap rows returned. Default 100, max 500."
},
"domain": {
"type": "string",
"description": "Draft domain slug, e.g. organizational-structure-and-culture."
},
"subdomain": {
"type": "string",
"description": "Draft sub-domain slug, e.g. organizational-learning-and-improvement."
},
"causal_role": {
"type": "string",
"description": "driver | mediator | outcome. Unknown values match nothing."
}
}
}Where does the field disagree? Returns cross-book tension names and the books on each pole (title, author, library_id) plus the guide URL. Filter by slug, persona, or category. Names and provenance only — no passages.
| Argument | Type | Description |
|---|---|---|
| slug | string | One guide, e.g. start-a-company. When set, persona/category are ignored. |
| limit | number | Cap rows returned. Default 100, max 500. |
| persona | string | Audience filter, e.g. people-analytics-professional. |
| category | string | Subject shelf, e.g. field, skills, analytics. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "One guide, e.g. start-a-company. When set, persona/category are ignored."
},
"limit": {
"type": "number",
"description": "Cap rows returned. Default 100, max 500."
},
"persona": {
"type": "string",
"description": "Audience filter, e.g. people-analytics-professional."
},
"category": {
"type": "string",
"description": "Subject shelf, e.g. field, skills, analytics."
}
}
}List the bicycle.guide registry — every guide's home, status, access, standard, syndication and grounding, plus the distribution roll-up (including guides homed to a property with no rendering surface).
| Argument | Type | Description |
|---|---|---|
| home | string | Filter by owning property, e.g. jobframe, peopleanalyst, penwright. |
| limit | number | Cap the rows returned. Default 100, max 500. |
| access | string | Filter by access: free | gated. |
| domain | string | Filter by life-domain — the layer ABOVE the subject shelf: work | life | play. Derived from the guide's category via content/registry/shelves.json. `rollup.by_domain` lists them. |
| fields | string | Row shape. "compact" returns only slug/title/home/status/access/price_cents/has_artifact/category/domain/personas/canonical_url — no rollup, no registry_meta. "full" returns the entire decorated registry row plus the rollup and registry_meta, as before. Default over this server: "compact". |
| series | string | Filter by guide series — the operational grouping of guides made to be used together, e.g. competencies, penwright-writing, startup-journey, ladder:hr-business-partner. |
| status | string |
Get the bicycle.guide vocabulary — domains, shelves (with live guide counts), series, personas, guide_types, and the classification conventions (pillar/spoke, discriminant home, bicycle-guide-serves-all) as machine-readable data rather than prose.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Search Answers by free-text query over question/answer text. Returns contract v0 records. Read-only.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results to return (default: loader's choice, capped 200). |
| query* | string | Free-text query matched against question/answer text. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"description": "Max results to return (default: loader's choice, capped 200).",
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"minLength": 1,
"description": "Free-text query matched against question/answer text."
}
}
}Search published guides by topic. Returns matches, or a structured refusal with the nearest owned guides and the missing topic. No model call. Filter by persona or category.
| Argument | Type | Description |
|---|---|---|
| q* | string | Topic or question in plain language. No model call — matched against registry taxonomy and the capability spine. |
| limit | number | Cap hits returned. Default 10, max 20. |
| persona | string | Audience filter. A miss that fails this rule is a structured refusal. |
| category | string | Subject shelf filter. A miss that fails this rule is a structured refusal. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Topic or question in plain language. No model call — matched against registry taxonomy and the capability spine."
},
"limit": {
"type": "number",
"description": "Cap hits returned. Default 10, max 20."
},
"persona": {
"type": "string",
"description": "Audience filter. A miss that fails this rule is a structured refusal."
},
"category": {
"type": "string",
"description": "Subject shelf filter. A miss that fails this rule is a structured refusal."
}
}
}| conflicting |
| boolean |
| Only elements where 2+ non-career guides define the same label differently — these need a ruling. |
| construct_class | string | person-attribute (knowledge/skill/ability — what a JOB requires and a learner develops) | condition-or-outcome (what a capability PRODUCES, e.g. 'Retention & Workforce Stability'). Only ~30% of elements are person attributes — filter to these for 'what does this role need'. |
| capability_detail | string | Return ONE capability with its elements and books hydrated, instead of querying elements. |
| has_canon_identity | boolean | true = only elements resolved to a JobFrame canon component (an IDENTITY, panel-adjudicated). false = only unresolved. |
| canon_promotion_candidate | boolean | true = only elements the JobFrame canon has NO component for. This is a real answer, not a failed lookup — these are the constructs to PROMOTE into the canon. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"q": {
"type": "string",
"description": "Substring match on the element label."
},
"role": {
"type": "string",
"description": "Elements required by this job role, e.g. compensation-analyst."
},
"limit": {
"type": "number",
"description": "Cap the rows returned (default 200). `total` always reports the true count."
},
"has_job": {
"type": "boolean",
"description": "Only elements that some job requires (via a career guide)."
},
"ksao_type": {
"type": "string",
"description": "knowledge | skill | ability | other — from a panel validated at 95.1% on gold O*NET labels. 'other' is UNVALIDATED (no gold labels existed for it)."
},
"capability": {
"type": "string",
"description": "Elements taught by this capability (guide slug)."
},
"min_guides": {
"type": "number",
"description": "Only elements taught by >= N capabilities. 2 gives the cross-cutting spine."
},
"conflicting": {
"type": "boolean",
"description": "Only elements where 2+ non-career guides define the same label differently — these need a ruling."
},
"construct_class": {
"type": "string",
"description": "person-attribute (knowledge/skill/ability — what a JOB requires and a learner develops) | condition-or-outcome (what a capability PRODUCES, e.g. 'Retention & Workforce Stability'). Only ~30% of elements are person attributes — filter to these for 'what does this role need'."
},
"capability_detail": {
"type": "string",
"description": "Return ONE capability with its elements and books hydrated, instead of querying elements."
},
"has_canon_identity": {
"type": "boolean",
"description": "true = only elements resolved to a JobFrame canon component (an IDENTITY, panel-adjudicated). false = only unresolved."
},
"canon_promotion_candidate": {
"type": "boolean",
"description": "true = only elements the JobFrame canon has NO component for. This is a real answer, not a failed lookup — these are the constructs to PROMOTE into the canon."
}
}
}| Filter by status: on | draft. |
| persona | string | Filter by the audience a guide serves, e.g. people-analytics-professional, aspiring-author, executive-performance-leader. A guide can serve several; this matches any of them. |
| category | string | Filter by subject shelf — the reader-facing topic axis, e.g. field, skills, analytics, writing, comp. Matches the primary category OR a cross-shelf tag. |
| standard | string | Filter by standard: bicycle | life-stage | problem-opportunity. |
| guide_type | string | Filter by guide CLASS: career (level-based job guides, their own program) | capability | book_profile. Combine with series=ladder:<role> to get one role's whole ladder. |
| has_artifact | boolean | Only guides that do (true) / do not (false) have a new-design artifact. |
| home_unrouted | boolean | Only guides whose home has NO rendering surface at all (the distribution gap). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"home": {
"type": "string",
"description": "Filter by owning property, e.g. jobframe, peopleanalyst, penwright."
},
"limit": {
"type": "number",
"description": "Cap the rows returned. Default 100, max 500."
},
"access": {
"type": "string",
"description": "Filter by access: free | gated."
},
"domain": {
"type": "string",
"description": "Filter by life-domain — the layer ABOVE the subject shelf: work | life | play. Derived from the guide's category via content/registry/shelves.json. `rollup.by_domain` lists them."
},
"fields": {
"enum": [
"compact",
"full"
],
"type": "string",
"description": "Row shape. \"compact\" returns only slug/title/home/status/access/price_cents/has_artifact/category/domain/personas/canonical_url — no rollup, no registry_meta. \"full\" returns the entire decorated registry row plus the rollup and registry_meta, as before. Default over this server: \"compact\"."
},
"series": {
"type": "string",
"description": "Filter by guide series — the operational grouping of guides made to be used together, e.g. competencies, penwright-writing, startup-journey, ladder:hr-business-partner."
},
"status": {
"type": "string",
"description": "Filter by status: on | draft."
},
"persona": {
"type": "string",
"description": "Filter by the audience a guide serves, e.g. people-analytics-professional, aspiring-author, executive-performance-leader. A guide can serve several; this matches any of them."
},
"category": {
"type": "string",
"description": "Filter by subject shelf — the reader-facing topic axis, e.g. field, skills, analytics, writing, comp. Matches the primary category OR a cross-shelf tag."
},
"standard": {
"type": "string",
"description": "Filter by standard: bicycle | life-stage | problem-opportunity."
},
"guide_type": {
"type": "string",
"description": "Filter by guide CLASS: career (level-based job guides, their own program) | capability | book_profile. Combine with series=ladder:<role> to get one role's whole ladder."
},
"has_artifact": {
"type": "boolean",
"description": "Only guides that do (true) / do not (false) have a new-design artifact."
},
"home_unrouted": {
"type": "boolean",
"description": "Only guides whose home has NO rendering surface at all (the distribution gap)."
}
}
}