# Plant

Local plant taxonomy search backed by the WFO Plant List dump in PostgreSQL. Resolve synonyms to accepted names, lookup by wfo_id, and full-text / fuzzy search. Does not call POWO or other live web APIs.

**Service id:** `plant`  
**Version:** `0.1.0`  
**Status:** `available`

## Authentication

MCP endpoint: `https://mcp.glc-rag.hu/mcp` (streamable HTTP)

**Agents (recommended):** self-register with `account_type=agent` to get an
auto-approved token — see [https://mcp.glc-rag.hu/guide/agent](https://mcp.glc-rag.hu/guide/agent).

Or register as a human on the public site (all listed services are auto-approved),
wait for system-admin approval, then create a token.

```http
Authorization: Bearer mcp_...
```

Cursor `mcp.json` example:

```json
{
  "mcpServers": {
    "plant": {
      "url": "https://mcp.glc-rag.hu/mcp",
      "headers": {
        "Authorization": "Bearer mcp_YOUR_TOKEN"
      }
    }
  }
}
```

## Tools

### `plant_search`

Full-text / fuzzy search over accepted plant taxa (local WFO index). Optional family, genus, rank filters.

**Input schema:**

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Scientific or name fragment to search",
      "maxLength": 200
    },
    "family": {
      "type": "string",
      "description": "Filter by family"
    },
    "genus": {
      "type": "string",
      "description": "Filter by genus"
    },
    "rank": {
      "type": "string",
      "description": "Filter by rank (species, genus, \u2026)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
```

**Examples:**

```json
{
  "query": "Quercus robur"
}
```

```json
{
  "query": "Hypericum",
  "family": "Hypericaceae",
  "limit": 5
}
```

### `plant_lookup`

Lookup one taxon by wfo_id or exact scientific name.

**Input schema:**

```json
{
  "type": "object",
  "properties": {
    "wfo_id": {
      "type": "string",
      "description": "WFO taxon id, e.g. wfo-0000000000"
    },
    "name": {
      "type": "string",
      "description": "Exact scientific name (resolved to accepted)"
    }
  },
  "additionalProperties": false
}
```

**Examples:**

```json
{
  "name": "Quercus robur L."
}
```

```json
{
  "wfo_id": "wfo-0000292304"
}
```

### `plant_resolve`

Resolve a name or synonym to accepted taxon candidates (trigram similarity over all WFO names).

**Input schema:**

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
```

**Examples:**

```json
{
  "query": "Triticum vulgare"
}
```

### `plant_status`

Plant DB health, import version, row counts (free).

**Input schema:**

```json
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
```

**Examples:**

```json
{}
```

## Usage notes

Typical flow: plant_resolve or plant_search → take wfo_id → plant_lookup. Optional filters on plant_search: family, genus, rank. plant_status is free. Attribution: WFO Plant List (CC0).

## Errors / limits

Empty query → empty results. Unknown name → empty/null. DB unavailable → is_error. Invalid API key → platform 401.

## Agent discovery

- Agent registration: `https://mcp.glc-rag.hu/guide/agent`
- Markdown: `https://mcp.glc-rag.hu/guide/plant.md`
- Index: `https://mcp.glc-rag.hu/llms.txt`
- MCP resource: `docs://plant`
