VeteranHQ
REMOTE · API.VETERANHQ.APP · SCANNED SEP 21
VA disability rating and compensation calculations, condition lookup, and 38 CFR authority search
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5040 tokens (~458/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "compute_retroactive_pay" implies "pay" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the VeteranHQ MCP server?
VeteranHQ is a hosted endpoint at https://api.veteranhq.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.veteranhq.app
claude mcp add --transport http app-veteranhq-va-disability-benefits 'https://api.veteranhq.app/mcp'
{
"mcpServers": {
"app-veteranhq-va-disability-benefits": {
"url": "https://api.veteranhq.app/mcp"
}
}
} {
"servers": {
"app-veteranhq-va-disability-benefits": {
"type": "http",
"url": "https://api.veteranhq.app/mcp"
}
}
} [mcp_servers.app-veteranhq-va-disability-benefits] url = "https://api.veteranhq.app/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"app-veteranhq-va-disability-benefits": {
"type": "remote",
"url": "https://api.veteranhq.app/mcp",
"enabled": true
}
}
} openclaw mcp add app-veteranhq-va-disability-benefits --url 'https://api.veteranhq.app/mcp' --transport streamable-http
mcp_servers:
app-veteranhq-va-disability-benefits:
url: "https://api.veteranhq.app/mcp" {
"McpServers": {
"app-veteranhq-va-disability-benefits": {
"Transport": "http",
"Url": "https://api.veteranhq.app/mcp"
}
}
} assistant mcp add app-veteranhq-va-disability-benefits -t streamable-http -u 'https://api.veteranhq.app/mcp'
{
"mcpServers": {
"app-veteranhq-va-disability-benefits": {
"type": "http",
"url": "https://api.veteranhq.app/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 0
- Stability: 0.97 → pass security
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
- Tool “analyze_rating_gap” rewrote its description, which is the text the model reads security
- Tool “calculate_combined_rating” rewrote its description, which is the text the model reads security
- Tool “calculate_rolling_window” rewrote its description, which is the text the model reads security
- Tool “compare_rating_criteria” rewrote its description, which is the text the model reads security
- Tool “compute_retroactive_pay” rewrote its description, which is the text the model reads security
- Tool “find_claim_help” rewrote its description, which is the text the model reads security
- Tool “search_legal_authority” rewrote its description, which is the text the model reads security
- Schema quality: 350 → 458 ▼ functional
- “find_claim_help” reworded the description of “askedFor” cosmetic
- “search_legal_authority” reworded the description of “citation” cosmetic
- “search_legal_authority” reworded the description of “query” cosmetic
- “search_legal_authority” made “query” optional cosmetic
- 11 Sept 26 0
- Tool “prepare_cp_exam” rewrote its description, which is the text the model reads security
- 10 Sept 26 +2
- The server rewrote its instructions, which are the text every model session reads security
- Tool “search_legal_authority” rewrote its description, which is the text the model reads security
- Schema quality: 263 → 350 ▼ functional
- The server now declares the “prompts” capability functional
- First check of Schema quality: 100 functional
- New prompt “explain_rating_decision” functional
- New prompt “get_started_va_claims_101” functional
- New prompt “prepare_cp_exam” functional
- New prompt “review_evidence_gaps” functional
- New prompt “whats_changed” functional
- New tool “find_claim_help” functional
- “search_legal_authority” added an optional parameter “citation” cosmetic
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Probed https://api.veteranhq.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.veteranhq.app | CN=YR1,O=Let's Encrypt,C=US | 26 Jul 2026 | 24 Oct 2026 | RSA 2048 | SHA256-RSA | 640b5eeb39f8c3a68f8a2fdf8720ecbd51d |
| SANs: api.veteranhq.app | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.veteranhq.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| veteranhq.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
| content-security-policy | default-src 'self';style-src 'self';script-src 'self';img-src 'self' data: https:;connect-src 'self' https://api.veteranhq.app https://api.veteranclaimservices.com https://api.vetclaimservices.com;font-src 'self' https://fonts.gstatic.com;object-src 'none';media-src 'self' https:;frame-src 'none';base-uri 'self';form-action 'self';frame-ancestors 'self';script-src-attr 'none';upgrade-insecure-requests |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.veteranhq.app/mcp | Verified | 200 | |
| http (plaintext) | http://api.veteranhq.app/mcp | HTTPS enforced | 301 | https://api.veteranhq.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_rating_gap Analyze a rating gap ~357
Use this when a veteran gives a condition name and the percentage currently assigned for it, and wants that percentage compared against the VASRD criteria. Returns the tier that matches the current percentage, the next tier above it, and every higher tier on file for that condition, with the criteria each one requires. It reports when the condition is already at the highest documented tier, and when no criteria are on file for that condition name. documentedTiers lists the tier percentages on file for the condition, and currentPercentIsDocumentedTier says whether the percentage supplied is one of them: false means the figure does not correspond to a tier in the criteria on file, which happens when the rating came from a formula or a code this search did not resolve. For a veteran at zero percent, zeroPercentBasis is "documented" when a zero percent row for the code is on file and "unresolved" when the complete tier set could not be established, and zeroPercentUnderFourThirtyOne answers whether 38 CFR 4.31 is what assigns that zero: false where the schedule on file provides a zero percent evaluation or the rating is compensable, and null where the question is open. A null there is an unanswered question rather than a finding that 4.31 applies, because the rule turns on what the schedule provides for the code and this tool reads the criteria on file rather than the omissions in the schedule. It describes what the criteria require; only VA decides a rating.
| Name | Type | Req | Description |
|---|---|---|---|
| conditionName | string | yes | Condition to analyze (e.g., "PTSD", "Lumbar strain"). |
| currentPercent | number | yes | Current VA rating percentage for this condition (e.g., 30, 50, 70). |
No output schema declared.
No examples provided.
calculate_combined_rating Calculate combined VA rating ~518
Use this when a veteran has two or more VA disability rating percentages and wants the combined rating. Applies the 38 CFR 4.25 Combined Ratings Table procedure: pairwise combination in severity order, whole-percent rounding after each step, then conversion to the nearest 10. Returns combinedRating as an object holding both figures under their own names: rounded is the rating after that conversion, raw is the Combined Ratings Table value before it. The arithmetic for each step comes back alongside them. The optional bilateral argument tags the ratings that affect both arms or both legs; when it is supplied and one pair has a compensable rating on each side, 38 CFR 4.26 applies to those ratings first: they combine with each other, 10 percent of that value is added rather than combined, and the result enters the 4.25 combination as one disability. Without that argument no bilateral factor is applied. The 38 CFR 4.26(d) comparison across eligible groupings is exhaustive here for up to 16 tagged compensable ratings; past that the response carries combinedRatingWithoutBilateralFactor in place of combinedRating, labelled as a figure the bilateral factor has not been applied to, with a note that VA and accredited representatives compute that factor. The result differs from adding the percentages and from a simple product. It reports what 38 CFR 4.25 and 4.26 yield for the percentages supplied, not what VA has assigned, and it does not evaluate special monthly compensation.
| Name | Type | Req | Description |
|---|---|---|---|
| bilateral | array | – | Optional. Tags the ratings that affect a paired extremity, so 38 CFR 4.26 can be applied: those ratings are combined with each other first, 10 percent of that value is added (not combined), and the r… |
| ratings | array | yes | Array of individual disability rating percentages (0-100), e.g., [70, 50]. |
No output schema declared.
No examples provided.
calculate_rolling_window Check a 12-month absence window ~361
Use this when a veteran supplies dates of incapacitating episodes and the question involves the 38 CFR 4.71a formula for rating intervertebral disc syndrome on incapacitating episodes, diagnostic code 5243. Totals the calendar duration of those episodes inside the 12 months ending on a reference date: the window opens the day after the same date one year earlier and closes on the reference date, with both ends counted, so an episode that began exactly 12 months before that date falls outside it by one day. That formula bands on total calendar duration in weeks, so weekend and holiday days inside an episode count, and only periods flagged as bed rest prescribed by a physician count toward a tier. Returns the window, a per-period breakdown, the tier the flagged episodes would support, and a separate employer-leave workday count that plays no part in that tier. Inside ivdsThresholdAnalysis, calendarDaysBelow60PercentThreshold and weeksBelow60PercentThreshold report how far the counted episodes fall below the 6-week duration that bands at 60 percent under that formula. They measure the reported history against a threshold in the regulation; they are not a target, since a veteran does not accumulate bed rest to reach a rating. The tier it reports is an estimate from the episodes supplied. It does not decide FMLA entitlement and does not apply to conditions rated outside diagnostic code 5243.
| Name | Type | Req | Description |
|---|---|---|---|
| absencePeriods | array | yes | Array of absence periods. Each must have at least a startDate. |
| referenceDate | string | – | The reference date for the 12-month rolling window (YYYY-MM-DD). Defaults to today. Typically the anticipated C&P exam date. Must be a real calendar date; an unparseable value is rejected. |
No output schema declared.
No examples provided.
check_presumptive_eligibility Check presumptive eligibility ~252
Use this when a veteran asks whether a condition is presumptively service connected, or which conditions are presumptive for a given exposure or service era. Returns matching presumptive conditions with the service era, exposure type, required service, legal authority and evidence needed for each. At least one of condition, serviceEra or exposureType is required. Filters combine with AND: condition plus exposureType or serviceEra narrows to their intersection, and each filter needs at least one word of three or more characters or the query is refused. An empty result means no entry satisfies that exact combination, not that the condition is non-presumptive. Whether a particular veteran meets the service requirement depends on service records this tool does not read.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | – | Condition to check for presumptive status (e.g., "Parkinson's disease", "Hypertension"). |
| exposureType | string | – | Known toxic/environmental exposure (e.g., "Agent Orange", "burn pits", "Camp Lejeune water"). |
| serviceEra | string | – | Service era or conflict (e.g., "Vietnam", "Gulf War", "Post-9/11") for era-specific presumptives. |
No output schema declared.
No examples provided.
compare_rating_criteria Compare rating criteria ~226
Use this when a veteran names a VA diagnostic code and wants the rating criteria for it. Returns the VASRD criteria on file for that code at every tier, highest percentage first, with the condition name, body system and 38 CFR reference, so the findings each tier requires can be read side by side. It takes a diagnostic code rather than a condition name, and returns an empty result for a code that is not in the criteria table. Every response carries a source block: the 38 CFR reference for the code, a link to the current rating schedule at the publisher, and a scheduleSnapshot whose retrievedAt is the date this text was read from eCFR. That date is null here, with a note saying it is not recorded, so the criteria are usable as the schedule on file and the current text governs where the two differ. It is not a lookup of what a rating pays and it does not combine ratings.
| Name | Type | Req | Description |
|---|---|---|---|
| diagnosticCode | string | yes | VA diagnostic code (e.g., "8100" for migraines, "5260" for knee). |
No output schema declared.
No examples provided.
compute_retroactive_pay Estimate retroactive back pay ~519
Use this when a veteran gives an effective date and a rating increase and asks what the retroactive amount would be. Returns an estimate of the difference in monthly compensation for each month of the period, with a per-month breakdown, the assumptions behind it, and its own disclaimer. Under 38 CFR 3.31 payment starts on the first day of the month FOLLOWING the month the award became effective, with no exception when the effective date is itself the first of a month, and the period runs through the month of adjudication, which is counted in full. VA rate tables take effect on December 1, so a payment year runs from December 1 through November 30 and December of one year is paid at the next payment year rates. Each month of the breakdown reports the payment year it was paid from (rateYear), that table effective date (rateTableEffectiveDate) and where the table came from (rateSource), and the tables the period drew on are listed once each in rateTables; a published table carries the VA page it was transcribed from, and a reconstructed table carries none, because it is derived rather than transcribed. Monthly rates for payment years 2000 onward are read from VA published rate tables; earlier years are reconstructed from the current published table back-adjusted by the SSA cost-of-living chain, and the result states which of the two the requested period used. A month past the newest published table is served from the newest one available, and the result then reports totalIsExact false with incompleteReason naming those months. The total is an estimate either way, because dependent status is taken as constant across the period. It handles an increase only: the new rating has to be higher than the previous one, and effective dates before 1990 are refused. It does not set an effective date and it does not report an amount VA has authorized.
| Name | Type | Req | Description |
|---|---|---|---|
| adjudicationDate | string | – | ISO date the rating decision was issued. Defaults to today. |
| dependentCount | number | yes | Number of dependent children under 18. |
| effectiveDate | string | yes | ISO date YYYY-MM-DD of rating change effective date. |
| fromRating | number | yes | Previous VA rating percentage (0-100). |
| hasSpouse | boolean | yes | Whether the veteran was married during the period. |
| isTdiu | boolean | – | Whether the new rating includes TDIU (treats as 100% for $). |
| toRating | number | yes | New VA rating percentage (0-100). |
No output schema declared.
No examples provided.
find_claim_help Find free and accredited claim help ~1,026
Use this when a veteran asks who can help them with a VA disability claim, or when they describe a crisis. The Veterans Crisis Line comes first, in full, when need is crisis, and no other need returns crisis content. Setting urgent true puts the veteran’s first action at the top of routeNow and does not change the crisis routing. Every result carries accredited representation routes: VA accredited Veterans Service Organizations, whose services on VA benefit claims are free, and accredited attorneys and claims agents, who may charge fees only for representation provided after VA issues notice of an initial decision on the claim (38 CFR 14.636(c) and 38 U.S.C. 5904(c)(1)). It also returns the VA Office of General Counsel accreditation search and the VA.gov find a representative tool, the state or territory veterans agency matching a two-letter state code, VA phone numbers suited to the need, the documents worth bringing, and links to the VA forms that need points at. It names no individual, firm or private directory. It does not prepare, submit or file any form, and it reads no account data, so the answer is the same for every caller with the same inputs. A two-letter code with no agency on file returns stateAgency null and coverage.stateResolved false, with the national routes unchanged. The askedFor argument carries the veteran’s own words. It does not change the routing and does not withhold it: a request that this tool or the model calling it act as the veteran’s attorney, agent or representative before VA, a request to supply words for a veteran or a clinician to use, which covers asking for a personal, buddy or lay statement, a statement in support, or a nexus letter the veteran already has to be rewritten, polished, tightened or cleaned up, to choose a decision review lane for the veteran, or to prepare or file a claim returns status ok with the same findings, plus a boundary object whose kind names the primary boundary crossed and whose kinds lists every boun…
| Name | Type | Req | Description |
|---|---|---|---|
| askedFor | string | – | What the veteran asked for, in their own words, when they are available. It changes nothing about the routing and never withholds it. A request that this tool act as the veteran's representative, att… |
| need | string | yes | What the veteran is trying to do. Use general when the veteran has not said, and crisis when they describe a mental health emergency. |
| state | string | – | Two-letter US state or territory code, for example CA, TX or PR. Adds that state veterans agency to the answer. Omit it when the veteran has not said where they live. |
| urgent | boolean | – | True when the request is time sensitive, for example a letter, an exam notice or a date the veteran is worried about. It puts their first action at the top of the answer. It does NOT change the crisi… |
No output schema declared.
No examples provided.
find_secondary_conditions Find secondary conditions ~147
Use this when a veteran names a service-connected condition and asks what other conditions can follow from it. Returns conditions on file as medically linked to that primary condition, each with the strength of the supporting evidence, the medical rationale, key studies, filing notes and the diagnostic codes involved. An empty result means nothing is on file for that search term, not that no link exists. It does not diagnose, it does not establish that a particular veteran's condition is secondary, and it does not supply the medical nexus opinion a secondary claim needs.
| Name | Type | Req | Description |
|---|---|---|---|
| primaryCondition | string | yes | Primary service-connected condition to search against (e.g., "PTSD", "Lumbar strain"). Partial matches supported. |
No output schema declared.
No examples provided.
lookup_compensation_rate Look up monthly compensation rate ~212
Use this when a veteran wants the monthly VA disability compensation amount for a given rating percentage and dependent situation. Returns the monthly and annual amounts from the VA compensation rate table in effect, with the rate year and effective date. The rating is read to the nearest 10 percent, and dependents change the amount only at 30 percent and above. Children are counted as children under 18; school-age children 18 to 23, dependent parents and aid and attendance are outside what it models. It gives the published rate for that combination, not what a specific veteran is paid, and it is not a back-pay calculation for a past period.
| Name | Type | Req | Description |
|---|---|---|---|
| childrenCount | number | – | Dependent children under 18. Affects rates at 30%+. Defaults to 0. |
| hasSpouse | boolean | – | Whether veteran has a spouse. Affects rates at 30%+. Defaults to false. |
| rating | number | yes | Disability rating percentage (0–100, rounded to nearest 10). |
No output schema declared.
No examples provided.
prepare_cp_exam Prepare for a C&P exam ~201
Use this when a veteran has a VA compensation and pension examination scheduled for a condition and wants to know what it involves. Returns the examination type and typical length, what the examiner does, the questions examiners commonly ask, the Disability Benefits Questionnaire sections that apply, and records worth bringing. It does not return advice about what to describe, emphasize or omit at the examination. For a condition with a guide on file it also returns the rating tiers for that condition's diagnostic code, which is what the examiner's findings are scored against; any other condition returns a general exam guide. Educational reference about the examination process. It does not schedule, reschedule or contact VA, and the examiner's findings and VA decide the rating.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | yes | Condition being examined (e.g., "PTSD", "knee", "sleep apnea", "tinnitus"). |
| currentRating | number | – | Current rating if already rated (for increase exams). Optional. |
No output schema declared.
No examples provided.
search_legal_authority Search case law and regulations ~945
Use this when a question calls for the text of a VA rating regulation, the wording of a legal standard, or case law, searched by keyword, by exact citation, or by diagnostic code. Returns 38 CFR rating criteria for matching conditions; doctrine entries quoted verbatim from the regulation, statute or decision they come from, each with pinpoint citations, the date the text was captured, when that text took effect, and the reviewed holdings that construe it; and excerpts from Court of Appeals for Veterans Claims decisions with docket number, case name and relevance score. CAVC decisions are binding precedent for the Board of Veterans' Appeals. The citation parameter takes a section such as "3.310", "38 CFR 3.310(b)" or "38 U.S.C. 5107(b)", and a citation that cannot be read as a section matches nothing rather than being guessed at. A citation on its own is a complete call: query is optional when citation is supplied, and a call carries query, citation, or both. The limit parameter caps results per source, default 5 and maximum 10; the doctrine block is capped at four entries per response and reports the true total. The status field describes the answer in one of four words. "ok" means every component answered and this response carries each matched result it selected. "partial" means a matched result is missing from it, whether shed for the size budget, withheld as a criterion text too long to fit, or unreachable because a component could not complete its search. "no_match" means every component answered and none of them matched. "unavailable" means a component did not answer, so nothing in that response is readable as an absence of authority. statusReason gives the reason for that word in one sentence, derived from the same values as the word itself. A truncation object reports what was shortened, whatever the status: doctrinePropositionsTrimmed counts entries serving their first propositions while reporting their own true total, textBounded says a criterion text was…
| Name | Type | Req | Description |
|---|---|---|---|
| citation | string | – | Exact citation to look up (e.g., "3.310", "38 CFR 3.310(b)", "4.16", "38 U.S.C. 5107(b)"). Sufficient on its own: a call with only a citation is answered as a citation lookup. A citation that cannot… |
| diagnosticCode | string | – | Filter by diagnostic code (e.g., "8100"). |
| limit | number | – | Max results (default 5, max 10). |
| query | string | – | Search query (e.g., "PTSD secondary to MST", "DC 8100 migraine 50 percent criteria", "CUE in combined rating calculation"). Optional when citation is supplied; supply query, citation, or both. |
No output schema declared.
No examples provided.
What is the VeteranHQ MCP server?
VeteranHQ is an MCP server listed in the public MCP registry as app.veteranhq/va-disability-benefits. VA disability rating and compensation calculations, condition lookup, and 38 CFR authority search. This page covers its hosted endpoint (https://api.veteranhq.app/mcp).
Is the VeteranHQ MCP server safe to use?
VeteranHQ scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the VeteranHQ MCP server expose?
VeteranHQ exposes 11 tools: calculate_combined_rating, compare_rating_criteria, analyze_rating_gap, calculate_rolling_window, find_secondary_conditions, and 6 more. Their descriptions and schemas cost roughly 4,764 tokens of context every time the server is loaded.
Does the VeteranHQ MCP server require authentication?
No. We connected to VeteranHQ without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the VeteranHQ MCP server still maintained?
VeteranHQ is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.