phenoml 0.0.1__py3-none-any.whl → 0.0.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of phenoml might be problematic. Click here for more details.

Files changed (86) hide show
  1. phenoml/agent/__init__.py +10 -12
  2. phenoml/agent/client.py +172 -65
  3. phenoml/agent/prompts/client.py +60 -60
  4. phenoml/agent/prompts/raw_client.py +134 -134
  5. phenoml/agent/raw_client.py +236 -69
  6. phenoml/agent/types/__init__.py +10 -12
  7. phenoml/agent/types/agent_create_request.py +53 -0
  8. phenoml/agent/types/agent_create_request_provider.py +1 -9
  9. phenoml/agent/types/agent_get_chat_messages_request_order.py +5 -0
  10. phenoml/agent/types/agent_get_chat_messages_response.py +22 -0
  11. phenoml/agent/types/agent_template.py +6 -4
  12. phenoml/agent/types/agent_template_provider.py +1 -9
  13. phenoml/agent/types/chat_message_template.py +72 -0
  14. phenoml/agent/types/chat_session_template.py +67 -0
  15. phenoml/client.py +6 -0
  16. phenoml/core/client_wrapper.py +2 -2
  17. phenoml/fhir/__init__.py +36 -0
  18. phenoml/fhir/client.py +970 -0
  19. phenoml/fhir/errors/__init__.py +10 -0
  20. phenoml/fhir/errors/bad_request_error.py +10 -0
  21. phenoml/fhir/errors/internal_server_error.py +10 -0
  22. phenoml/fhir/errors/not_found_error.py +10 -0
  23. phenoml/fhir/errors/unauthorized_error.py +10 -0
  24. phenoml/fhir/raw_client.py +1385 -0
  25. phenoml/fhir/types/__init__.py +29 -0
  26. phenoml/{agent/types/chat_fhir_client_config.py → fhir/types/error_response.py} +11 -6
  27. phenoml/fhir/types/fhir_bundle.py +43 -0
  28. phenoml/fhir/types/fhir_bundle_entry_item.py +34 -0
  29. phenoml/fhir/types/fhir_bundle_entry_item_request.py +25 -0
  30. phenoml/fhir/types/fhir_bundle_entry_item_request_method.py +5 -0
  31. phenoml/fhir/types/fhir_bundle_entry_item_response.py +24 -0
  32. phenoml/fhir/types/fhir_patch_request_body_item.py +36 -0
  33. phenoml/fhir/types/fhir_patch_request_body_item_op.py +7 -0
  34. phenoml/fhir/types/fhir_resource.py +40 -0
  35. phenoml/fhir/types/fhir_resource_meta.py +28 -0
  36. phenoml/fhir/types/fhir_search_response.py +8 -0
  37. phenoml/fhir_provider/__init__.py +43 -0
  38. phenoml/fhir_provider/client.py +731 -0
  39. phenoml/fhir_provider/errors/__init__.py +11 -0
  40. phenoml/fhir_provider/errors/bad_request_error.py +10 -0
  41. phenoml/fhir_provider/errors/forbidden_error.py +10 -0
  42. phenoml/fhir_provider/errors/internal_server_error.py +10 -0
  43. phenoml/fhir_provider/errors/not_found_error.py +10 -0
  44. phenoml/fhir_provider/errors/unauthorized_error.py +10 -0
  45. phenoml/fhir_provider/raw_client.py +1445 -0
  46. phenoml/fhir_provider/types/__init__.py +35 -0
  47. phenoml/fhir_provider/types/auth_method.py +7 -0
  48. phenoml/fhir_provider/types/fhir_provider_auth_config.py +53 -0
  49. phenoml/fhir_provider/types/fhir_provider_delete_response.py +20 -0
  50. phenoml/fhir_provider/types/fhir_provider_list_response.py +22 -0
  51. phenoml/fhir_provider/types/fhir_provider_remove_auth_config_response.py +22 -0
  52. phenoml/fhir_provider/types/fhir_provider_response.py +22 -0
  53. phenoml/fhir_provider/types/fhir_provider_set_active_auth_config_response.py +22 -0
  54. phenoml/fhir_provider/types/fhir_provider_template.py +66 -0
  55. phenoml/fhir_provider/types/fhir_query_response.py +27 -0
  56. phenoml/fhir_provider/types/fhir_query_response_data.py +5 -0
  57. phenoml/fhir_provider/types/json_web_key.py +51 -0
  58. phenoml/fhir_provider/types/provider.py +8 -0
  59. phenoml/fhir_provider/types/service_account_key.py +35 -0
  60. phenoml/fhir_provider/types/smart_configuration.py +46 -0
  61. phenoml/tools/__init__.py +12 -8
  62. phenoml/tools/client.py +27 -60
  63. phenoml/tools/mcp_server/__init__.py +7 -0
  64. phenoml/tools/mcp_server/client.py +336 -0
  65. phenoml/tools/mcp_server/raw_client.py +641 -0
  66. phenoml/tools/mcp_server/tools/__init__.py +4 -0
  67. phenoml/tools/mcp_server/tools/client.py +358 -0
  68. phenoml/tools/mcp_server/tools/raw_client.py +656 -0
  69. phenoml/tools/raw_client.py +18 -67
  70. phenoml/tools/types/__init__.py +10 -8
  71. phenoml/{agent/types/agent_fhir_config.py → tools/types/mcp_server_response.py} +8 -6
  72. phenoml/tools/types/mcp_server_response_data.py +51 -0
  73. phenoml/tools/types/mcp_server_tool_call_response.py +37 -0
  74. phenoml/tools/types/{fhir_client_config.py → mcp_server_tool_response.py} +8 -6
  75. phenoml/tools/types/mcp_server_tool_response_data.py +61 -0
  76. {phenoml-0.0.1.dist-info → phenoml-0.0.5.dist-info}/METADATA +1 -1
  77. {phenoml-0.0.1.dist-info → phenoml-0.0.5.dist-info}/RECORD +79 -29
  78. phenoml/agent/types/agent_create_request_provider_item.py +0 -7
  79. phenoml/agent/types/agent_template_provider_item.py +0 -5
  80. phenoml/agent/types/agent_update_request_provider.py +0 -13
  81. phenoml/agent/types/agent_update_request_provider_item.py +0 -7
  82. phenoml/tools/types/cohort_request_provider.py +0 -5
  83. phenoml/tools/types/lang2fhir_and_create_request_provider.py +0 -7
  84. phenoml/tools/types/lang2fhir_and_search_request_provider.py +0 -7
  85. {phenoml-0.0.1.dist-info → phenoml-0.0.5.dist-info}/LICENSE +0 -0
  86. {phenoml-0.0.1.dist-info → phenoml-0.0.5.dist-info}/WHEEL +0 -0
