Skip to main content

chunk_your_tools/
lib.rs

1//! Tool schema decomposition and recomposition for MCP tool definitions.
2#![allow(
3    clippy::pub_use,
4    clippy::module_name_repetitions,
5    clippy::multiple_crate_versions
6)]
7
8pub mod build;
9pub mod catalog_builder;
10pub mod catalog_io;
11pub mod json_util;
12pub mod paths;
13pub mod policies;
14pub mod retrieve;
15pub mod runtime_config;
16pub mod survivors;
17pub mod tiktoken;
18pub mod tool_entries;
19
20#[cfg(feature = "python")]
21pub mod python;
22
23#[cfg(feature = "node")]
24pub mod node;
25
26#[cfg(feature = "ffi")]
27pub mod bindings;
28
29#[cfg(feature = "ffi")]
30pub mod ffi;
31
32pub use build::{
33    CatalogIndex, build_catalog_index, catalog_tool_count, decompose_tool_schema, dedupe_enums,
34    tool_schema_metadata_from_files,
35};
36pub use catalog_builder::CatalogBuilder;
37pub use catalog_io::write_catalog_index;
38pub use paths::{
39    PathConfig, collect_enums, configure as configure_paths, get_root_tool_key,
40    is_catalog_decomposed_path, snapshot as path_snapshot, to_decomposed_key,
41    tool_id_from_decomposed_rel,
42};
43pub use policies::{
44    PolicyContext, ToolPolicy, anthropic_tool_is_mcp, anthropic_tool_is_system,
45    append_description_reinstate_entries, apply_per_tool_overrides, batch_tool_pass_through,
46    catalog_needs_partition, catalog_needs_pruned_recompose, chunk_tool_id,
47    direct_root_optional_chunks_for_tool, drop_recomposed_tools_with_empty_properties,
48    effective_policy, entries_for_policy, filter_recompose_json_entries, full_pass_through,
49    is_decomposed_optional_property_chunk, is_decomposed_tool_root_chunk, is_description_policy,
50    is_direct_root_optional_property_chunk, is_mcp_optional_chunk, is_mcp_root_chunk,
51    is_non_system_chunk, is_non_system_tool_id, is_system_chunk, is_system_optional_chunk,
52    is_system_root_chunk, is_system_tool_id, merge_catalog, merge_tools_preserving_order,
53    mitigate_empty_optional_properties, needs_description_reinstate,
54    needs_empty_optional_mitigation, needs_partition, needs_pruned_recompose,
55    optional_chunks_for_tool, optional_leaf_survived_rerank, parse_tool_policy,
56    parse_tool_policy_pair, partition_catalog, per_tool_policies_from_value,
57    policy_context_from_values, request_pass_through, restore_mcp_tools, restore_system_tools,
58    root_chunk_properties_empty, root_tool_id_from_chunk, scoring_policy, split_anthropic_tools,
59    stash_mcp_tools, stash_system_tools, system_required_enum_values, system_tools_pass_through,
60    tool_id_had_empty_original_root_properties, tool_id_has_empty_decomposed_root,
61    tool_pass_through, tools_for_catalog, uses_pruned_recompose,
62};
63pub use retrieve::{
64    DecomposedCatalog, ProcessGroupsOptions, RemovedChunksOptions, RetrieveOptions,
65    apply_description_reinstate_to_data, build_process_groups_options, chunk_survivor_key,
66    climb_and_merge, deep_merge, extract_input_files, extract_scores, filter_and_sort_enums,
67    group_files, load_catalog_from_dir, parse_json_input, process_groups, removed_chunks,
68    resolve_build_catalog, retrieve_core, retrieve_tools_from_catalog,
69};
70pub use runtime_config::{
71    RuntimeConfig, configure as configure_runtime, decomposed_score, default_mcp_policy,
72    default_system_policy, empty_optional_fallback_k, enum_score, rerank_score,
73    snapshot as runtime_snapshot,
74};
75pub use survivors::{NamedSurvivors, recompose_tools_from_names, resolve_survivors_from_names};
76pub use tiktoken::{
77    configure as configure_tiktoken, count_json_tokens, count_tokens, count_tokens_or_min,
78    snapshot as tiktoken_snapshot,
79};
80pub use tool_entries::{
81    anthropic_tool_to_catalog_entry, anthropic_tools_to_catalog_entries, build_catalog_from_tools,
82    is_catalog_tool_entry, normalize_tools_for_catalog, prepare_tool_entry, truncate_description,
83};