# What is an "Agent" in Specify?

**URL:** <https://speciforum.org/t/what-is-an-agent-in-specify/2884>\
**Category:** Documentation\
**Tags:** Specify-7\
**Created:** [September 15, 2025, 4:24pm UTC](https://speciforum.org/t/what-is-an-agent-in-specify/2884 "2025-09-15T16:24:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Grant](https://yyz1.discourse-cdn.com/flex029/user_avatar/speciforum.org/grant/32/4255_2.png) [@Grant](https://speciforum.org/u/Grant)\
**Post date:** [September 15, 2025, 4:24pm UTC](https://speciforum.org/t/what-is-an-agent-in-specify/2884/1 "2025-09-15T16:24:08Z")

</div>

> 📖 This guide defines what an agent is, what types of agents there are in Specify, and what role agents play in data attribution. It also explains what data is stored with an agent, what roles agents play in transactions, and how “Group” and “Organization” agents are structured.

# Understanding Agents in Specify

In Specify, the **Agent** record is one of the most fundamental and versatile concepts. An Agent is not just a person; it’s the central record used to store information about any **person, group, or organization** that interacts with your collection data. Properly managing Agent records is key to tracking attribution, contact information, and relationships throughout your database.

**Agents** are specific to each division, see [Specify Institutional Scopings](https://speciforum.org/t/specify-institutional-scopings/1046) for more information.

* * *

### Types of Agents

Every Agent record is defined by a type, which determines how it’s used:

- **Person:** This is the most common type, representing an individual. Person records are used to attribute activities like collecting, identifying, preparing, or donating specimens. They store personal details such as first and last names, job titles, and contact information.

- **Organization:** This type represents a formal institution, agency, or company. Examples include universities, museums, government bodies, or funding agencies. Organizations can be structured hierarchically; for instance, you can create an Agent for a university and another for a specific department, linking the department to its parent university.

- **Group:** This type is used to represent a collection of individuals, such as an expedition team, a committee, or a family. A ‘Group’ agent is essentially a container that can be linked to multiple ‘Person’ agents. This is useful when you need to credit an entire team for a collecting event without listing each member individually every time.

- **Other:** This type includes any agent that does not conform to the previous definitions. This is the least common type.

* * *

### Information Stored with an Agent

Beyond the basic name and type, an Agent record serves as a hub for related information, providing a complete profile:

- **Addresses:** An agent can have multiple addresses (e.g., mailing, shipping, office) with start and end dates.
- **Identifiers:** You can store unique, persistent identifiers for agents, such as an [ORCID, Wikidata, or other global or institutional IDs](https://speciforum.org/t/add-links-from-agent-to-orcid-bionomia-wikidata-and-more/1985). This is crucial for linking data across different systems.
- **Specialties:** You can list their areas of taxonomic or scientific expertise.
- **Variant Names:** This allows you to record alternate names, such as aliases, former names, or names in different languages.
- **Attachments:** You can attach files directly to an Agent record, such as a CV, a photograph, or scanned correspondence.

* * *

### The Role of Agents in Data Attribution

The primary function of Agents is to provide **attribution**. Nearly every record in Specify that documents an action—from creating a record to collecting a specimen—is linked to an Agent. This creates a detailed history of who did what and when.

Common roles for Agents include:

- **Collector** on a Collecting Event
- **Determiner** for a taxonomic identification
- **Preparator** of a specimen
- **Donor** or contact on an Accession
- **Borrower** or **Lender** on a Loan transaction
- **Creator** (`CreatedByAgentID`) and **Modifier** (`ModifiedByAgentID`) of any data record

By consistently using and linking to Agent records, you ensure your collection data is rich with the history and context of the people and institutions who built and managed it. As a best practice, **always search for an existing Agent** before creating a new one to avoid creating duplicates. If duplicates are introduced, administrators can use the [Record Merging](https://speciforum.org/t/record-merging/1324) tool to reconcile duplicates.

* * *

### Agents in Transactions

Beyond simple attribution, Agents are essential for managing complex transactions like loans and gifts, which often involve multiple parties. Specify handles this using dedicated linking tables that define the **role** each agent plays.

When you create a **Loan** or **Gift** record, you don’t just link to one agent; you can link to many. Tables like `loanagent` and `giftagent` connect the transaction record to different Agent records, each with a specific role.

For example, on a single Loan, you can have:

- An **Organization** Agent with the role of “Lender”.
- A **Person** Agent (the curator at that organization) with the role of “Authorized By”.
- Another **Organization** Agent with the role of “Borrower”.
- Another **Person** Agent with the role of “Recipient”.

* * *

### How Group & Organization Agents are Structured

The power of “Group” and “Organization” agents comes from how they are associated with other agents in the database.

#### Organizations and Hierarchies

Organizational structures are created through a direct relationship within the `agent` table itself. You can add a field called **Organization** to the Agent form. This field can link one agent to another agent that is an “Organization” type.

This creates a parent-child hierarchy, which is useful for modeling real-world structures:

- A **Person** agent for a staff member can have their employer as the “Organization” (link to another Agent record).
- An **Organization** agent for a university department can have the university’s main record as its"Organization" (link to another Agent record).

This structure allows you to build out a full institutional hierarchy and see all the people and sub-units associated with an organization.

#### Groups and Memberships

Group associations are managed using a dedicated linking table called ‘Group Person’. This table creates a many-to-many relationship between “Group” type agents and “Person” type agents. The ‘Group Person’ table links the agent with the appropriate agent “Group”.

A person can be a member of _multiple groups_, and a group can have _many members_. When you attach a “Group” agent as the collector on a collecting event, you are implicitly associating all of its members with that event as well.