@@ -8,19 +8,14 @@ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
8
  from ..core.http_response import AsyncHttpResponse, HttpResponse
9
9
  from ..core.pydantic_utilities import parse_obj_as
10
10
  from ..core.request_options import RequestOptions
11
- from ..core.serialization import convert_and_respect_annotation_metadata
12
11
  from .errors.bad_request_error import BadRequestError
13
12
  from .errors.failed_dependency_error import FailedDependencyError
14
13
  from .errors.forbidden_error import ForbiddenError
15
14
  from .errors.internal_server_error import InternalServerError
16
15
  from .errors.unauthorized_error import UnauthorizedError
17
- from .types.cohort_request_provider import CohortRequestProvider
18
16
  from .types.cohort_response import CohortResponse
19
- from .types.fhir_client_config import FhirClientConfig
20
- from .types.lang2fhir_and_create_request_provider import Lang2FhirAndCreateRequestProvider
21
17
  from .types.lang2fhir_and_create_request_resource import Lang2FhirAndCreateRequestResource
22
18
  from .types.lang2fhir_and_create_response import Lang2FhirAndCreateResponse
23
- from .types.lang2fhir_and_search_request_provider import Lang2FhirAndSearchRequestProvider
24
19
  from .types.lang2fhir_and_search_response import Lang2FhirAndSearchResponse
25
20
 
26
21
  # this is used as the default value for optional parameters
@@ -36,8 +31,7 @@ class RawToolsClient:
36
31
  *,
37
32
  resource: Lang2FhirAndCreateRequestResource,
38
33
  text: str,
39
- provider: typing.Optional[Lang2FhirAndCreateRequestProvider] = OMIT,
40
- meta: typing.Optional[FhirClientConfig] = OMIT,
34
+ provider: typing.Optional[str] = OMIT,
41
35
  request_options: typing.Optional[RequestOptions] = None,
42
36
  ) -> HttpResponse[Lang2FhirAndCreateResponse]:
43
37
  """
@@ -51,10 +45,8 @@ class RawToolsClient:
51
45
  text : str
52
46
  Natural language text to convert to FHIR resource
53
47
 
54
- provider : typing.Optional[Lang2FhirAndCreateRequestProvider]
55
- FHIR provider to use for storing the resource
56
-
57
- meta : typing.Optional[FhirClientConfig]
48
+ provider : typing.Optional[str]
49
+ FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
58
50
 
59
51
  request_options : typing.Optional[RequestOptions]
60
52
  Request-specific configuration.
@@ -71,9 +63,6 @@ class RawToolsClient:
71
63
  "resource": resource,
72
64
  "text": text,
73
65
  "provider": provider,
74
- "meta": convert_and_respect_annotation_metadata(
75
- object_=meta, annotation=FhirClientConfig, direction="write"
76
- ),
77
66
  },
78
67
  headers={
79
68
  "content-type": "application/json",
@@ -158,8 +147,7 @@ class RawToolsClient:
158
147
  patient_id: typing.Optional[str] = OMIT,
159
148
  practitioner_id: typing.Optional[str] = OMIT,
160
149
  count: typing.Optional[int] = OMIT,
161
- provider: typing.Optional[Lang2FhirAndSearchRequestProvider] = OMIT,
162
- meta: typing.Optional[FhirClientConfig] = OMIT,
150
+ provider: typing.Optional[str] = OMIT,
163
151
  request_options: typing.Optional[RequestOptions] = None,
164
152
  ) -> HttpResponse[Lang2FhirAndSearchResponse]:
165
153
  """
@@ -179,10 +167,8 @@ class RawToolsClient:
179
167
  count : typing.Optional[int]
180
168
  Maximum number of results to return
181
169
 
182
- provider : typing.Optional[Lang2FhirAndSearchRequestProvider]
183
- FHIR provider to use for searching
184
-
185
- meta : typing.Optional[FhirClientConfig]
170
+ provider : typing.Optional[str]
171
+ FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
186
172
 
187
173
  request_options : typing.Optional[RequestOptions]
188
174
  Request-specific configuration.
@@ -201,9 +187,6 @@ class RawToolsClient:
201
187
  "practitioner_id": practitioner_id,
202
188
  "count": count,
203
189
  "provider": provider,
204
- "meta": convert_and_respect_annotation_metadata(
205
- object_=meta, annotation=FhirClientConfig, direction="write"
206
- ),
207
190
  },
208
191
  headers={
209
192
  "content-type": "application/json",
@@ -282,12 +265,7 @@ class RawToolsClient:
282
265
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
283
266
 
284
267
  def analyze_cohort(
285
- self,
286
- *,
287
- text: str,
288
- provider: CohortRequestProvider,
289
- meta: typing.Optional[FhirClientConfig] = OMIT,
290
- request_options: typing.Optional[RequestOptions] = None,
268
+ self, *, text: str, provider: str, request_options: typing.Optional[RequestOptions] = None
291
269
  ) -> HttpResponse[CohortResponse]:
292
270
  """
293
271
  Uses LLM to extract search concepts from natural language and builds patient cohorts with inclusion/exclusion criteria
@@ -297,10 +275,8 @@ class RawToolsClient:
297
275
  text : str
298
276
  Natural language text describing the patient cohort criteria
299
277
 
300
- provider : CohortRequestProvider
301
- FHIR provider to use for searching
302
-
303
- meta : typing.Optional[FhirClientConfig]
278
+ provider : str
279
+ FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
304
280
 
305
281
  request_options : typing.Optional[RequestOptions]
306
282
  Request-specific configuration.
@@ -316,9 +292,6 @@ class RawToolsClient:
316
292
  json={
317
293
  "text": text,
318
294
  "provider": provider,
319
- "meta": convert_and_respect_annotation_metadata(
320
- object_=meta, annotation=FhirClientConfig, direction="write"
321
- ),
322
295
  },
323
296
  headers={
324
297
  "content-type": "application/json",
@@ -395,8 +368,7 @@ class AsyncRawToolsClient:
395
368
  *,
396
369
  resource: Lang2FhirAndCreateRequestResource,
397
370
  text: str,
398
- provider: typing.Optional[Lang2FhirAndCreateRequestProvider] = OMIT,
399
- meta: typing.Optional[FhirClientConfig] = OMIT,
371
+ provider: typing.Optional[str] = OMIT,
400
372
  request_options: typing.Optional[RequestOptions] = None,
401
373
  ) -> AsyncHttpResponse[Lang2FhirAndCreateResponse]:
402
374
  """
@@ -410,10 +382,8 @@ class AsyncRawToolsClient:
410
382
  text : str
411
383
  Natural language text to convert to FHIR resource
412
384
 
413
- provider : typing.Optional[Lang2FhirAndCreateRequestProvider]
414
- FHIR provider to use for storing the resource
415
-
416
- meta : typing.Optional[FhirClientConfig]
385
+ provider : typing.Optional[str]
386
+ FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
417
387
 
418
388
  request_options : typing.Optional[RequestOptions]
419
389
  Request-specific configuration.
@@ -430,9 +400,6 @@ class AsyncRawToolsClient:
430
400
  "resource": resource,
431
401
  "text": text,
432
402
  "provider": provider,
433
- "meta": convert_and_respect_annotation_metadata(
434
- object_=meta, annotation=FhirClientConfig, direction="write"
435
- ),
436
403
  },
