# count_filings_by_period

Counts U.S. trademark applications filed across the whole register in a date range, grouped by calendar year, month or day, with each period split into U.S.-filed and Madrid Protocol (79-series) applications and the change from the previous period. Answers questions such as how many trademark applications were filed in 2025 and how that compares with 2024, or which month of a year had the most filings. Counts are one per serial number by the filing date on the USPTO record; they are calendar periods, not USPTO fiscal-year statistics, and not class counts. Returns data_through, the latest filing date on the register; recent periods grow as late records arrive.

Agent View of the PolicyLayer registry record for `count_filings_by_period`. HTML page: https://policylayer.com/tools/com-gleanmark-trademark-search/count-filings-by-period

## Facts

- Tool: `count_filings_by_period`
- Server: GleanMark Trademark Search (`https://gleanmark.com/mcp`) — https://policylayer.com/tools/com-gleanmark-trademark-search.md
- Homepage: https://github.com/https://gleanmark.com/mcp
- Risk category: Read (Low risk)
- Registry record: grade D, identity unverified
- Server auth posture: open
- Server CORS policy: *
- Server rate-limited: yes
- Parameters: 3 (2 required)
- Recommended policy verdict: Allowed

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `end_date` | string | yes | Last filing date to count, YYYY-MM-DD, inclusive (e.g. 2025-12-31). |
| `group_by` | string | no | Period size. Daily counts cover at most about a year. |
| `start_date` | string | yes | First filing date to count, YYYY-MM-DD (e.g. 2024-01-01). |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "count_filings_by_period",
    "arguments": {
      "end_date": "<end_date>",
      "start_date": "<start_date>"
    }
  }
}
```

## Why count_filings_by_period is rated Low

Even though count_filings_by_period only reads data, uncontrolled read access leaks sensitive information and racks up API costs: an agent caught in a retry loop can make thousands of calls a minute without anyone noticing.

## Use case

AI agents call count_filings_by_period to retrieve information from GleanMark Trademark Search without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.

## Recommended policy (PolicyLayer)

Verdict: **Allowed**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches GleanMark Trademark Search:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "count_filings_by_period": {}
  }
}
```

## Other tools on GleanMark Trademark Search (63)

- `run_knockout_search` — Execute — https://policylayer.com/tools/com-gleanmark-trademark-search/run-knockout-search.md
- `run_safe_analytics` — Execute — https://policylayer.com/tools/com-gleanmark-trademark-search/run-safe-analytics.md
- `analyze_prosecution_history` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/analyze-prosecution-history.md
- `analyze_ttab_proceeding` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/analyze-ttab-proceeding.md
- `check_brand_availability` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/check-brand-availability.md
- `check_domain_availability` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/check-domain-availability.md
- `compare_marks` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/compare-marks.md
- `count_trademarks_by_attributes` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/count-trademarks-by-attributes.md
- `fetch` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/fetch.md
- `get_chain_of_title` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-chain-of-title.md
- `get_class_relationships` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-class-relationships.md
- `get_cohort_event_intervals` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-cohort-event-intervals.md
- `get_correspondent_marks` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-correspondent-marks.md
- `get_correspondent_specialization` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-correspondent-specialization.md
- `get_deadline_satisfaction_mapping` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-deadline-satisfaction-mapping.md
- `get_event_code_reference` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-event-code-reference.md
- `get_event_status_mapping` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-event-status-mapping.md
- `get_fame_profile` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-fame-profile.md
- `get_firm_correspondent_tasks` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-firm-correspondent-tasks.md
- `get_firm_deadlines` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-firm-deadlines.md
- `get_firm_oa_outcomes` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-firm-oa-outcomes.md
- `get_firm_top_correspondents` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-firm-top-correspondents.md
- `get_latest_office_action` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-latest-office-action.md
- `get_mark_ai_summary` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-mark-ai-summary.md
- `get_mark_deadlines` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-mark-deadlines.md
- `get_mark_international_profile` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-mark-international-profile.md
- `get_mark_owner_landscape` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-mark-owner-landscape.md
- `get_mark_prosecution_summary` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-mark-prosecution-summary.md
- `get_nice_classes` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-nice-classes.md
- `get_owner_ai_summary` — Read — https://policylayer.com/tools/com-gleanmark-trademark-search/get-owner-ai-summary.md
- …and 33 more: https://policylayer.com/tools/com-gleanmark-trademark-search.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-gleanmark-trademark-search · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-gleanmark-trademark-search
