# `com.1102tools/regulations-gov-mcp` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/com.1102tools/regulations-gov-mcp
- JSON: https://anlyon.dev/api/v1/servers/com.1102tools/regulations-gov-mcp
- Version: 2.0.8 (active)
- Publisher: com.1102tools (domain proven to the MCP Registry)
- Runs: remote (streamable-http), local (pypi)
- Sign-in to list tools: none
- Repository: https://github.com/1102tools-dev/federal-contracting-mcps
- Metadata from the official MCP Registry, synced 2026-10-21T21:17:38.658Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Regulations.gov
Regulations.gov readiness, rulemaking dockets, documents, comments, and comment periods. 9 tools.
```

Scanned 2026-10-21T21:17:53.604Z over streamable-http.

**9 tools: 1 change things and 8 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 1 | ask |
| Only reads | read | 8 | allow |

## Findings

- **info** The word "credentials" in `get_access_status` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The description mentions "credential".

description: "Check Regulations.gov credential presence without returning or validatin..."
```

- **info** Long descriptions in `search_documents` ([long-description](https://anlyon.dev/methodology#long-description))

```untrusted-server-text
The description is 2,245 characters long, over the 2,000 this check looks for.

description ends: "...'. Comma-separate for multi-field sorts ('lastModifiedDate,documentId')."
```

- **warn** Annotations that disagree with the tool in `open_comment_periods` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "open_comment_periods" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "open_comment_periods" says "open": a word for a change.
```


## Changes things (1)

Creates or changes something that can be changed back. Claude Code: ask.

### `open_comment_periods`

- The name "open_comment_periods" says "open": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Find documents Regulations.gov reports as open for comment.

    Searches for documents where withinCommentPeriod=true, sorted by
    soonest reported closing date (ascending commentEndDate). Page 1 holds
    the earliest metadata dates; verify the notice before planning a submission. Returns document IDs, titles,
    agencies, document types and subtypes, Federal Register document
    numbers, comment deadlines, docket IDs, and the API-true total_open.
    comment_deadline is the Regulations.gov metadata date in Eastern time
    (e.g. 'Oct 22, 2026 11:59 PM ET'); comment_end_date_utc preserves its UTC
    instant. comment_deadline_verification links to the notice/docket. Read
    DATES, eligibility, and later extensions before treating it as controlling;
    if those sources are unavailable, the controlling date is not established.
    When more documents exist, truncated=true and next_page_number gives
    the page that continues the list (later pages have later reported dates).

    page_size: 5-100 documents per page (default 25). page_number: 1-40.

    Default searches FAR, DARS, GSA, SBA, OFPP, DOD, NASA, VA in a single
    comma-joined query. Pass agency_ids to narrow or expand the scope. An
    empty list is rejected; pass None to use the defaults. Most open DOD and
    VA documents are Paperwork Reduction Act and Privacy Act notices; for
    rules only, pass document_type='Proposed Rule' (exact casing).
    
```

## Only reads (8)

Looks things up and changes nothing. Claude Code: allow.

### `far_case_history`

- The description's first verb is "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Get the lifecycle of a FAR/DFARS rulemaking case, summary first.

    Returns the docket metadata (title, abstract, RIN linking to the
    Unified Agenda), the docket's total document count, counts by document
    type and of documents open for comment across the whole docket, and one
    page of its documents, most recent first, with types, subtypes, Federal
    Register document numbers, dates, and URLs. subtype tells a withdrawal,
    extension, or correction apart from a new proposed rule (a withdrawal
    keeps document_type 'Proposed Rule').
    comment_deadline is the Regulations.gov metadata date in Eastern time;
    comment_end_date_utc preserves its UTC instant. comment_deadline_verification
    links to the notice/docket. Read DATES, eligibility, and later extensions
    before treating it as controlling; if unavailable, the controlling date
    cannot be established. Page 1 also gives
    posted_comments for the whole docket: comments posted publicly, not
    comments received (mass-mail duplicates and unposted comments are not
    in it).
    When the docket has more documents, truncated=true and next_page_number
    gives the page that continues the list.

    page_size: 5-100 documents per page (default 25). page_number: 1-40.

    docket_id examples: FAR-2023-0008, DARS-2025-0071
    
```

### `get_access_status`

- The name "get_access_status" says "get": a word for reading.
- Findings: info credentials-mention

Description, as the server wrote it:

```untrusted-server-text
Check Regulations.gov credential presence without returning or validating it.
```

### `get_comment_detail`

- The name "get_comment_detail" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Get full details for a single comment.

    Returns the comment text field, organization, submitter info (if public),
    tracking number, and duplicate comment count. Many comments put their
    substance in attachments and the text field only says "See attached";
    include_attachments=True returns the attachment download URLs.

    Some fields (firstName, lastName, organization) are agency-configurable
    and may be hidden. The comment text comes back as plain text (HTML
    breaks become newlines; tags and entities are decoded).
    
```

### `get_docket_detail`

- The name "get_docket_detail" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Get full details for a single docket.

    Returns title, abstract, RIN (links to Unified Agenda), agency,
    keywords, and modification date.

    docket_id format: FAR-2023-0008, DARS-2025-0071, SBA-2024-0002
    
```

### `get_document_detail`

- The name "get_document_detail" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Get full details for a single Regulations.gov document.

    Returns fileFormats (download URLs), cfrPart, displayProperties, and
    other detail fields not available in search results.

    Set include_attachments=True to get attachment objects with download URLs.

    Comment deadlines: attributes.commentDeadlineEastern is the date reported
    by Regulations.gov metadata in Eastern time (e.g. 'Oct 22, 2026 11:59 PM ET'). The raw
    commentEndDateUtc is the provider UTC instant. commentDeadlineVerification
    links to the notice/docket: read DATES, eligibility, and later extensions
    before treating this metadata date as controlling. If unavailable, the
    controlling deadline cannot be established.

    document_id format: FAR-2023-0008-0023
    
```

### `search_comments`

- The name "search_comments" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Search public comments on Regulations.gov.

    To find comments on a specific document, use comment_on_id with the
    hex objectId from document detail/search results (attributes.objectId,
    e.g. '0900006486531e6b'). The human-readable documentId is REJECTED
    here because the API silently returns 0 comments for it.

    docket_id filters comments to all documents in a docket.

    search_term is a full-text match, including attachment text; results
    follow sort, not relevance. Quote a phrase ('"Professional Services
    Council"') to match it exactly.

    posted_comments (= meta.totalElements) counts comments posted publicly,
    not comments received; mass-mail duplicates and unposted comments are
    not in it, so the agency's received count can be much higher.

    Search rows carry no organization (the API leaves it out), and many
    titles are only "Comment on FR Doc # ...". For "who commented" questions
    set include_organization=True (page_size up to 25): each row gets the
    submitter's organization from its comment detail. Rows without one were
    filed by individuals or the agency hid the field.

    Page size: 5-100; page_number 1-40. Comments sorted by '-postedDate' by
    default. The API serves 40 pages; when more comments match,
    page_limit_note (and truncated=true on page 40) says how many are out of
    reach. Split the query into posted_date_ge/le windows. Most comment text is in attachments; get_comment_detail with
    include_attachments=True returns their download URLs.
    
```

### `search_dockets`

- The name "search_dockets" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Search Regulations.gov dockets.

    Dockets are containers for related regulatory documents (proposed rules,
    comments, supporting materials). FAR cases, DFARS cases, and agency
    rulemaking actions each have a docket.

    docket_type is CASE-SENSITIVE: 'Rulemaking' or 'Nonrulemaking'.

    lastModifiedDate format: 'YYYY-MM-DD HH:MM:SS' (space-separated, NOT ISO).
    This is a Regulations.gov quirk; ISO 8601 is rejected.

    Limited filters: only searchTerm, agencyId, docketType, lastModifiedDate.

    sort: 'title', 'docketId', 'lastModifiedDate'; prefix '-' for descending
    ('-lastModifiedDate' lists the most recently active dockets first).
    Catch-all dockets such as DARS_FRDOC_0001 and SBA_FRDOC_0001 hold
    miscellaneous Federal Register documents and often top that list.

    Page size: 5-100; page_number 1-40. The API serves 40 pages; when more
    dockets match, page_limit_note (and truncated=true on page 40) says how
    many are out of reach. Split the query into last_modified_date_ge/le
    windows.
    
```

### `search_documents`

- The name "search_documents" says "search": a word for reading.
- Findings: info long-description

Description, as the server wrote it:

```untrusted-server-text
Search Regulations.gov documents (proposed rules, final rules, notices).

    Filter values are CASE-SENSITIVE. Use exact casing:
    - document_type: 'Proposed Rule', 'Rule', 'Notice', 'Supporting & Related Material', 'Other'
    - Lowercase values silently return 0 results (no error)

    Key parameters:
    - search_term: full-text match, including attachment text. Results
      follow sort (newest first by default), not relevance, so an unquoted
      multi-word term puts loosely matching recent documents first; quote
      a phrase ('"Pay Equity and Transparency"') to match it exactly.
    - agency_id: FAR, DARS, GSA, SBA, OFPP, DOD, NASA, VA, etc.
      Comma-separate for multiple agencies ('FAR,GSA'). Empty string is rejected.
    - docket_id: e.g., 'FAR-2023-0008' for a specific FAR case
    - within_comment_period: True to find documents currently accepting
      comments. False is NOT supported by the API (it 400s); omit the
      parameter instead to search regardless of comment status.
    - posted_date_ge/le: YYYY-MM-DD format (calendar-checked)
    - comment_end_date_ge/le: YYYY-MM-DD format

    Response meta.facets gives the top counts by document type, agency,
    and comment period status; a facet the query filtered on is left out,
    because the API counts it site-wide. meta.totalElements is the full
    match count.

    Comment deadlines: attributes.commentDeadlineEastern is the date reported
    by Regulations.gov metadata in Eastern time (e.g. 'Oct 22, 2026 11:59 PM ET'). The raw
    commentEndDateUtc is the provider UTC instant. commentDeadlineVerification
    links to the notice/docket: read DATES, eligibility, and later extensions
    before treating this metadata date as controlling. If unavailable, the
    controlling deadline cannot be established.

    Page size: 5-100. page_number: 1-40. The API serves 40 pages; when more
    records match, page_limit_note (and truncated=true on page 40) says how
    many are out of reach. Split the query into posted_date_ge/le windows.

    sort: '-postedDate' (newest first, default), 'postedDate', '-commentEndDate',
    'lastModifiedDate', 'title', 'documentId'. Comma-separate for
    multi-field sorts ('lastModifiedDate,documentId').
    
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `regulations-gov`:

```json
{
  "permissions": {
    "allow": [
      "mcp__regulations-gov__get_access_status",
      "mcp__regulations-gov__search_documents",
      "mcp__regulations-gov__get_document_detail",
      "mcp__regulations-gov__search_comments",
      "mcp__regulations-gov__get_comment_detail",
      "mcp__regulations-gov__search_dockets",
      "mcp__regulations-gov__get_docket_detail",
      "mcp__regulations-gov__far_case_history"
    ],
    "ask": [
      "mcp__regulations-gov__open_comment_periods"
    ],
    "deny": []
  }
}
```
