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

# StoredMcpTask

> Persistence foundation for an MCP task. Protocol fields plus owner and expiry. Construct from `McpTaskInfo`, mutate with `Try*`, and emit the SDK record with...

## Definition

**Assembly:** CloudNimble.McpEssentials.Core.dll

**Namespace:** CloudNimble.McpEssentials.Core.Tasks

**Inheritance:** System.Object

## Syntax

```csharp theme={null}
CloudNimble.McpEssentials.Core.Tasks.StoredMcpTask
```

## Summary

Persistence foundation for an MCP task. Protocol fields plus owner and expiry.
Construct from `McpTaskInfo`, mutate with `Try*`, and emit the SDK record
with `InputRequest})`. Durable providers subclass this type (for example
`McpTaskEntity`) and add only engine-specific columns.

## Constructors

### &#x20;.ctor

Initializes an empty instance. Used by materializers (EF Core). Prefer
`McpTaskInfo)` when the owner and snapshot are known.

#### Syntax

```csharp theme={null}
public StoredMcpTask()
```

### &#x20;.ctor

Initializes a new instance of the [StoredMcpTask](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md) class from a protocol snapshot.

#### Syntax

```csharp theme={null}
public StoredMcpTask(string ownerUserId, ModelContextProtocol.Extensions.Tasks.McpTaskInfo info)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `ownerUserId` | `string` | The user recorded when the task was created. |
| `info` | `ModelContextProtocol.Extensions.Tasks.McpTaskInfo` | The protocol-facing snapshot. Must not include the owner. |

#### Exceptions

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

### &#x20;.ctor

Initializes a new working task owned by *ownerUserId*.

#### Syntax

```csharp theme={null}
public StoredMcpTask(string ownerUserId, string taskId, System.DateTimeOffset createdAt, System.Nullable<System.TimeSpan> timeToLive, long pollIntervalMs)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `ownerUserId` | `string` | The user recorded when the task was created. |
| `taskId` | `string` | The opaque task identifier. |
| `createdAt` | `System.DateTimeOffset` | Creation timestamp, UTC. |
| `timeToLive` | `System.Nullable<System.TimeSpan>` | Duration from create, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for unlimited. |
| `pollIntervalMs` | `long` | Client poll interval in milliseconds. |

