# zotero_attach_file

A write tool on the Zotero MCP MCP server.

Agent View of the PolicyLayer registry record for `zotero_attach_file`. HTML page: https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-attach-file

## Facts

- Tool: `zotero_attach_file`
- Server: Zotero MCP (`pypi:zotero-mcp-server`) — https://policylayer.com/tools/54yyyu-zotero-mcp.md
- Install: `npx -y pypi:zotero-mcp-server`
- Homepage: https://github.com/54yyyu/zotero-mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

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

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zotero_attach_file",
    "arguments": {}
  }
}
```

## Why zotero_attach_file is rated Medium

Attaching files to Zotero items creates new associations and modifies item metadata/structure, making this a Write operation rather than Read. It is reversible (files can be detached), so it is not Destructive.

From the tool's own definition: "Tool name 'zotero_attach_file' indicates it performs a file attachment operation. In the context of a Zotero research library, attaching files modifies library items by adding or updating file associations, which is a reversible write operation."

## Use case

AI agents use zotero_attach_file to create or update resources in Zotero MCP, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Zotero MCP environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Zotero MCP:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "zotero_attach_file": {
      "limits": [
        {
          "counter": "zotero_attach_file_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Zotero MCP (54)

- `zotero_delete_annotation` — Destructive — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-delete-annotation.md
- `zotero_delete_collection` — Destructive — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-delete-collection.md
- `zotero_delete_item` — Destructive — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-delete-item.md
- `zotero_remove_item_relation` — Destructive — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-remove-item-relation.md
- `fetch` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/fetch.md
- `scite_check_retractions` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/scite-check-retractions.md
- `scite_enrich_item` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/scite-enrich-item.md
- `scite_enrich_search` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/scite-enrich-search.md
- `search` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/search.md
- `zotero_advanced_search` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-advanced-search.md
- `zotero_authorize_local_writes` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-authorize-local-writes.md
- `zotero_export_bibliography` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-export-bibliography.md
- `zotero_find_duplicates` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-find-duplicates.md
- `zotero_find_related_papers` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-find-related-papers.md
- `zotero_get_annotations` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-annotations.md
- `zotero_get_attachment_path` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-attachment-path.md
- `zotero_get_collection_items` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-collection-items.md
- `zotero_get_collections` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-collections.md
- `zotero_get_feed_items` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-feed-items.md
- `zotero_get_item_children` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-item-children.md
- `zotero_get_item_fulltext` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-item-fulltext.md
- `zotero_get_item_metadata` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-item-metadata.md
- `zotero_get_item_related` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-item-related.md
- `zotero_get_notes` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-notes.md
- `zotero_get_page_layout` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-page-layout.md
- `zotero_get_pdf_outline` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-pdf-outline.md
- `zotero_get_recent` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-recent.md
- `zotero_get_search_database_status` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-search-database-status.md
- `zotero_get_tags` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-get-tags.md
- `zotero_library_coverage` — Read — https://policylayer.com/tools/54yyyu-zotero-mcp/zotero-library-coverage.md
- …and 24 more: https://policylayer.com/tools/54yyyu-zotero-mcp.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=54yyyu-zotero-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/54yyyu-zotero-mcp