437
404
  headers={
438
405
  "content-type": "application/json",
@@ -517,8 +484,7 @@ class AsyncRawToolsClient:
517
484
  patient_id: typing.Optional[str] = OMIT,
518
485
  practitioner_id: typing.Optional[str] = OMIT,
519
486
  count: typing.Optional[int] = OMIT,
520
- provider: typing.Optional[Lang2FhirAndSearchRequestProvider] = OMIT,
521
- meta: typing.Optional[FhirClientConfig] = OMIT,
487
+ provider: typing.Optional[str] = OMIT,
522
488
  request_options: typing.Optional[RequestOptions] = None,
523
489
  ) -> AsyncHttpResponse[Lang2FhirAndSearchResponse]:
524
490
  """
@@ -538,10 +504,8 @@ class AsyncRawToolsClient:
538
504
  count : typing.Optional[int]
539
505
  Maximum number of results to return
540
506
 
541
- provider : typing.Optional[Lang2FhirAndSearchRequestProvider]
542
- FHIR provider to use for searching
543
-
544
- meta : typing.Optional[FhirClientConfig]
507
+ provider : typing.Optional[str]
508
+ FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
545
509
 
546
510
  request_options : typing.Optional[RequestOptions]
547
511
  Request-specific configuration.
@@ -560,9 +524,6 @@ class AsyncRawToolsClient:
560
524
  "practitioner_id": practitioner_id,
561
525
  "count": count,
562
526
  "provider": provider,
563
- "meta": convert_and_respect_annotation_metadata(
564
- object_=meta, annotation=FhirClientConfig, direction="write"
565
- ),
566
527
  },
567
528
  headers={
568
529
  "content-type": "application/json",
@@ -641,12 +602,7 @@ class AsyncRawToolsClient:
641
602
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
642
603
 
643
604
  async def analyze_cohort(
644
- self,
645
- *,
646
- text: str,
647
- provider: CohortRequestProvider,
648
- meta: typing.Optional[FhirClientConfig] = OMIT,
649
- request_options: typing.Optional[RequestOptions] = None,
605
+ self, *, text: str, provider: str, request_options: typing.Optional[RequestOptions] = None
650
606
  ) -> AsyncHttpResponse[CohortResponse]:
651
607
  """
652
608
  Uses LLM to extract search concepts from natural language and builds patient cohorts with inclusion/exclusion criteria
@@ -656,10 +612,8 @@ class AsyncRawToolsClient:
656
612
  text : str
657
613
  Natural language text describing the patient cohort criteria
658
614
 
659
- provider : CohortRequestProvider
660
- FHIR provider to use for searching
661
-
662
- meta : typing.Optional[FhirClientConfig]
615
+ provider : str
616
+ FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
663
617
 
664
618
  request_options : typing.Optional[RequestOptions]
665
619
  Request-specific configuration.
@@ -675,9 +629,6 @@ class AsyncRawToolsClient:
675
629
  json={
676
630
  "text": text,
677
631
  "provider": provider,
678
- "meta": convert_and_respect_annotation_metadata(
679
- object_=meta, annotation=FhirClientConfig, direction="write"
680
- ),
681
632
  },