### &#x20;.ctor Inherited

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
public Object()
```

## Properties

### &#x20;CreatedAt

Gets or sets when the task was created, UTC.

#### Syntax

```csharp theme={null}
public System.DateTimeOffset CreatedAt { get; set; }
```

#### Property Value

Type: `System.DateTimeOffset`

### &#x20;DiscardAfter

Gets or sets when the row should be discarded. Stamped at write time as
`CreatedAt + 2×TimeToLive`. [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unlimited.

#### Syntax

```csharp theme={null}
public System.Nullable<System.DateTimeOffset> DiscardAfter { get; set; }
```

#### Property Value

Type: `System.Nullable<System.DateTimeOffset>`

#### Remarks

Two windows is the visibility ceiling, including late complete, fail, or cancel.
The stamp does not move when the task finishes. `DateTimeOffset)` compares
the current time to this value.

### &#x20;Error

Gets or sets the JSON-RPC error, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null).

#### Syntax

```csharp theme={null}
public System.Nullable<System.Text.Json.JsonElement> Error { get; set; }
```

#### Property Value

Type: `System.Nullable<System.Text.Json.JsonElement>`

### &#x20;ExpiresAt

Gets or sets the work-window end (`CreatedAt + TimeToLive`).
[`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unlimited. Discard uses [StoredMcpTask.DiscardAfter](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#discardafter).

#### Syntax

```csharp theme={null}
public System.Nullable<System.DateTimeOffset> ExpiresAt { get; set; }
```

#### Property Value

Type: `System.Nullable<System.DateTimeOffset>`

### &#x20;Info

Gets the cached protocol snapshot. Allocates once per mutation.

#### Syntax

```csharp theme={null}
public ModelContextProtocol.Extensions.Tasks.McpTaskInfo Info { get; }
```

#### Property Value

Type: `ModelContextProtocol.Extensions.Tasks.McpTaskInfo`

### &#x20;InputRequests

Gets or sets the outstanding input-request map. Empty when none are pending.

#### Syntax

```csharp theme={null}
public System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest> InputRequests { get; set; }
```

#### Property Value

Type: `System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest>`

### &#x20;IsFinished Virtual

Gets whether [StoredMcpTask.Status](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#status) is completed, cancelled, or failed.

#### Syntax

```csharp theme={null}
public virtual bool IsFinished { get; }
```

#### Property Value

Type: `bool`

### &#x20;LastUpdatedAt

Gets or sets when the task last changed, UTC.

#### Syntax

```csharp theme={null}
public System.DateTimeOffset LastUpdatedAt { get; set; }
```

#### Property Value

Type: `System.DateTimeOffset`

### &#x20;OwnerUserId

Gets or sets the user recorded when the task was created. Isolation key.

#### Syntax

```csharp theme={null}
public string OwnerUserId { get; set; }
```

#### Property Value

Type: `string`

### &#x20;PollIntervalMs

Gets or sets the client poll interval in milliseconds.

#### Syntax

```csharp theme={null}
public System.Nullable<long> PollIntervalMs { get; set; }
```

#### Property Value

Type: `System.Nullable<long>`

### &#x20;Result

Gets or sets the terminal `CallToolResult`, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null).

#### Syntax

```csharp theme={null}
public System.Nullable<System.Text.Json.JsonElement> Result { get; set; }
```

#### Property Value

Type: `System.Nullable<System.Text.Json.JsonElement>`

### &#x20;Status

Gets or sets the protocol status.

#### Syntax

```csharp theme={null}
public ModelContextProtocol.Extensions.Tasks.McpTaskStatus Status { get; set; }
```

#### Property Value

Type: `ModelContextProtocol.Extensions.Tasks.McpTaskStatus`

### &#x20;StatusMessage

Gets or sets an optional status message.

#### Syntax

```csharp theme={null}
public string StatusMessage { get; set; }
```

#### Property Value

Type: `string?`

### &#x20;TaskId

Gets or sets the opaque task identifier. Primary key. Do not embed the user id.

#### Syntax

```csharp theme={null}
public string TaskId { get; set; }
```

#### Property Value

Type: `string`

### &#x20;TimeToLive

Gets or sets the time-to-live from [StoredMcpTask.CreatedAt](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#createdat), or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for unlimited.

#### Syntax

```csharp theme={null}
public System.Nullable<System.TimeSpan> TimeToLive { get; set; }
```

#### Property Value

Type: `System.Nullable<System.TimeSpan>`

## Methods

### &#x20;Apply Virtual

Copies protocol fields from *info*, recomputes
[StoredMcpTask.ExpiresAt](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#expiresat) and [StoredMcpTask.DiscardAfter](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#discardafter), and caches the snapshot.
Leaves [StoredMcpTask.OwnerUserId](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#owneruserid) alone.

#### Syntax

```csharp theme={null}
public virtual void Apply(ModelContextProtocol.Extensions.Tasks.McpTaskInfo info)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `info` | `ModelContextProtocol.Extensions.Tasks.McpTaskInfo` | The protocol-facing snapshot to store. |

#### Exceptions

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

### &#x20;Clone Virtual

Returns a shallow copy for compare-and-swap updates. Mutate the copy with `Try*`;
the original stays unchanged. Subclasses with extra mutable reference fields should override.

#### Syntax

```csharp theme={null}
public virtual CloudNimble.McpEssentials.Core.Tasks.StoredMcpTask Clone()
```

#### Returns

Type: `CloudNimble.McpEssentials.Core.Tasks.StoredMcpTask`

### &#x20;ComputeDiscardAfter

Returns when the row should be discarded, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unlimited.

#### Syntax

```csharp theme={null}
public static System.Nullable<System.DateTimeOffset> ComputeDiscardAfter(System.DateTimeOffset createdAt, System.Nullable<System.TimeSpan> timeToLive)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `createdAt` | `System.DateTimeOffset` | Creation timestamp, UTC. |
| `timeToLive` | `System.Nullable<System.TimeSpan>` | Duration from create, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for unlimited. |

#### Returns

Type: `System.Nullable<System.DateTimeOffset>`
`createdAt + 2×timeToLive`, the visibility ceiling.

### &#x20;ComputeExpiresAt

Returns *createdAt* plus *timeToLive*, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unlimited.

#### Syntax

```csharp theme={null}
public static System.Nullable<System.DateTimeOffset> ComputeExpiresAt(System.DateTimeOffset createdAt, System.Nullable<System.TimeSpan> timeToLive)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `createdAt` | `System.DateTimeOffset` | - |
| `timeToLive` | `System.Nullable<System.TimeSpan>` | - |

#### Returns

Type: `System.Nullable<System.DateTimeOffset>`

### &#x20;Equals Inherited Virtual

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
public virtual bool Equals(object obj)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `obj` | `object?` | - |

#### Returns

Type: `bool`

### &#x20;Equals Inherited

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
public static bool Equals(object objA, object objB)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `objA` | `object?` | - |
| `objB` | `object?` | - |

#### Returns

Type: `bool`

### &#x20;GetHashCode Inherited Virtual

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
public virtual int GetHashCode()
```

#### Returns

Type: `int`

### &#x20;GetType Inherited

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
public System.Type GetType()
```

#### Returns

Type: `System.Type`

### &#x20;HasExpired Virtual

Returns whether the snapshot has no remaining reads and should be discarded.

#### Syntax

```csharp theme={null}
public virtual bool HasExpired(System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `now` | `System.DateTimeOffset` | The current UTC time. |

#### Returns

Type: `bool`
[`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when [StoredMcpTask.DiscardAfter](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#discardafter) is set and
*now* is at or past it.

### &#x20;IsActive Virtual

Returns whether the task is still in its work window and may accept input or progress.

#### Syntax

```csharp theme={null}
public virtual bool IsActive(System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `now` | `System.DateTimeOffset` | The current UTC time. |

#### Returns

Type: `bool`
[`false`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when the task is finished. Otherwise [`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when
the task has no positive time-to-live, or when *now* is still earlier
than `CreatedAt + TimeToLive`.

#### Remarks

Uses [StoredMcpTask.TimeToLive](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#timetolive), not [StoredMcpTask.ExpiresAt](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#expiresat). Settle (complete, fail,
cancel) is still allowed after this returns [`false`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) until
`DateTimeOffset)` is [`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool).

### &#x20;IsExpired Virtual

Returns whether this task has reached [StoredMcpTask.ExpiresAt](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#expiresat) (or
`CreatedAt + TimeToLive` when [StoredMcpTask.ExpiresAt](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#expiresat) is unset).

#### Syntax

```csharp theme={null}
public virtual bool IsExpired(System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `now` | `System.DateTimeOffset` | The current UTC time. |

#### Returns

Type: `bool`
[`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when *now* is at or past the work-window end.
Work-window helper. Discard uses `DateTimeOffset)` / [StoredMcpTask.DiscardAfter](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#discardafter).

### &#x20;IsOwnedBy Virtual

Returns whether *userId* is the recorded owner.

#### Syntax

```csharp theme={null}
public virtual bool IsOwnedBy(string userId)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `userId` | `string?` | - |

#### Returns

Type: `bool`

### &#x20;MemberwiseClone Inherited

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
protected internal object MemberwiseClone()
```

#### Returns

Type: `object`

### &#x20;NormalizeTimeToLive

Returns a positive TTL, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when the task should be retained until deleted.

#### Syntax

```csharp theme={null}
public static System.Nullable<System.TimeSpan> NormalizeTimeToLive(System.Nullable<System.TimeSpan> timeToLive)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `timeToLive` | `System.Nullable<System.TimeSpan>` | - |

#### Returns

Type: `System.Nullable<System.TimeSpan>`

### &#x20;ParseElement

Parses JSON text into a detached [JsonElement](https://learn.microsoft.com/dotnet/api/system.text.json.jsonelement), or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when empty.

#### Syntax

```csharp theme={null}
public static System.Nullable<System.Text.Json.JsonElement> ParseElement(string json)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `json` | `string?` | - |

#### Returns

Type: `System.Nullable<System.Text.Json.JsonElement?>?`

### &#x20;ParseInputRequests

Parses an input-request map. Empty or missing JSON returns [StoredMcpTask.EmptyInputRequests](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#emptyinputrequests).

#### Syntax

```csharp theme={null}
public static System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest> ParseInputRequests(string json)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `json` | `string?` | - |

#### Returns

Type: `System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest>`

### &#x20;ReferenceEquals Inherited

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
public static bool ReferenceEquals(object objA, object objB)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `objA` | `object?` | - |
| `objB` | `object?` | - |

#### Returns

Type: `bool`

### &#x20;ToInputRequestsJson

Serializes an input-request map, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when empty.

#### Syntax

```csharp theme={null}
public static string ToInputRequestsJson(System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest> requests)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `requests` | `System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest>?` | - |

#### Returns

Type: `string?`

### &#x20;ToJson

Serializes *element* to JSON text, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when absent.

#### Syntax

```csharp theme={null}
public static string ToJson(System.Nullable<System.Text.Json.JsonElement> element)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `element` | `System.Nullable<System.Text.Json.JsonElement?>?` | - |

#### Returns

Type: `string?`

### &#x20;ToMcpTaskInfo Virtual

Returns the protocol snapshot. Optional overrides allocate a new record and leave the cache alone.

#### Syntax

```csharp theme={null}
public virtual ModelContextProtocol.Extensions.Tasks.McpTaskInfo ToMcpTaskInfo(System.Nullable<ModelContextProtocol.Extensions.Tasks.McpTaskStatus> status = null, System.Nullable<System.DateTimeOffset> lastUpdatedAt = null, string statusMessage = null, System.Nullable<System.Text.Json.JsonElement> result = null, System.Nullable<System.Text.Json.JsonElement> error = null, System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest> inputRequests = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `status` | `System.Nullable<ModelContextProtocol.Extensions.Tasks.McpTaskStatus>` | - |
| `lastUpdatedAt` | `System.Nullable<System.DateTimeOffset>` | - |
| `statusMessage` | `string?` | - |
| `result` | `System.Nullable<System.Text.Json.JsonElement>` | - |
| `error` | `System.Nullable<System.Text.Json.JsonElement>` | - |
| `inputRequests` | `System.Collections.Generic.IReadOnlyDictionary<string, ModelContextProtocol.Protocol.InputRequest>?` | - |

#### Returns

Type: `ModelContextProtocol.Extensions.Tasks.McpTaskInfo`

### &#x20;ToString Inherited Virtual

> [!NOTE]
>
> Inherited from `object`

#### Syntax

```csharp theme={null}
public virtual string ToString()
```

#### Returns

Type: `string?`

### &#x20;TryCancel Virtual

Transitions to `Cancelled` when the task is not finished.

#### Syntax

```csharp theme={null}
public virtual bool TryCancel(System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `now` | `System.DateTimeOffset` | - |

#### Returns

Type: `bool`
[`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when the status changed.

### &#x20;TryComplete Virtual

Transitions to `Completed` when the task is not finished.

#### Syntax

```csharp theme={null}
public virtual bool TryComplete(System.Text.Json.JsonElement result, System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `result` | `System.Text.Json.JsonElement` | - |
| `now` | `System.DateTimeOffset` | - |

#### Returns

Type: `bool`
[`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when the status changed.

### &#x20;TryFail Virtual

Transitions to `Failed` when the task is not finished.

#### Syntax

```csharp theme={null}
public virtual bool TryFail(System.Text.Json.JsonElement error, System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `error` | `System.Text.Json.JsonElement` | - |
| `now` | `System.DateTimeOffset` | - |

#### Returns

Type: `bool`
[`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when the status changed.

### &#x20;TryResolveInputRequests Virtual

Removes resolved ids from the outstanding map. Remaining requests stay
`InputRequired`; an empty map returns to `Working`.

#### Syntax

```csharp theme={null}
public virtual bool TryResolveInputRequests(System.Collections.Generic.IDictionary<string, ModelContextProtocol.Protocol.InputResponse> inputResponses, System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `inputResponses` | `System.Collections.Generic.IDictionary<string, ModelContextProtocol.Protocol.InputResponse>` | - |
| `now` | `System.DateTimeOffset` | - |

#### Returns

Type: `bool`
[`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when the snapshot changed.

### &#x20;TrySetInputRequests Virtual

Merges *inputRequests* and moves to `InputRequired`
when the task is not finished.

#### Syntax

```csharp theme={null}
public virtual bool TrySetInputRequests(System.Collections.Generic.IDictionary<string, ModelContextProtocol.Protocol.InputRequest> inputRequests, System.DateTimeOffset now)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `inputRequests` | `System.Collections.Generic.IDictionary<string, ModelContextProtocol.Protocol.InputRequest>` | - |
| `now` | `System.DateTimeOffset` | - |

#### Returns

Type: `bool`
[`true`](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) when the snapshot changed.

### &#x20;With Virtual

Returns a snapshot with the same owner and a new [StoredMcpTask.Info](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#info).

#### Syntax

```csharp theme={null}
public virtual CloudNimble.McpEssentials.Core.Tasks.StoredMcpTask With(ModelContextProtocol.Extensions.Tasks.McpTaskInfo info)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `info` | `ModelContextProtocol.Extensions.Tasks.McpTaskInfo` | The protocol-facing snapshot to store. |

#### Returns

Type: `CloudNimble.McpEssentials.Core.Tasks.StoredMcpTask`
A new snapshot with the same [StoredMcpTask.OwnerUserId](https://ai.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/StoredMcpTask.md#owneruserid).


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