---
title: 'ARC0015: Raw parameter converted to a concept'
editUrl: https://github.com/Cratis/Arc.TypeScript/edit/main/Documentation/code-analysis/ARC0015.md
description: Validate incoming concepts at the binding boundary.
---


## What

A `@query` method converts a primitive parameter with `new Concept(parameter)`. Rule: `arc-core/arc0015` (requires type information).

## Why

The query pipeline validates the incoming declared parameter, not a concept constructed later in the method body. Command `handle()` parameters are services or provided values, not wire input. Review optional and search arguments before changing their type.

## Bad

```ts
@query(argument('id', String))
static byId(id: string) { return tasks.byId(new TaskId(id)); }
```

## Good

```ts
@query(argument('id', TaskId))
static byId(id: TaskId) { return tasks.byId(id); }
```
