Skip to content

/tavily-entity

Fill in a company, person, or organization for a CRM from the web, using Tavily, including a CSV of rows the user already has. Identifies the right entity when others share the name, then fills the fields from authoritative sources. Use when the user wants to enrich an account,

From plugin
tavily
4906 skills1 MCP

Claude Code

$ npx -y skills add tavily-ai/skills --skill tavily-entity --agent claude-code

SKILL.md

tavily-entity.SKILL.md
name: tavily-entity
description: |
  Fill in a company, person, or organization for a CRM from the web, using Tavily, including a CSV of rows the user already has. Identifies the right entity when others share the name, then fills the fields from authoritative sources. Use when the user wants to enrich an account, a spreadsheet, or a pasted list of known names, or says "enrich", "CRM", or "who is". For discovering matches use tavily-list. For a deep comprehensive report use tavily-research.
allowed-tools: Bash(tvly *)

Tavily entity

Resolve one entity and return a CRM record. The name is not the identity. Confirm which entity it is, then fill the record from authoritative sources. Every value comes from a page you read. An empty field stays empty.

Search and extract as `tavily-search` describes; load it only if it isn't loaded yet. To discover new matches use `tavily-list`; for a deep report use `tavily-research`.

Identify the entity first

People and companies share names. A record that mixes two of them is worse than an empty one. Isolate a single entity before you fill any field.

1. Take the type (company, person, or organization) and every identifier the user already gave: a domain, a city, an employer, a title, a product. 2. Search the name and look for other entities that use it. A common name, a name that is also a product or a place, or a person with a common name is a collision until you prove otherwise. 3. You have the right entity only when two identifiers agree. For a company, the name plus its own domain. For a person, the name plus an employer, a location, or a profile they control, and the organization on that profile has to match. One page that mentions the name is not identification. 4. If more than one entity still fits, stop and return the candidates. Do not pick the one with more results, and do not copy a field from one candidate onto another. 5. Put a stable identifier, the domain or the employer, into every later search, not the bare name.

Read authoritative sources

Fill a field from the page that owns the fact. Extract that page. A snippet is not enough for a number.

  • The entity's own site, an official profile, and a filing or registry come

first for facts the entity publishes: what it is, where it is, who leads it, what it sells. For a person, the employer's team page or a profile the person controls comes before a people-search site.

  • A directory, a data broker, or a roundup is a lead to that page. Use it as

the source of a field only when no authoritative page states the fact, and say so in the source note.

  • When two authoritative pages disagree on a number, keep the more direct one

and record the other in the source note. Do not average them.

  • Include a published email or phone number only when a page shows it.

Extract the pages that own the fields you need in one call. Search for recent news, with the domain or employer in the query, only when the user wants recent signals or a full record.

A CSV of known rows

When the user already has the entities, in a file or a pasted table, enrich those rows. Do not go looking for new names.

1. Read the rows and count them. Use the fields they named. If they did not name fields, ask once, then use the same fields on every row. 2. Above 25 rows, tell them the count and the fields and wait for a go-ahead. 3. For each row, follow Identify the entity first and Read authoritative sources. A row you cannot isolate stays unresolved: blank new fields, a note on what collided, and no guessed values. 4. Write the original columns plus the new fields, a source for each new field, and a status of `filled` or `unresolved` to `{name}-enriched-{YYYY-MM-DD}.csv`. Use a CSV writer.

The CSV is the result. In the reply, give the number filled, the number unresolved, and the path. Do not paste a record per row.

Output

When the user asked specific questions, answer those in the reply, with a source for each value, and skip the template. For a full record, use this:

# {Name}

type: company | person | organization
identified by: {domain, employer, or other stable identifier}
as_of: {YYYY-MM-DD}

| Field | Value | Source |
|---|---|---|
| website | | |
| description | | |
| industry | | |
| headquarters | | |
| founded | | |
| employees | | |
| funding | | |
| revenue | | |
| linkedin | | |

## People
| Name | Title | Source |
|---|---|---|

## Recent signals
- {YYYY-MM-DD}: {fact} — {url}

## Unknown
- {field}: {what you tried}

For a person, the field rows are title, organization, location, and profile URL, and People appears only when the user asked for related people. Drop a field row that does not apply to this type. A field that applies and could not be filled stays in the table with a blank value and a line under Unknown. Description is one or two sentences grounded in the about page or profile. Recent signals are at most five dated items: funding, a launch, a leadership change, hiring. Omit a section that has no rows.

When you cannot pick one entity:

# {Query}

| Name | Website | What separates it from the others |
|---|---|---|
Read more
@tavily-ai
Ships withtavily

Web search, content extraction, site crawling, URL discovery, and deep research — powered by the Tavily CLI.

Stars on GitHub

Momentum

stars in total
490
Star history of tavily-ai/skills on GitHub, a chart by star-history.com

Other skills on tavily.

tavily-search
Auto-invoked

tavily-search

Use this skill whenever a task needs the web: searching for information, checking current facts or news, finding sources, reading…

@tavily-ai@tavily-aiInstall Skill
tavily-sdk
Auto-invoked

tavily-sdk

Build production-ready Tavily integrations with best practices baked in. Reference documentation for developers using coding…

@tavily-ai@tavily-aiInstall Skill
tavily-list
Auto-invoked

tavily-list

Build a deduplicated table of matches for a set, using Tavily. The table is what search returned, not every match that exists.…

@tavily-ai@tavily-aiInstall Skill
tavily-monitor
Auto-invoked

tavily-monitor

Build a Tavily search or extraction that runs on a cadence, with a saved baseline. Search monitors set max_age_hours to the…

@tavily-ai@tavily-aiInstall Skill
tavily-research
Auto-invoked

tavily-research

Research a topic in depth with Tavily. Use this skill when a question needs many sources gathered and weighed together: analysing…

@tavily-ai@tavily-aiInstall Skill

More skills from other plugins.

academic-paper-review

academic-paper-review

Use this skill when the user requests to review, analyze, critique, or summarize academic papers, research articles, preprints,…

@bytedance@bytedanceInstall Skill
last30days

last30days

Research what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube,…

@mvanhorn@mvanhornInstall Skill

Questions about tavily-entity.

Which coding agents can use tavily-entity?
tavily-entity installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.