> ## Documentation Index
> Fetch the complete documentation index at: https://si.easyaf.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# IServiceCollection

> Extension methods for IServiceCollection from Microsoft.Extensions.DependencyInjection.Abstractions

## Definition

**Assembly:** Microsoft.Extensions.DependencyInjection.Abstractions.dll

**Namespace:** Microsoft.Extensions.DependencyInjection

## Syntax

```csharp theme={"dark"}
Microsoft.Extensions.DependencyInjection.IServiceCollection
```

## Summary

This type is defined in Microsoft.Extensions.DependencyInjection.Abstractions.

## Remarks

See [Microsoft documentation](https://learn.microsoft.com/dotnet/api/microsoft.extensions.dependencyinjection.iservicecollection) for more information about the rest of the API.

## Methods

### &#x20;AddFormElicitation Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_ServiceCollectionExtensions`

Registers *form* as a keyed singleton [IFormElicitationSource](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/Elicitations/IFormElicitationSource.md)
named *name*. Hosts resolve it the same way they resolve a named
`HttpClient`.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddFormElicitation(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string name, CloudNimble.McpEssentials.Core.Tasks.Elicitations.IFormElicitationSource form)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `name` | `string` | The keyed-DI name. |
| `form` | `CloudNimble.McpEssentials.Core.Tasks.Elicitations.IFormElicitationSource` | The form instance. The same instance may be registered under more than one name. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *form* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *name* is empty. |

#### Examples

```csharp theme={"dark"}
services.AddFormElicitation("ship",
    FormElicitation.Create("Ship this order")
        .String("trackingNumber").Required());
```

#### Remarks

A duplicate registration of the same name throws. Tests that need to replace a form
build a fresh collection.

### &#x20;AddInMemoryMcpTaskStorePlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_ServiceCollectionExtensions`

Registers [InMemoryMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/InMemoryMcpTaskStorePlus.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddInMemoryMcpTaskStorePlus(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string userId, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;AddInMemoryMcpTaskStorePlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_ServiceCollectionExtensions`

Registers [InMemoryMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/InMemoryMcpTaskStorePlus.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddInMemoryMcpTaskStorePlus(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddInMemoryMcpTaskStorePlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_ServiceCollectionExtensions`

Registers [InMemoryMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/InMemoryMcpTaskStorePlus.md) using a [ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal) factory.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddInMemoryMcpTaskStorePlus(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. Hosts typically pass |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsCosmosTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Cosmos_ServiceCollectionExtensions`

Registers [CosmosMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Cosmos/Tasks/CosmosMcpTaskStore.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsCosmosTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string userId, System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions>?` | Optional store options (TTL, database and container ids). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;AddMcpEssentialsCosmosTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Cosmos_ServiceCollectionExtensions`

Registers [CosmosMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Cosmos/Tasks/CosmosMcpTaskStore.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsCosmosTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions>?` | Optional store options (TTL, database and container ids). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsCosmosTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Cosmos_ServiceCollectionExtensions`

Registers [CosmosMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Cosmos/Tasks/CosmosMcpTaskStore.md) using a
[ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal) factory resolved from the built provider.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsCosmosTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. Hosts typically pass |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions>?` | Optional store options (TTL, database and container ids). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsEntityFrameworkTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_EntityFrameworkCore_ServiceCollectionExtensions`

Registers `EFCoreMcpTaskStore`1\` as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsEntityFrameworkTasks<TContext>(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string userId, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null) where TContext : Microsoft.EntityFrameworkCore.DbContext
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Type Parameters

* `TContext` - The host [DbContext](https://learn.microsoft.com/dotnet/api/microsoft.entityframeworkcore.dbcontext) that maps [McpTaskEntity](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/EntityFrameworkCore/Tasks/McpTaskEntity.md).

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;AddMcpEssentialsEntityFrameworkTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_EntityFrameworkCore_ServiceCollectionExtensions`

Registers `EFCoreMcpTaskStore`1\` as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsEntityFrameworkTasks<TContext>(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null) where TContext : Microsoft.EntityFrameworkCore.DbContext
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Type Parameters

* `TContext` - The host [DbContext](https://learn.microsoft.com/dotnet/api/microsoft.entityframeworkcore.dbcontext) that maps [McpTaskEntity](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/EntityFrameworkCore/Tasks/McpTaskEntity.md).

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsEntityFrameworkTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_EntityFrameworkCore_ServiceCollectionExtensions`

Registers `EFCoreMcpTaskStore`1\` using a
[ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal) factory resolved from the built provider.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsEntityFrameworkTasks<TContext>(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null) where TContext : Microsoft.EntityFrameworkCore.DbContext
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. Hosts typically pass |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Type Parameters

* `TContext` - The host [DbContext](https://learn.microsoft.com/dotnet/api/microsoft.entityframeworkcore.dbcontext) that maps [McpTaskEntity](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/EntityFrameworkCore/Tasks/McpTaskEntity.md).

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsPostgreSqlTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_PostgreSQL_ServiceCollectionExtensions`

Registers [PostgreSqlMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/PostgreSQL/Tasks/PostgreSqlMcpTaskStore.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsPostgreSqlTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string userId, System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions>?` | Optional store options (TTL, table, listen channel). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;AddMcpEssentialsPostgreSqlTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_PostgreSQL_ServiceCollectionExtensions`

Registers [PostgreSqlMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/PostgreSQL/Tasks/PostgreSqlMcpTaskStore.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsPostgreSqlTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions>?` | Optional store options (TTL, table, listen channel). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsPostgreSqlTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_PostgreSQL_ServiceCollectionExtensions`

Registers [PostgreSqlMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/PostgreSQL/Tasks/PostgreSqlMcpTaskStore.md) using a
[ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal) factory resolved from the built provider.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsPostgreSqlTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. Hosts typically pass |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions>?` | Optional store options (TTL, table, listen channel). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsRedisTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Redis_ServiceCollectionExtensions`

Registers [RedisMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Redis/Tasks/RedisMcpTaskStore.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsRedisTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string userId, System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions>?` | Optional store options (TTL, key prefix, replica wait). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;AddMcpEssentialsRedisTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Redis_ServiceCollectionExtensions`

Registers [RedisMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Redis/Tasks/RedisMcpTaskStore.md) as the singleton
[IMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/ModelContextProtocol/Extensions/Tasks/IMcpTaskStore.md) and [IMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/IMcpTaskStorePlus.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsRedisTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions>?` | Optional store options (TTL, key prefix, replica wait). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;AddMcpEssentialsRedisTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Redis_ServiceCollectionExtensions`

Registers [RedisMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Redis/Tasks/RedisMcpTaskStore.md) using a
[ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal) factory resolved from the built provider.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddMcpEssentialsRedisTasks(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions> configure = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `services` | `Microsoft.Extensions.DependencyInjection.IServiceCollection` | The service collection. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. Hosts typically pass |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions>?` | Optional store options (TTL, key prefix, replica wait). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IServiceCollection`
The service collection.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *services* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.