AI Providers
OpenAI, Anthropic, Gemini, Bedrock, Mistral, Cohere, and other AI-provider toolsets.
#AI providers
LLMs, multi-modal models, transcription, image generation, and search APIs commonly used by agents.
#Agent-ready behavior (overview)
Across this group, only the list / discovery tools were touched for agent ergonomics; chat / completion / embedding / image / TTS tools are unchanged (they already return content, not lists). For each listing tool you get:
- A compact summary array with a response-local display ref (
model_ref,file_ref,batch_ref,job_ref,store_ref,voice_ref,prediction_ref,deployment_ref,transcript_ref,project_ref,dataset_ref,kb_ref) safe to show in final answers. - Raw provider IDs are hidden by default. Pass
include_ids=Trueonly when a follow-up tool needs them. - Default page size is 20-25 for resource lists (10 for AssemblyAI transcripts and Bedrock knowledge bases). Search APIs (Tavily, Brave, SerpAPI) cap
max_results/count/numat 10.
Write tools that take an identifier (get_file, delete_file, create_batch, get_batch, cancel_batch, delete_response, get_vector_store, delete_vector_store, cancel_fine_tuning_job, create_fine_tuning_job, get_prediction, cancel_prediction, get_transcript, delete_transcript, lemur_task) accept the dict returned by the corresponding list / get tool as well as a raw ID string.
For chat-style models, list_models always keeps the model name as model_name because callers need it to invoke the model -- only internal handles (file/batch/job/store/etc.) are hidden.
#OpenAIToolSet
from maivn_tools import OpenAIToolSet
connector = OpenAIToolSet(api_key=secrets["OPENAI_API_KEY"])Tools: chat_completion, responses_create, get_response, delete_response (destructive), create_embedding, list_models, get_model, delete_fine_tuned_model (destructive), generate_image, speech, list_files, get_file, delete_file (destructive), create_batch, list_batches, get_batch, cancel_batch (destructive), moderate, create_fine_tuning_job, list_fine_tuning_jobs, cancel_fine_tuning_job (destructive), create_vector_store, list_vector_stores, get_vector_store, delete_vector_store (destructive).
Agent-ready behavior
list_models(default limit 20): summary withmodel_ref,model_name,owned_by,created. Setinclude_ids=Truefor rawid.list_files(default limit 20): summary withfile_ref,filename,purpose,bytes,created_at,status. Rawfile-...IDs hidden; opt in withinclude_ids=True(needed fordelete_file,create_batch,create_fine_tuning_job).list_batches(default limit 20): summary withbatch_ref,endpoint,status,request_counts,created_at. Opt in for rawbatch_id.list_fine_tuning_jobs(default limit 20): summary withjob_ref,model,fine_tuned_model,status,created_at. Opt in for rawjob_id.list_vector_stores(default limit 20): summary withstore_ref,name,file_counts,status,created_at. Opt in for rawstore_id.- Tolerant inputs:
get_file,delete_file,create_batch,get_batch,cancel_batch,get_vector_store,delete_vector_store,cancel_fine_tuning_job, andcreate_fine_tuning_jobaccept the raw ID, the file/batch/job dict returned by the matching list tool, or the full{"data": [...]}list payload. - Destructive:
delete_response,delete_fine_tuned_model,delete_file,cancel_batch,cancel_fine_tuning_job,delete_vector_store. Confirm with the user before invoking.
files = connector.list_files() # compact summaries
files = connector.list_files(include_ids=True) # also include file_id
connector.delete_file(files["files"][0]) # accepts the dict#AnthropicToolSet
from maivn_tools import AnthropicToolSet
connector = AnthropicToolSet(api_key=secrets["ANTHROPIC_API_KEY"])Tools: create_message, count_tokens, list_models, get_model, create_message_batch, get_batch, cancel_batch (destructive).
Agent-ready behavior
list_models(default limit 20): summary withmodel_ref,model_name,display_name,created_at.model_nameis kept because it is also the model identifier callers pass tocreate_message. Setinclude_ids=Trueto also include the rawid.get_batchandcancel_batchaccept a rawmsgbatch_...string or a batch dict returned bycreate_message_batch/get_batch.- Destructive:
cancel_batch. Confirm before invoking.
models = connector.list_models()
batch = connector.create_message_batch(requests=[...])
connector.get_batch(batch) # dict accepted#AzureOpenAIToolSet
from maivn_tools import AzureOpenAIToolSet
connector = AzureOpenAIToolSet(
endpoint="https://my-rsrc.openai.azure.com",
api_key=secrets["AZURE_OPENAI_KEY"],
api_version="2024-08-01-preview",
)Tools: chat_completion(deployment, ...), embeddings(deployment, ...), generate_image(deployment, ...), list_models.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name,capabilities,lifecycle_status.model_nameis kept because it is the deployment identifier callers pass tochat_completion/embeddings/generate_image. Setinclude_ids=Truefor the rawid.
#GeminiToolSet
Google AI Studio / Generative Language API.
from maivn_tools import GeminiToolSet
connector = GeminiToolSet(api_key=secrets["GEMINI_API_KEY"])Tools: generate_content, count_tokens, embed_content, list_models, get_model.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name,display_name,supported_methods,input_token_limit,output_token_limit.model_nameis the"models/..."resource name callers pass togenerate_content. Setinclude_ids=Truefor the rawname.
#BedrockToolSet
AWS Bedrock Runtime + control plane. Pass a SigV4 AuthStrategy.
from maivn_tools import BedrockToolSet
connector = BedrockToolSet(region="us-east-1", auth=sigv4_auth)Tools: list_foundation_models, converse, invoke_model, list_knowledge_bases, retrieve.
Agent-ready behavior
list_foundation_models(default limit 25): summary withmodel_ref,model_name,provider,input_modalities,output_modalities,model_lifecycle.model_nameis themodelIdcallers pass toconverse/invoke_model. Setinclude_ids=Truefor the rawmodel_arn.list_knowledge_bases(default limit 10): summary withkb_ref,knowledge_base_id(kept because callers need it forretrieve),name,description,status,updated_at. Setinclude_ids=Truefor the rawknowledge_base_arn.
#MistralToolSet
from maivn_tools import MistralToolSet
connector = MistralToolSet(api_key=secrets["MISTRAL_API_KEY"])Tools: chat_completion, embeddings, fim_completion, list_models.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name,owned_by,created.model_nameis kept because it is also the identifier callers pass tochat_completion. Setinclude_ids=Truefor the rawid.
#CohereToolSet
from maivn_tools import CohereToolSet
connector = CohereToolSet(api_key=secrets["COHERE_API_KEY"])Tools: chat, embed, rerank, list_models.
Agent-ready behavior
list_models(default limit 20): summary withmodel_ref,model_name,endpoints,context_length.model_nameis the identifier callers pass tochat/embed. Setinclude_ids=Truefor the rawname.
#HuggingFaceToolSet
from maivn_tools import HuggingFaceToolSet
connector = HuggingFaceToolSet(token=secrets["HF_TOKEN"])Tools: list_models, get_model, list_datasets, run_inference, whoami.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name(the"author/name"string callers pass torun_inference),pipeline_tag,downloads,likes,last_modified. Setinclude_ids=Truefor the rawid.list_datasets(default limit 25): summary withdataset_ref,dataset_name,tags,downloads,last_modified. Setinclude_ids=Truefor the rawid.
hits = connector.list_models(search="bert", max_results=10)#ReplicateToolSet
from maivn_tools import ReplicateToolSet
connector = ReplicateToolSet(api_token=secrets["REPLICATE_TOKEN"])Tools: list_models, get_model, create_prediction, get_prediction, cancel_prediction (destructive), list_predictions, list_deployments, predict_deployment.
Agent-ready behavior
list_models(default limit 25): summary withmodel_ref,model_name("owner/name"),owner,name,description,run_count,visibility. Setinclude_ids=Trueto surfacelatest_version_id(needed for pinned-versioncreate_prediction).list_predictions(default limit 25): summary withprediction_ref,version,status,created_at,completed_at. Raw prediction IDs hidden; opt in withinclude_ids=True(needed forget_prediction/cancel_prediction).list_deployments(default limit 25): summary withdeployment_ref,owner,name,deployment_path,current_release_version. Opt in for the rawid.- Tolerant inputs:
get_predictionandcancel_predictionaccept a raw prediction ID, a prediction dict returned bycreate_prediction/list_predictions, or the{"results": [...]}list payload. - Destructive:
cancel_prediction. Confirm before invoking.
#StabilityToolSet
from maivn_tools import StabilityToolSet
connector = StabilityToolSet(api_key=secrets["STABILITY_KEY"])Tools: get_account, get_balance, generate_image, upscale, edit_inpaint.
Agent-ready behavior
- No list tools; the only read tools (
get_account,get_balance) return small scalar responses already useful as-is.
#ElevenLabsToolSet
from maivn_tools import ElevenLabsToolSet
connector = ElevenLabsToolSet(api_key=secrets["ELEVENLABS_KEY"])Tools: text_to_speech, speech_to_text, list_voices, get_voice, list_models, get_user.
Agent-ready behavior
list_voices(default limit 25): summary withvoice_ref,name,voice_id(kept because callers need it fortext_to_speech/get_voice),category,labels,description. Setinclude_ids=Truefor a redundantidfield.list_models(default limit 25): summary withmodel_ref,model_name,name,languages,can_do_text_to_speech,can_use_style. Setinclude_ids=Truefor the rawmodel_id.
#DeepgramToolSet
from maivn_tools import DeepgramToolSet
connector = DeepgramToolSet(api_key=secrets["DEEPGRAM_KEY"])Tools: transcribe_url, transcribe_bytes, speak, list_projects.
Agent-ready behavior
list_projects(default limit 25): summary withproject_ref,name,company. Rawproject_idis hidden by default; opt in withinclude_ids=Truewhen a follow-up Deepgram tool needs the raw ID.
#AssemblyAIToolSet
from maivn_tools import AssemblyAIToolSet
connector = AssemblyAIToolSet(api_key=secrets["ASSEMBLYAI_KEY"])Tools: upload, submit_transcript, get_transcript, list_transcripts, delete_transcript (destructive), lemur_task.
Agent-ready behavior
list_transcripts(default limit 10): summary withtranscript_ref,status,audio_url,created,completed. Raw transcript IDs hidden; opt in withinclude_ids=True(needed forget_transcript,delete_transcript,lemur_task).- Tolerant inputs:
get_transcript,delete_transcript, andlemur_taskaccept a raw transcript ID, a transcript dict, or the{"transcripts": [...]}list payload.lemur_taskaccepts a list of any of the above. - Destructive:
delete_transcript. Confirm before invoking.
recent = connector.list_transcripts(include_ids=True)
connector.delete_transcript(recent["transcripts"][0])#TavilyToolSet
from maivn_tools import TavilyToolSet
connector = TavilyToolSet(api_key=secrets["TAVILY_KEY"])Tools: search, extract, crawl.
Agent-ready behavior
searchis a search API, not a list tool: it returns the raw Tavily response (results[*]withtitle,url,content) which is already agent-friendly.max_resultsis capped at 10 (the actual cap is reported back on the response when the requested value exceeded the cap).
#BraveSearchToolSet / SerpAPIToolSet
Two web-search providers with similar surfaces:
from maivn_tools import BraveSearchToolSet, SerpAPIToolSet
brave = BraveSearchToolSet(api_key=secrets["BRAVE_KEY"])
serp = SerpAPIToolSet(api_key=secrets["SERPAPI_KEY"])Each exposes web_search. Brave also has news_search, image_search, video_search and adds suggest. SerpAPI adds location_search and get_account.
The Bing Web Search API was retired by Microsoft on 2025-08-11 and is no longer available; the connector was removed. Use Brave/SerpAPI, or Grounding with Bing Search in the Azure AI Agents Service.
Agent-ready behavior
- All search tools return raw provider responses (Brave
web.results[*], SerpAPIorganic_results[*]) -- the per-hit fields (title/name,url/link,snippet/description/content) are already human-readable, so they are kept. count(Brave) andnum(SerpAPI) cap results to keep agent runs fast; values above each provider's max are clamped.