682
633
  headers={
683
634
  "content-type": "application/json",
@@ -2,24 +2,26 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
- from .cohort_request_provider import CohortRequestProvider
6
5
  from .cohort_response import CohortResponse
7
- from .fhir_client_config import FhirClientConfig
8
- from .lang2fhir_and_create_request_provider import Lang2FhirAndCreateRequestProvider
9
6
  from .lang2fhir_and_create_request_resource import Lang2FhirAndCreateRequestResource
10
7
  from .lang2fhir_and_create_response import Lang2FhirAndCreateResponse
11
- from .lang2fhir_and_search_request_provider import Lang2FhirAndSearchRequestProvider
12
8
  from .lang2fhir_and_search_response import Lang2FhirAndSearchResponse
9
+ from .mcp_server_response import McpServerResponse
10
+ from .mcp_server_response_data import McpServerResponseData
11
+ from .mcp_server_tool_call_response import McpServerToolCallResponse
12
+ from .mcp_server_tool_response import McpServerToolResponse
13
+ from .mcp_server_tool_response_data import McpServerToolResponseData
13
14
  from .search_concept import SearchConcept
14
15
 
15
16
  __all__ = [
16
- "CohortRequestProvider",
17
17
  "CohortResponse",
18
- "FhirClientConfig",
19
- "Lang2FhirAndCreateRequestProvider",
20
18
  "Lang2FhirAndCreateRequestResource",
21
19
  "Lang2FhirAndCreateResponse",
22
- "Lang2FhirAndSearchRequestProvider",
23
20
  "Lang2FhirAndSearchResponse",
21
+ "McpServerResponse",
22
+ "McpServerResponseData",
23
+ "McpServerToolCallResponse",
24
+ "McpServerToolResponse",
25
+ "McpServerToolResponseData",
24
26
  "SearchConcept",
25
27
  ]
@@ -4,21 +4,23 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .mcp_server_response_data import McpServerResponseData
7
8
 
8
9
 
9
- class AgentFhirConfig(UniversalBaseModel):
10
+ class McpServerResponse(UniversalBaseModel):
11
+ success: typing.Optional[bool] = pydantic.Field(default=None)
10
12
  """
11
- Agent-specific FHIR configuration (excludes user-specific fields)
13
+ Whether the MCP server was created successfully
12
14
  """
13
15
 
14
- fhir_store_id: typing.Optional[str] = pydantic.Field(default=None)
16
+ message: typing.Optional[str] = pydantic.Field(default=None)
15
17
  """
16
- FHIR store ID for Google Healthcare provider
18
+ Status message
17
19
  """
18
20
 
19
- instance_name: typing.Optional[str] = pydantic.Field(default=None)
21
+ data: typing.Optional[McpServerResponseData] = pydantic.Field(default=None)
20
22
  """
21
- Instance name for multi-instance providers
23
+ MCP server data
22
24
  """
23
25
 
24
26
  if IS_PYDANTIC_V2:
@@ -0,0 +1,51 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class McpServerResponseData(UniversalBaseModel):
10
+ """
11
+ MCP server data
12
+ """
13
+
14
+ id: typing.Optional[str] = pydantic.Field(default=None)
15
+ """
16
+ ID of the MCP server
17
+ """
18
+
19
+ user_id: typing.Optional[str] = pydantic.Field(default=None)
20
+ """
21
+ ID of the user who created the MCP server
22
+ """
23
+
24
+ name: typing.Optional[str] = pydantic.Field(default=None)
25
+ """
26
+ Name of the MCP server
27
+ """
28
+
29
+ description: typing.Optional[str] = pydantic.Field(default=None)
30
+ """
31
+ Description of the MCP server
32
+ """
33
+
34
+ mcp_server_url: typing.Optional[str] = pydantic.Field(default=None)
35
+ """
36
+ URL of the MCP server
37
+ """
38
+
39
+ is_active: typing.Optional[bool] = pydantic.Field(default=None)
40
+ """
41
+ Whether the MCP server is active
42
+ """
43
+
44
+ if IS_PYDANTIC_V2:
45
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
46
+ else:
47
+
48
+ class Config:
49
+ frozen = True
50
+ smart_union = True
51
+ extra = pydantic.Extra.allow
@@ -0,0 +1,37 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class McpServerToolCallResponse(UniversalBaseModel):
10
+ success: typing.Optional[bool] = pydantic.Field(default=None)
11
+ """
12
+ Whether the MCP server tool was called successfully
13
+ """
14
+
15
+ message: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ Status message
18
+ """
19
+
20
+ result: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
21
+ """
22
+ Result of the MCP server tool call
23
+ """
24
+
25
+ error: typing.Optional[str] = pydantic.Field(default=None)
26
+ """
27
+ Error message if the call failed
28
+ """
29
+
30
+ if IS_PYDANTIC_V2:
31
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
32
+ else:
33
+
34
+ class Config:
35
+ frozen = True
36
+ smart_union = True
37
+ extra = pydantic.Extra.allow
@@ -4,21 +4,23 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .mcp_server_tool_response_data import McpServerToolResponseData
7
8
 
8
9
 
9
- class FhirClientConfig(UniversalBaseModel):
10
+ class McpServerToolResponse(UniversalBaseModel):
11
+ success: typing.Optional[bool] = pydantic.Field(default=None)
10
12
  """
11
- Provider-specific configuration and metadata
13
+ Whether the MCP server tool was created successfully
12
14
  """
13
15
 
14
- fhir_store_id: typing.Optional[str] = pydantic.Field(default=None)
16
+ message: typing.Optional[str] = pydantic.Field(default=None)
15
17
  """
16
- FHIR store ID for Google Healthcare provider
18
+ Status message
17
19
  """
18
20
 
19
- on_behalf_of_email: typing.Optional[str] = pydantic.Field(default=None)
21
+ data: typing.Optional[McpServerToolResponseData] = pydantic.Field(default=None)
20
22
  """
21
- Email address to use for On-Behalf-Of requests (Medplum only). If provided, the request will be made on behalf of the Patient or Practitioner with this email address.
23
+ MCP server tool data
22
24
  """
23
25
 
24
26
  if IS_PYDANTIC_V2:
@@ -0,0 +1,61 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class McpServerToolResponseData(UniversalBaseModel):
10
+ """
11
+ MCP server tool data
12
+ """
13
+
14
+ id: typing.Optional[str] = pydantic.Field(default=None)
15
+ """
16
+ ID of the MCP server tool
17
+ """
18
+
19
+ user_id: typing.Optional[str] = pydantic.Field(default=None)
20
+ """
21
+ ID of the user who created the MCP server tool
22
+ """
23
+
24
+ name: typing.Optional[str] = pydantic.Field(default=None)
25
+ """
26
+ Name of the MCP server tool
27
+ """
28
+
29
+ description: typing.Optional[str] = pydantic.Field(default=None)
30
+ """
31
+ Description of the MCP server tool
32
+ """
33
+
34
+ input_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
35
+ """
36
+ Input schema of the MCP server tool
37
+ """
38
+
39
+ mcp_server_id: typing.Optional[str] = pydantic.Field(default=None)
40
+ """
41
+ ID of the MCP server that the tool belongs to
42
+ """
43
+
44
+ mcp_server_url: typing.Optional[str] = pydantic.Field(default=None)
45
+ """
46
+ URL of the MCP server
47
+ """
48
+
49
+ is_active: typing.Optional[bool] = pydantic.Field(default=None)
50
+ """
51
+ Whether the MCP server tool is active
52
+ """
53
+
54
+ if IS_PYDANTIC_V2:
55
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
56
+ else:
57
+
58
+ class Config:
59
+ frozen = True
60
+ smart_union = True
61
+ extra = pydantic.Extra.allow
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phenoml
3
- Version: 0.0.1
3
+ Version: 0.0.5
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -1,6 +1,6 @@
1
1
  phenoml/__init__.py,sha256=SeYOCP1ABPA3aB2UDDPr5DOYT4UKKQcw1CHW49I51X8,778
2
- phenoml/agent/__init__.py,sha256=XHo-TgXBRrCXNep_U6Nea4Own1xjH7NHnrvAmbAmyAc,1507
3
- phenoml/agent/client.py,sha256=nfkOYjUZJOIX_XRS9oYODwZSAMFyXMLwmqzWTh_qKyU,22101
2
+ phenoml/agent/__init__.py,sha256=oHLnXLJ_uzj3zAtpAUaoXuWZcxl1K8cQh2ommFsp1Kg,1433
3
+ phenoml/agent/client.py,sha256=-A7Mp-W8veSh61Hzc1BgHuy-r1l3Ba7Pl43TU87tYmU,25043
4
4
  phenoml/agent/errors/__init__.py,sha256=Wnvf4XPELmAIZ-jVxx2t-dBNZ-X9PcDxPSL5EHqJr1Q,434
5
5
  phenoml/agent/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
6
6
  phenoml/agent/errors/forbidden_error.py,sha256=ek8-sffTy9gY3F0zyaSkcskDVvq9puXP_YvvB2BJYbA,338
@@ -8,27 +8,26 @@ phenoml/agent/errors/internal_server_error.py,sha256=biBHJfSP1_zWF5CJgxY4B8wrL1u
8
8
  phenoml/agent/errors/not_found_error.py,sha256=hQ1KdyGQJCBQqo6iLu2-szlKJdzaoV5odq_7kdXAEbc,337
9
9
  phenoml/agent/errors/unauthorized_error.py,sha256=h8T6QhXuTo0GLL9MKfIM5p--wDqlB1-ZkMp3lY-aM3E,341
10
10
  phenoml/agent/prompts/__init__.py,sha256=sZXw6tuCJBAQGXzYcEu7K5lfXDYi7Kqox1i3eMRavMM,207
11
- phenoml/agent/prompts/client.py,sha256=RfuANR5dpW9xbS09d0qeNWvRVR0-o1N4mkKAhPaSuqw,18568
12
- phenoml/agent/prompts/raw_client.py,sha256=i9HA1my2GaLAvTVr39RuxUsph6BxyrzjrDltWi2foLc,52329
11
+ phenoml/agent/prompts/client.py,sha256=c5AYtVpjJaJ9pr3137zumgbhkH-GMtHxHZTN0roRCeQ,18568
12
+ phenoml/agent/prompts/raw_client.py,sha256=n2R6TL8Rjix8ewpA3b3J68hy_sqlBOxMYMNcVT1uxH0,52339
13
13
  phenoml/agent/prompts/types/__init__.py,sha256=N-qiOKtvTg2c7r8DaBddWQDaqjAEve1W-K-yCRLCi84,259
14
14
  phenoml/agent/prompts/types/prompts_delete_response.py,sha256=hG7Y3lEyBAF2-cIIicRO5RVoBNOajNR9PHQ-1L2kMK8,599
15
15
  phenoml/agent/prompts/types/prompts_list_response.py,sha256=7OzSEUyw2frge0HO7BiZf-I_DJBF0o5e20qsmK1-24s,714
16
- phenoml/agent/raw_client.py,sha256=HcTq0aoqH_WaXI49FQdskV-yJKeaSeijUGf7MDZ862g,58289
17
- phenoml/agent/types/__init__.py,sha256=IMm7zP_Ztf66lxww-YGbJPlvkTZk8wOLD7d_geTBb3A,1683
16
+ phenoml/agent/raw_client.py,sha256=OHMWL-GT2MDyBP_tnO8-vwXX5C3eOO72u4tbH5RE3h8,64230
17
+ phenoml/agent/types/__init__.py,sha256=jMiQhVO3NTKEv5Qm6ZyAeBueWCEFJUzAd78FSsetdME,1566
18
18
  phenoml/agent/types/agent_chat_response.py,sha256=GqPcv7lyZlsypeqFwf1ecouik9A-9xDde0sckYOc8lA,862
19
- phenoml/agent/types/agent_create_request_provider.py,sha256=OAf8dz-jf154dr3xwiP7DZTANkCt9ov8cXLizCAVY2I,384
20
- phenoml/agent/types/agent_create_request_provider_item.py,sha256=6SM7iWAuJmddva4UuJAWFDJ-jA4FxKkREA-ABj3hEuw,210
19
+ phenoml/agent/types/agent_create_request.py,sha256=zHEnDylu2M6ZcgfxwWJvXTdMa70UqJ6tTYhLMRK151E,1411
20
+ phenoml/agent/types/agent_create_request_provider.py,sha256=SsObiEY03YzReBAuvzevB5gwR1SjXtxxdKuXHtYJ6zg,145
21
21
  phenoml/agent/types/agent_delete_response.py,sha256=9lZoZdvn6iBzqkC_jAZlPzJ9ZuEe9XX1_zZNII6pJJA,596
22
- phenoml/agent/types/agent_fhir_config.py,sha256=7ZyTO8dAja-TEjU9TlIjolBDSpETys0hVoMM35loTNI,867
22
+ phenoml/agent/types/agent_get_chat_messages_request_order.py,sha256=LUV7Ngo98ZfHUIsC1P1hL5J_OVfEsW9iruvJAQSwGOU,171
23
+ phenoml/agent/types/agent_get_chat_messages_response.py,sha256=R5wS7akcqIfFJ96TYCfvsDTZqOUu_zfsxEmtcMvPev8,731
23
24
  phenoml/agent/types/agent_list_response.py,sha256=NuEoSkEo5sd2Wu77TRrJeGB8IdtJbgxVx_uNIcl1qww,699
24
25
  phenoml/agent/types/agent_prompts_response.py,sha256=sXkclmfF6FI7q9a35T1CkyYjBnHm0n6QABSOYb4ICBY,690
25
26
  phenoml/agent/types/agent_response.py,sha256=bcLl5OAGrcGEgL6AIbVIiEpptoYk7R6Ydxw8t48ZP0U,680
26
- phenoml/agent/types/agent_template.py,sha256=SpOAjweF1qOYX17X0KHwX30Phcn3TjJmlcbgI2wbQLY,1511
27
- phenoml/agent/types/agent_template_provider.py,sha256=Q7u5HIBC5bZDNCG-O6gW6K7fMBN75H30VcwfvvWMyHA,363
28
- phenoml/agent/types/agent_template_provider_item.py,sha256=Z5aWhtBHRx3j0tm3Uv2G6rhivcby30xXjN-AT1VTs-s,199
29
- phenoml/agent/types/agent_update_request_provider.py,sha256=CD0avY-FxUOzRqWAfCmpFYu-SxxRGHhgA_UGvz_7sGs,384
30
- phenoml/agent/types/agent_update_request_provider_item.py,sha256=YDWH6_XvAPGAaxnWZtaIk5BGD6yRW0s7M8GK7eLKA8I,210
31
- phenoml/agent/types/chat_fhir_client_config.py,sha256=lsfY3hZbe7QSEVMtU6AKOB2-8F-f2bLjTe8bPM-mJ5o,892
27
+ phenoml/agent/types/agent_template.py,sha256=0hJSVS1hsn2JNiaJNxrgWfTJQCRiLGKd4TPLI0n2yOU,1561
28
+ phenoml/agent/types/agent_template_provider.py,sha256=GSTBqYxeng63IArMCABsTAp__aWd282MMqCcglV6DAw,140
29
+ phenoml/agent/types/chat_message_template.py,sha256=CV0ZB8LjhtK8J9mNBvSuY0dp3tYrrK-o1RSQIETSXTc,1737
30
+ phenoml/agent/types/chat_session_template.py,sha256=7mdd4KgknpEwRbqSuzQhRcmk-8PAdKPZKJb4eOKe110,1567
32
31
  phenoml/agent/types/json_patch.py,sha256=pRf6g-LPfIpIfxhcFaVN7PyZ0eJ33fzTOyeMEGuw_18,178
33
32
  phenoml/agent/types/json_patch_operation.py,sha256=c7AZWK78bqER3tKg_vnxXIY1Kn5YJNk_dEylc9EaWWQ,1200
34
33
  phenoml/agent/types/json_patch_operation_op.py,sha256=mFp29lZK5-CnHFfVy1KnDjJ0wGqLHXY-80d_whSuueI,196
@@ -48,7 +47,7 @@ phenoml/authtoken/raw_client.py,sha256=85R3SJneFJ-fxGXzYOz_Se01pJ9bKXDTB_BP903PL
48
47
  phenoml/authtoken/types/__init__.py,sha256=ruKn1OfqKNJmeB1h39vh7-8srePTRpWsqGQzCH9_vok,260
49
48
  phenoml/authtoken/types/bad_request_error_body.py,sha256=9D69GH2JTNatHxwC7fDlFhTmRKIJ3jRojQP3MwmJ1KI,672
50
49
  phenoml/authtoken/types/unauthorized_error_body.py,sha256=fqqAo2_kWj0nNwLjm1fd-2lQPu5QhPuJP0yB7yE8sRw,674
51
- phenoml/client.py,sha256=xozoVP-oxG--8_RDg0yRoC2NO91BdEnCmFO_oj6dozo,6944
50
+ phenoml/client.py,sha256=hNR2MyQBKBc0c7u669OtiCsZVrCNfBGbMQcXD22oQhA,7391
52
51
  phenoml/cohort/__init__.py,sha256=T7swsjx17aidvorMPqyak0JeX13MT4itAEQvNHNOxuE,320
53
52
  phenoml/cohort/client.py,sha256=4bA8cffE6EvLZVMveJ2_aGu90vtXUHYTfO0E9EQuN9U,3312
54
53
  phenoml/cohort/errors/__init__.py,sha256=su56D86txLO0suHwq_Yixg4EaMbSyaB00cma1beOFGE,312
@@ -86,7 +85,7 @@ phenoml/construe/types/unauthorized_error_body.py,sha256=j7msnWr6ENYKxLVrfi2ZTg4
86
85
  phenoml/construe/types/upload_request_format.py,sha256=5mJhMM7R7hn6gGQNDJT9lxPDsRpUkRzqNxtRU0Nnlls,158
87
86
  phenoml/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
88
87
  phenoml/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
89
- phenoml/core/client_wrapper.py,sha256=SiyAwxzChVTIZltOk5ZSL4QdyzvG80dLKv2mfJgi-JA,2641
88
+ phenoml/core/client_wrapper.py,sha256=Mc5XySoWMeUXWQfmYTmFzZ7JWE1wMqRIxs43KHP7GBo,2641
90
89
  phenoml/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
91
90
  phenoml/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
92
91
  phenoml/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -99,6 +98,50 @@ phenoml/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd86
99
98
  phenoml/core/request_options.py,sha256=h0QUNCFVdCW_7GclVySCAY2w4NhtXVBUCmHgmzaxpcg,1681
100
99
  phenoml/core/serialization.py,sha256=ECL3bvv_0i7U4uvPidZCNel--MUbA0iq0aGcNKi3kws,9818
101
100
  phenoml/environment.py,sha256=x2TB5u9AblwVCke6_38YZmVhcjjHLE5gXBo5TMeaeO8,164
101
+ phenoml/fhir/__init__.py,sha256=CGOe2OSGyiryHY66fcRyZXsSMHiM5Y_GkTNPUqzwTP8,910
102
+ phenoml/fhir/client.py,sha256=qZocq0n_cutgHMU3whdqaT1nB3LgjuN4Xr1VAVB32k4,34527
103
+ phenoml/fhir/errors/__init__.py,sha256=1K_bceYvXUdWyvhH-WRwOEcc1gkiT_K6kGrs3VKg3PA,372
104
+ phenoml/fhir/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
105
+ phenoml/fhir/errors/internal_server_error.py,sha256=biBHJfSP1_zWF5CJgxY4B8wrL1uC18RSccQ-BCKmYNs,343
106
+ phenoml/fhir/errors/not_found_error.py,sha256=hQ1KdyGQJCBQqo6iLu2-szlKJdzaoV5odq_7kdXAEbc,337
107
+ phenoml/fhir/errors/unauthorized_error.py,sha256=h8T6QhXuTo0GLL9MKfIM5p--wDqlB1-ZkMp3lY-aM3E,341
108
+ phenoml/fhir/raw_client.py,sha256=T2yO55UzMc2hyTPsp_2PgXQ_hyURSjA3DQhjZMQs9uY,60044
109
+ phenoml/fhir/types/__init__.py,sha256=J9Gj1h5TZ5mNjBYE-Vn2bVPR3VCRwRIf1BrS5DHQrV4,1054
110
+ phenoml/fhir/types/error_response.py,sha256=Vw1veSbj51ki93gmYml3fRjB6XAEwvnkcYkSNhyLDeU,897
111
+ phenoml/fhir/types/fhir_bundle.py,sha256=p_CsuL2U1q7Qzmkdu6vCBtNZLznWmHXw5WtMzDnstdE,1373
112
+ phenoml/fhir/types/fhir_bundle_entry_item.py,sha256=FA5C1viHSkBmvJEP7ASv-IXqrKeZB6rEwB8m1CZOG_0,1157
113
+ phenoml/fhir/types/fhir_bundle_entry_item_request.py,sha256=rYw9vXf8C0h6KVR_OivNDhILZ-pF2wSTYpnNyMrqIL4,781
114
+ phenoml/fhir/types/fhir_bundle_entry_item_request_method.py,sha256=Hi7sa873FIofanOQkqXHnb2rJ4HTApZ4JBqqNV_yzPM,197
115
+ phenoml/fhir/types/fhir_bundle_entry_item_response.py,sha256=6YwD_9moflsY-aRBgYN540Uevsu2xJP-Jy_lQFoKsE4,684
116
+ phenoml/fhir/types/fhir_patch_request_body_item.py,sha256=R0sHS8VRbOcGLm_K8eWpXCG4J0BDEarGxFU5o23zZjI,1117
117
+ phenoml/fhir/types/fhir_patch_request_body_item_op.py,sha256=qOU6uYuWoscQ876W58aUvIQKbqnMotzl3siEyeWU0vI,208
118
+ phenoml/fhir/types/fhir_resource.py,sha256=kZxeWoOMiGqwfwdxgdWg3NUjFFTuVKCAv6Ty80myhuI,1223
119
+ phenoml/fhir/types/fhir_resource_meta.py,sha256=9nXzZ7V7u0x9ehDyjoydmVl7leXzzvIOzxSQJSYmHbk,934
120
+ phenoml/fhir/types/fhir_search_response.py,sha256=rUuRN_iECtOyETTKGx4WNBinrvC0XU4ivsPipI6OyHw,217
121
+ phenoml/fhir_provider/__init__.py,sha256=UPXzyoYkXqIrbgkMnx8lDFN4n9H1InYHcwNQ6s8Qm8M,1120
122
+ phenoml/fhir_provider/client.py,sha256=5alBWSZ6gpsIvPQXLjSeE_hzlle-h2NFWGr-DbLOazs,22040
123
+ phenoml/fhir_provider/errors/__init__.py,sha256=Wnvf4XPELmAIZ-jVxx2t-dBNZ-X9PcDxPSL5EHqJr1Q,434
124
+ phenoml/fhir_provider/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
125
+ phenoml/fhir_provider/errors/forbidden_error.py,sha256=ek8-sffTy9gY3F0zyaSkcskDVvq9puXP_YvvB2BJYbA,338
126
+ phenoml/fhir_provider/errors/internal_server_error.py,sha256=biBHJfSP1_zWF5CJgxY4B8wrL1uC18RSccQ-BCKmYNs,343
127
+ phenoml/fhir_provider/errors/not_found_error.py,sha256=hQ1KdyGQJCBQqo6iLu2-szlKJdzaoV5odq_7kdXAEbc,337
128
+ phenoml/fhir_provider/errors/unauthorized_error.py,sha256=h8T6QhXuTo0GLL9MKfIM5p--wDqlB1-ZkMp3lY-aM3E,341
129
+ phenoml/fhir_provider/raw_client.py,sha256=qZt8eVc0oZk-u4AFbxGhZ_sBy-DnvOyAieIfSLJgDcU,58883
130
+ phenoml/fhir_provider/types/__init__.py,sha256=rigqiWwEfwDhPPX3i42fjHWn4lzT2jlKaToSMGG44zs,1321
131
+ phenoml/fhir_provider/types/auth_method.py,sha256=5ToMMmvGIssVlUezB7EsRsPyVaezZHdpoW3piKoPrCw,209
132
+ phenoml/fhir_provider/types/fhir_provider_auth_config.py,sha256=-SGF8RiYF7tdttGCmagmZsO5OxL-Gz0sXV8OaYow9SA,1651
133
+ phenoml/fhir_provider/types/fhir_provider_delete_response.py,sha256=mye_IDz2hAw7BxuzeRjkPjuFAeeEsdFk0RQrSP4ZzjM,603
134
+ phenoml/fhir_provider/types/fhir_provider_list_response.py,sha256=ZoJMAhVgFAONuY0rt7glykjdWOskoSxi6_8JXVEf1_I,736
135
+ phenoml/fhir_provider/types/fhir_provider_remove_auth_config_response.py,sha256=iZcKAKcqjmxzNj3cmUhT0GdQAEfTVTeLcyoN-sAX1-E,725
136
+ phenoml/fhir_provider/types/fhir_provider_response.py,sha256=gvhGBHxrpo0GtNKYZAQGEllRvBOOTvl5EkeDzCOKAjc,709
137
+ phenoml/fhir_provider/types/fhir_provider_set_active_auth_config_response.py,sha256=2_CPZsJef245S4kETwiDXwYygGP5Lnr7I6qQV4wilU8,728
138
+ phenoml/fhir_provider/types/fhir_provider_template.py,sha256=4X86rNs_RhVFLL3-bWzjUIVepnJbluHrjuWRKSLIcq0,1852
139
+ phenoml/fhir_provider/types/fhir_query_response.py,sha256=fOy_oCRexu2iZgDWW6sRIRZm7PtNetsDzc4F2lsM-Pw,842
140
+ phenoml/fhir_provider/types/fhir_query_response_data.py,sha256=TfQ94GSU7NUfkxpy1VNFwOoUmFn4OxZxqFVkQDADsMk,169
141
+ phenoml/fhir_provider/types/json_web_key.py,sha256=ouUPhdvlASdBSJyazqecjQ64A9V9aqvtSt1wt2K3MLg,1615
142
+ phenoml/fhir_provider/types/provider.py,sha256=AmGOmoy5Cv9W0km4rAf3mxqH3g3UUnj_xC4FopPMdAk,238
143
+ phenoml/fhir_provider/types/service_account_key.py,sha256=uup1Xl0HSc_B3278i0CS-ygCroShLS5_q0KtqXI96HY,1085
144
+ phenoml/fhir_provider/types/smart_configuration.py,sha256=bG_J1yNFEWWo9kjxF0s2Ik9rXehB1JHcQ2fTn6dht6k,1174
102
145
  phenoml/lang2fhir/__init__.py,sha256=R8VOE03BLTk90GJVBfpiUXHeODUNX3rZLkRIC21s1ow,694
103
146
  phenoml/lang2fhir/client.py,sha256=4OA_WMG1TYI-PVdp_mKgFOV85loY9Mu1p2e9q1L8T0o,12708
104
147
  phenoml/lang2fhir/errors/__init__.py,sha256=nIzg981R3USgSar0WuuVrpDVg-H5vIp2AceEzbhphGw,458
@@ -116,28 +159,35 @@ phenoml/lang2fhir/types/fhir_resource.py,sha256=EprHErQgwP_MkaCrul94OhkOWQcbvUjM
116
159
  phenoml/lang2fhir/types/lang2fhir_upload_profile_response.py,sha256=X41WiVztePQtZOcNRzNsder-h3rQTj94Y622HQ1izP8,721
117
160
  phenoml/lang2fhir/types/search_response.py,sha256=xM3jNTIl7XuxzCfvaYCzXiBryGXT4siH9UVCpbo0UgI,1019
118
161
  phenoml/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
- phenoml/tools/__init__.py,sha256=HIkkqraoENtM3jPmUAk9DHUWLVeLpXYaDKCaOLiWI_g,920
120
- phenoml/tools/client.py,sha256=4jAEDubzIK-upVZhNV4FFadiWHZbpKN5EembQ8CtqYA,12279
162
+ phenoml/tools/__init__.py,sha256=tWbUCa1RVpte1Ov53WgLExOXvGT72Mol2JM1Ul3nj3M,989
163
+ phenoml/tools/client.py,sha256=bEyLqb871q0juD2KmTstnIb4x4LpmCv-72-rqpEC_kg,11571
121
164
  phenoml/tools/errors/__init__.py,sha256=nIzg981R3USgSar0WuuVrpDVg-H5vIp2AceEzbhphGw,458
122
165
  phenoml/tools/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
123
166
  phenoml/tools/errors/failed_dependency_error.py,sha256=eXiqG062inkUF7fs2Newhx9uAKReK6fosz29PMD4gVw,345
124
167
  phenoml/tools/errors/forbidden_error.py,sha256=ek8-sffTy9gY3F0zyaSkcskDVvq9puXP_YvvB2BJYbA,338
125
168
  phenoml/tools/errors/internal_server_error.py,sha256=biBHJfSP1_zWF5CJgxY4B8wrL1uC18RSccQ-BCKmYNs,343
126
169
  phenoml/tools/errors/unauthorized_error.py,sha256=h8T6QhXuTo0GLL9MKfIM5p--wDqlB1-ZkMp3lY-aM3E,341
127
- phenoml/tools/raw_client.py,sha256=fr637spDlS-MhYUmEydtZ_f0toI4VADL9K7vwtkNS-w,30007
128
- phenoml/tools/types/__init__.py,sha256=IXQaHvcZ-frG2pBHfp84DdoeMzHUHi8bKT0VreLetf0,976
129
- phenoml/tools/types/cohort_request_provider.py,sha256=m-Xln8ZuKKyRZuJ_mb_74BgtD9nagtxIXtCqOLZVwn0,195
170
+ phenoml/tools/mcp_server/__init__.py,sha256=4RRTSH2KQdNJmQqxPc7Dty_8lvfWGkpz6rW7BLviE4c,126
171
+ phenoml/tools/mcp_server/client.py,sha256=ijvB2lcBTwbh592VnLyZqv69BlCidFG4V-6yS6Z4UdI,8883
172
+ phenoml/tools/mcp_server/raw_client.py,sha256=AVnepraHeEuI4zl1eBeHC3_-mkc7zfEIeYcCfSI6Q6k,25337
173
+ phenoml/tools/mcp_server/tools/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
174
+ phenoml/tools/mcp_server/tools/client.py,sha256=iu-AclviqNB9NWfkS_h7LY9exfzPGmAjOG3MIbQgtuk,9807
175
+ phenoml/tools/mcp_server/tools/raw_client.py,sha256=FC_OQZ526AGrN1lAnYLvtr-s8NrHfcKUpxM_YLKZgos,26380
176
+ phenoml/tools/raw_client.py,sha256=7ElVS3AkkDZM38zMVsTQAQC3jgXXMBLw4Kkfeage8Go,28092
177
+ phenoml/tools/types/__init__.py,sha256=Q9a9RbiUDz9jFLZi_43I40t8ZZuolzaDtluYJWV8yN8,1021
130
178
  phenoml/tools/types/cohort_response.py,sha256=Nft1eLyFhNrKDNYOhQxzSH1o35JS7UdZlTgI9ndjdVM,1503
131
- phenoml/tools/types/fhir_client_config.py,sha256=npuwI3AJd0wljagTyxqiwt8g-sQccYF_Sg1k9pGxhEI,976
132
- phenoml/tools/types/lang2fhir_and_create_request_provider.py,sha256=KRPZWGujbzshxwjTJGxQLAbwfragPg2ffTvfPWpIw58,213
133
179
  phenoml/tools/types/lang2fhir_and_create_request_resource.py,sha256=mIBUXOfKrweiYsCu-vxboK_uDu43GQUEdKWlVLHMOyU,608
134
180
  phenoml/tools/types/lang2fhir_and_create_response.py,sha256=jyEYZ_A3JSgVz0dwmlvbzKVMhj4C4SbmeOWbtVDV9uo,971
135
- phenoml/tools/types/lang2fhir_and_search_request_provider.py,sha256=Xrv-AzJgvLqXlcoNgYaiYr9fUqbyIsFmB0U2pIapBWQ,213
136
181
  phenoml/tools/types/lang2fhir_and_search_response.py,sha256=RaJ5zd-D1yFxRyINjksvcefGc81RfIFw_5WmhE4T7HQ,1146
182
+ phenoml/tools/types/mcp_server_response.py,sha256=aNG9ifrDZCJcfsBh3hPtQBS6QGNk_XdNhovttYv6j6E,923
183
+ phenoml/tools/types/mcp_server_response_data.py,sha256=BRHrH4sVp4kkxRFb_HLsy3UJvKdI2A0k3ZfaJII05fk,1244
184
+ phenoml/tools/types/mcp_server_tool_call_response.py,sha256=jGiPdxbzn4gQb8sZhvPcezTTiRbz8qPkHQ8L4O47Fjw,1037
185
+ phenoml/tools/types/mcp_server_tool_response.py,sha256=lDIyzSX5XHVumIWxVFhNFyY08TBtRM0v8HlkEEaMjW4,950
186
+ phenoml/tools/types/mcp_server_tool_response_data.py,sha256=mGFHazpGukicAkB3sBpmLIOehA812gtP6LTVaHW4v3g,1585
137
187
  phenoml/tools/types/search_concept.py,sha256=Y_Hbx6NOdk1m83jTMxeUBy-e5h8jt0tUjvi92J34zRE,1104
138
188
  phenoml/version.py,sha256=5HhaEGv3OL_Nw9_mC28UFdsvpQrZpjr14na7Pmw8pFY,74
139
189
  phenoml/wrapper_client.py,sha256=JYTdhXgju4tOsata06wQY_ZbMsuMj3qaxkgvDzpY068,5022
140
- phenoml-0.0.1.dist-info/LICENSE,sha256=Am1fNNveR2gcmOloSWQTsnUw2SQEF8HtowFqIvlagfk,1064
141
- phenoml-0.0.1.dist-info/METADATA,sha256=nooNV10074rZDv3psRGjiriuGFeYPeEtMUBuZtTIhbE,5330
142
- phenoml-0.0.1.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
143
- phenoml-0.0.1.dist-info/RECORD,,
190
+ phenoml-0.0.5.dist-info/LICENSE,sha256=Am1fNNveR2gcmOloSWQTsnUw2SQEF8HtowFqIvlagfk,1064
191
+ phenoml-0.0.5.dist-info/METADATA,sha256=ZNj5MIzoqdCnvngVK3BkhaESggWaZ85eK4eM_hBzQy8,5330
192
+ phenoml-0.0.5.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
193
+ phenoml-0.0.5.dist-info/RECORD,,