# Textual A2A skills reference

## pii-detect

Locates sensitive values in a provided text string.

### Input

A text string, optionally prefixed with `/detect`.

The maximum string length is set as the value of the Textual environment variable `SOLAR_A2A_MAX_TEXT_LENGTH`. The default is `500000`.

### Output

A JSON artifact that contains:

* The detected entities. For each entity, the response includes:
  * The entity type.
  * The text of the entity.
  * The start and end location of the entity in the text string.
  * The confidence score for the detection.
* The number of words in the text string.

For example:

{% code overflow="wrap" %}

```json
{
  "DetectTextEntities": [
    { 
       "type": "NAME_GIVEN",
       "text": "Jane",
       "start":  8,
       "end": 12,
       "score": 0.99 
    },
    {
        "type": "EMAIL",
        "text": "jane.doe@example.com"
        "start": 22,
        "end": 42,
        "score": 0.99
     }
  ],
  "ModelBasedEntities": [],
  "FilteredSpans":      [],
  "WordCount":          7
}
```

{% endcode %}

## pii-redact

Replaces sensitive values in a text string with realistic synthesized values.

The maximum string length is set as the value of the Textual environment variable `SOLAR_A2A_MAX_TEXT_LENGTH`. The default is `500000`.

### Input

A text string, optionally prefixed with `/redact`.

### Output

An artifact that contains:

* The redacted text.
* The list of detected entities. This is the same information provided in the output of [`pii-detect`](#pii-detect).

## file-redact

Replaces sensitive values in a standalone file. Supports the following file types:

* PDF
* Image
* Plain text
* Microsoft Office document

Returns the redacted file.

### Input

A message that contains a binary part that consists of:

* The name of the file.&#x20;
* The raw bytes of the file.

The maximum file size is set as the value of the Textual environment variable `SOLAR_A2A_MAX_FILE_SIZE_MB`. The default is 100 MB.

Filenames are sanitized against path traversal (`../etc/passwd` → `passwd`). Invalid characters are replaced with `_`.

For example:

{% code overflow="wrap" %}

```json
{
  "jsonrpc": "2.0", "id": 1, "method": "message/send",
  "params": {
    "message": {
      "role":      "user",
      "messageId": "msg-1",
      "parts": [
        { "kind": "file", "file": { "name": "contract.pdf", "bytes": "<base64-encoded PDF>" } }
      ]
    }
  }
}
```

{% endcode %}

### Output

The redacted file as an artifact part.

The output file has the same filename and content type as the input file.

### Tracking the status of the redaction

Asynchronous.

The task starts as `submitted`, transitions to `working`, and completes with the redacted file.

Progress events are published on the A2A streaming channel. To track the status, clients can either:

* Subscribe using the `message/stream` or the SSE endpoint.
* Poll `tasks/get`.

### Timeouts and concurrency

The timeout for the redaction is determined by the value of the Textual environment variable `SOLAR_A2A_JOB_TIMEOUT_IN_MINUTES`. The default 30 minutes.

The number of concurrent tasks for a given organization is determined by the value of the Textual environment variable `SOLAR_A2A_MAX_CONCURRENT_TASKS_PER_ORG`. The default is 5. When the number of concurrent tasks exceeds the maximum, the task fails and returns an error.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tonic.ai/textual/textual-integrations/textual-a2a-agent/textual-a2a-skills-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
